Before Rails와 Post Rails 시대의 비교
발표자는 자신의 경험을 바탕으로 ‘Before Rails’ 시대와 ‘Post Rails’ 시대의 특징을 명확히 구분합니다. 자신을 ‘Before Rails’ 시대의 사람으로, 동료 우라시마 씨를 ‘Post Rails’ 시대의 사람으로 정의하며 두 시대의 차이점을 설명합니다.
Before Rails 시대의 특징
-
주요 애플리케이션: TDiary, Kagemae 등 일본산 소프트웨어가 주를 이뤘습니다.
-
코드 호스팅: SourceForge, RubyForge와 같은 플랫폼을 주로 사용했습니다.
-
라이브러리 설치: RAA(Ruby Application Archive)에서 다운로드하여
ruby setup.rb install방식을 사용했습니다. -
프로그래밍 스타일: C 언어와 유사한 명령형 스타일(예:
for루프,+=연산)이 흔했습니다.
Post Rails 시대의 특징
-
주요 프레임워크/라이브러리: Rails 외에도 Padrino, Sinatra, MongoDB, Sidekiq 등 로고가 멋진 최신 기술들이 등장했습니다.
-
코드 호스팅: 모든 프로젝트가 GitHub를 중심으로 이루어집니다.
-
프로그래밍 스타일:
- 이터레이터:
inject(합계 계산),map(배열 생성),detect/find,select/find_all등 Enumerable 모듈의 다양한 메서드를 활용합니다. - 데이터 구조: Hash와 Symbol의 적극적인 사용이 두드러집니다. Symbol은 객체 생성 오버헤드를 줄이고 타입 수가 적다는 장점으로 인해 널리 사용됩니다.
- 메타 프로그래밍:
send,block,lambda등 메타 프로그래밍 기법이 Rails 3의 Scope 등에서 활발히 활용됩니다.
- 이터레이터:
Post Rails 시대의 학습 방법론: GitHub 중심
우라시마 씨의 학습 방식을 관찰한 결과, ‘Post Rails’ 시대의 개발자들은 GitHub를 통해 지식을 습득하고 기여합니다.
-
관찰: 업무에 필요한 Gem이나 라이브러리를 GitHub에서 검색하고, 폴더 구조, 커밋 메시지, 커밋 히스토리를 분석하여 활발히 유지보수되는 프로젝트를 찾습니다.
-
워치(Watch): 관심 있는 프로젝트를 워치하여 변경 사항을 지속적으로 추적합니다.
-
클론 및 분석: 프로젝트를 로컬로 클론하고
bundle install,bundle open을 통해 내부 코드를 직접 분석하고 성능 평가, 메모리 누수 등을 확인합니다. -
포크 및 기여: 개선할 점을 발견하면 프로젝트를 포크하여 자신의 저장소에 변경 사항을 푸시하고, 풀 리퀘스트를 통해 원본 프로젝트에 기여합니다.
‘나 정말 대단해’ 감각의 진화
발표자는 프로그래밍을 지속하는 동력인 ‘나 정말 대단해’(俺ってすげえ感) 감각이 시대에 따라 어떻게 변화했는지 설명합니다.
-
Before Rails: 다른 사람이 만든 라이브러리를 조합하거나 TDiary 플러그인을 만들어 작은 변화를 주는 것에서 오는 개인적인 성취감이 주를 이뤘습니다.
-
Post Rails: GitHub에서 라이브러리를 포크하여 불편한 부분을 개선하고 풀 리퀘스트를 보내면, 자신의 기여가 실제 프로젝트에 반영되고 ‘Thanks’ 메시지를 받는 경험을 통해 타인과의 연결 속에서 더 큰 기쁨과 성취감을 느낍니다. 이는 개인적인 만족을 넘어 공동체적 기여로 확장되는 형태입니다.
GitHub는 Ruby 생태계의 중심 허브가 되었으며, Ruby 개발자들은 이러한 생태계 속에서 소스 코드와 커뮤니케이션을 통해 연결되어야 합니다. TDiary조차 GitHub로 이전하는 등, Git/GitHub는 이제 Ruby 개발에 있어 피할 수 없는 필수 요소가 되었습니다.