(자바 개발자가 레일스를) 재밌게 학습하는 방법
자바 개발자가 어떻게 레일스를 배워나가면 좋을까요? 정답은 없겠지만, 요 몇개월간 스터디모임과 개인적인 공부를 통해 몇가지를 새로이 배울 수 있었습니다.
가장 빠른 방법으로 접근하기
배움은 점진적으로 행하는 것이 중요하다고들 합니다. 그리고 빨리 실패하고, 그 실패로부터 배우는 지식이 '참 공부'가 된다고 하지요. 무언가 새로운 것을 배울때도 그런 원리들이 적용되는 것 같습니다. 새로운것은 낯설고, 두렵기에 '저항'이 따르게 마련이니까요. 학습곡선이 길게 늘어지면 늘어질수록, '에이 귀찮아' '생각보다 어렵잖아'같은 변명으로, '저항'을 합리화하게 됩니다. (자바 개발자를 위한) 레일스 학습에도 몇가지 지름길이 존재합니다.
- 준비물은 이미 내 손안에 - Rails Scaffold 와 도구모음들
레일스 스캐폴드는 그 자체로 가장 좋은 레일스 학습도구중 하나입니다. 자바 웹 개발은 환경 구축과 설정만 해도 크나큰 일이지요. 미약하긴 하지만 스캐폴드는 우리가 학습하려는 의도에 맞는 기본 뼈대를 자동으로 생성해줍니다. 실제 개발에서는 장점이 아닐수도 있지만, 학습하는 입장에서는 강점이지요. 간단한 동작(CRUD)가 모두 되는 애플리케이션을 직접 가지고 놀아보면서, 한 두가지를 고쳐보고, 직접 눈으로 그 결과를 확인할 수 있습니다.
- 눈보다는 손으로 - 인터랙티브 콘솔 irb
웹 개발은 결과를 비교적 빨리 확인할 수 있다지만, 문법이나 간단한 로직단위를 시험해보기에는 그것도 너무 부담스럽습니다. 테스트 코드를 작성하기도 그런, 아주 작은 코드들은? 루비에 기본적으로 제공되는 콘솔인 irb는 이에 적합한 도구입니다. 레일스 애플리케이션을 생성했다면, script/console을 사용해서 irb위에서 레일스 API들도 모두 호출해볼 수 있습니다.
- 익숙한 환경에서 시작하기 - Netbeans 와 Eclipse
제 아무리 레일스 개발이 텍스트 에디터로 할만큼 간단하다고 해도, 고급스러운 IDE를 쓰던 자바 개발자들의 눈에는 차지도 않을겁니다. 그럴때 이미 쓰던 IDE상에서 레일스를 학습해보세요. 더 친숙하고, 조금 더 편리합니다. Netbeans에는 기본적으로 Ruby , JRuby가 포함되어 있고, 레일스나 필요한 젬들도 간단한 메뉴클릭으로 설치할 수 있습니다. 자동완성? 기본이죠. 단축키 당연히 그대로죠 ^^
변화할것인가 도태될것인가?
내가 경험한 것들에 비추어, 지식을 곱하기
사실 자바 개발자들은 저마다 자부심이 대단합니다. 바로 자바라는 플랫폼이, 시장의 중심에 서있는 주류 기술이기 때문이지요. 그리고, 새로운 기술들도 자바표준을 주도하는 JCP나, 폭넓은 오픈소스 커뮤니티, 대형 벤더들의 지원으로 인해, 늦지 않게 도입이 되는 편입니다. 어쩌면 그래서 새로운 배움에 무디고 게을러지는지도 모르겠습니다. '지금 있는 것도 배우기 벅찬데, 완전히 새로운걸 배우라고??' 하지만, 분명 '새로운 것 - 다른 것'을 만나는 경험은, 지식을 곱해줍니다. 그리고 무엇보다, 이미 알고 있는 경험을 통해 '빨리' 배울 수도 있지요.
- O/RM 프레임워크의 두가지 시선 - Data Mapper vs ActiveRecord
Martin Fowler의 저작, Patterns of Enterprise Application Architecture(PEAA)를 보면, OR Mapping 프레임워크를 구현하는 두가지 방식을 다룹니다. 저도 오늘 스터디 모임에서 재밌는 표현으로 이 차이점을 다시 깨우칠 수 있었는데요. Hibernate와 같은 Data Mapper패턴은 Database를 Mapping하는 방식이고, 레일스의 Active Record가 구현한 Active Record 패턴은 Wrapping을 의도한것이라는 이야기였습니다. 데이터베이스 및 O/R Mapping이라는 골치아픈 이슈. 어디서 해결하는 것이 좋을까요? 정답은 없습니다. 하지만, 두 가지 방식을 모두 알게되는 것만으로, 우리의 시야는 한층 넓어지겠지요.
- 관례인가 설정일까- Spring , Struts vs ActionController
자바는 기본적으로 다양한 선택을 중요시합니다. '설정'을 통해 확장성을 높이자는 입장이지요. 반면에 레일스는 일단 관례를 따르면, 그에 따르는 댓가(자동화,적은 코드)를 지불해줍니다. 어느 편이 나을까요? 직접 써보기 전까지는 알 수 없습니다. 그리고 자바 프레임워크이 왜 요즈음 설정보다는 관례(Convention over Configuration) 을 점차 지향하는지의 이유도 마찬가지이구요.
- 패턴과 동적언어
자바 개발자들은 디자인 패턴등에 이미 익숙합니다. 어떻게 하면 객체지향개발을 효율적으로 활용할 지에 대한 경험이 있다는 것이지요. 하지만, 루비와 같은 동적언어에서라면? 패턴의 양상이 전혀 달라질 수 있을 것입니다. 정적인 타입(Type)때문에 감수해야했던 수많은 간접계층들이, 동적 언어에서는 불필요할 수도 있을테니까요. 그리고 자바 개발자들은, 루비의 사상이 녹아있는 레일스를 바라보면서, 새로운 관점에서 OOP 를 다시 보게 되는 기회를 접하게 될것입니다. 관련된 내용은 deepblue님의 이 포스트를 읽어보세요
무엇보다 분명한 것은, 자바 개발자들은 이런 모든 것들을 접하면서, 그들이 가진 경험속에서 지식을 곱하게 된다는 점에 있습니다. 기술의 우열을 가리는 것이 아니라, 어떤 점에서 어떤 개념이 더 나은지를 볼 수 있는 '시야'를 새로이 갖추게 되는 것이지요. 레일스의 장점을 새로운 프레임워크가 메꾼들, 레일스가 시장을 지배하게 된들, 지식이 곱해진 개발자들에게 두려운 것은 없지 않을까요? ^^
지식 곱하기 지식 곱하기 지식~~
하나보다는 여럿이서 머리를 맞대기
세번째 이야기는 가장 간단합니다. 하나보다는 둘이, 둘 보다는 셋이 더 낫다는 이야기이지요. 무엇보다 그것이,
- 혼자 하기는 부담스럽고 (학습비용이 너무 많이 들지는 않을까?)
- 경험이 많지 않으며 (나 혼자 삽질하면 어쩌지?)
- 배워두면 언젠가는 득이 될 (자기계발비용은 복리로 돌아온다 참고)
그런 것이라면 더더욱 그렇겠지요. 저도 그런 경험이 있습니다. 의례 일요일 아침시간은 늦잠 또는 전날의 숙취를 해결하는 시간으로 보내기 일수였지요. 그래서 작년 여름부터 그 시간대에 뜻이 같이 하는 다른 분들과 스터디 모임을 만들어서, 매주 일요일 오전시간을 활용하고 있지요. 물론 처음엔 귀찮고, 익숙하지 않았지요. 하지만, 매주 하다보니 아침에 눈뜨는 것이 익숙해지고, 스터디 때문에 토요일날 폭음도 줄이게 되고, 일상에서 쉽게 접하지 못하던 주제들(위에서 언급했던 PEAA도 스터디를 통해 볼 수 있었습니다. 휴~ 혼자서는 그런 딱딱한 책 보기 쉽지않죠 ^^;) 을 여러 명의 힘으로 같이 공부할 수 있었습니다. 삶이 , 배움이 즐겁고 건강해진 것이지요.
빨리 접근하고 실패해보고 , 지식을 곱해보고 , 여럿이서 머리를 맞대는 것. 어떻게 보면 앞서 말씀드린 이 세 가지는, 다른 모든 학습에 일반적으로 적용해 볼 수 있는 이야기일것입니다.
썰렁한 도니도 같이 있으면 재밌는 이유?
History
Last edited on 03/03/2008 00:21 by 험블
Comments (0)