이 글은 Avdi의 블로그의 "Stop Reading This Blog and Learn Something" (원문:http://devblog.avdi.org/2011/12/29/stop-reading-this-blog-and-learn-something/) 를 번역한 것이다. 당신이 (상대적으로) 불행하게도 기술적 멘토가 없거나 실력에 진전이 없다고 느낀다면 읽어보기를 추천한다. 의역이 지나쳐 오역이 시나브로 튀어나올 수도 있음을 미리 밝힌다.
SW 개발은 처음 발 들이기 쉬운 영역이다. 아마 다른 어떤 것 보다도 무료 온라인-'컴퓨터 과학의 기본 코스'부터 마스터 프로그래머의 'night-by-night 학습 노트'에 이르기까지 모든 것들-정보들이 차고 넘친다. 물론 수백 수천만의 오픈소스는 말할 것도 없다.
불행하게도, 이런 방대한 정보가 장애물이자 걸림돌이 되기도 한다. 당신은 넘쳐나는 정보를 통해 많이 배울 수 있지만 엄청난 시간을 잃기도 하고 그것을 아주 찔끔 보고 넘겨버리는 스스로 발견하기도 한다. 개인적으로 나는 지난 몇 년에 걸쳐 수 천시간을 이런식으로 낭비했다. 최근에서야 나는 이런 낭비에 반하는 패턴으로 돌아섰다. 이 글에서 당신이 내가 겪은 실수를 피할 수 있기를 바란다.
패턴은 보통 이렇다.
오! 이 웹프로그래밍 테크닉 죽이네! 써먹어야겠어!
가만 보자... 웹 개발을 하려면 웹에 맞는 언어를 배워야겠군. 골치아픈 상황은 질리도록 싫으니 Best한 걸로 골라야겠지. 모든 언어를 조사해볼까.
[3개월을 Perl, Python, Ruby, PHP에 관해 읽고 한개 혹은 두개의 "Hello World"를 작성하는데 보낸다.]
좋아, 내 "Hello World"는 짱이야. 근데 이제 내 간지 앱에 쓸 웹 스택이 필요하잖아. 블로그를 몽땅 구독하자!
[블로그 글들을 탐욕스럽게 읽어나가며 3개월을 보낸다.]
블로그도 꽤 읽었어. 대부분이 'Ruts'를 사용하고 있는 것 같긴한데 거의 한물 한 거 아닌가... 뭔가 저쪽 Framework가 더 좋아보이긴 하는데. Ruts 이론도 다 읽었고 앱도 짜본적 없지만 아무래도 저쪽이 좋아보여. 좋아 6개월이나 뒤쳐진 Ruts 따위를 쓰고싶진 않아.
요즘 대세인 "Box Turtle Pattern"도 잊지 않고 써먹어야지.
아냐 잠깐, Box Turtle은 한물 갔고 Elephant Plop 패턴이 대세라니. 대체 왜 Box Turtle이 좋다고 난리였던거야? 휴, 그래도 아직 앱 개발 시작 안해서 다행이야. 이제 시작해볼까!
윽, 안돼, 고전 Box Turtle 코딩이 이를 갈고 재기했잖아. 걔들이 전부 올았어 제대로 쓰기만하면 Elephant Plop 보다 강력하다는거 말야.
와우! 대단한 커뮤니티잖아! 따라가기 쉽지 않겠어! 근데 난 언제 코딩을 시작하지?
이런. 이제 스마트폰 프로그래밍이 뜨고 있잖아!
당신은 오래 전에 웹 프로그래밍을 마스터 했을지도 모르겠다. 하지만 아직 배우고 있는 중이라면 내가 위에 얘기한 것에 해당하는 경험이 있을 것이다. 아마 당신은 나처럼 해왔을 것이고 그 기술은 클리어인트 JavaScript framework일 것이다. 당신은 이 기술에 흥미도 있고 어디서 정보를 찾아야 하는지도 알고있다. 그리고 많은 대안들도 알고 있다. 하지만 그 엄청난 정보에도 불구하고 무엇부터 시작해야할지는 당최 알 수가 없을 것이다.
각설하고 여기 Avdi의 경험에서 비롯한 새로운 프로그래밍 기술을 배우는 가이드를 살펴보자.
모든 블로그를 구독하지 말라. 당신은 모든 정보를 받아들일 방법을 아직 모른다. 때문에 당신은 변덕스런 정보 속에서 속수무책이 될 것이다.
대체 가능한 langauge/library/framework/무엇이든 리스트를 만들어라.
가장 유명한 것을 택해라. 여기서 '가장 유명한'이란
1) 당신은 인기 많은 mailing list, IRC 같은 것들을 찾을 수 있을 것이다. 이런 포럼들에 아주 초보적인 질문을 남기면 사람들은 재빨리 답을 달아줄 것이다.
2) 주제에 관한 명저가 최소 한 권은 있을 것이다. 책은 기술 생명으로 따지자면 완벽하다고 할 순 없지만 누구든 어떤 수준에 스스로 도달 할 수 있게하는 지식을 체계적인 방법으로 정리한 것임은 사실이다.
3) 가장 가까운 도시에 정기 미팅을 하는 활발한 기술 유저 그룹이 있다.
4) 커뮤니티에서 최소한 몇몇은 사정에 아주 밝으며 이야기를 이끌어간다.
그렇다. 가장 유명한 것이다. '최고'의 것은 아니다. 당신은 최고를 발견하기에는 아직 정보가 부족하다. 우리는 최고에 닿을 것이다. 지금 당장은 맞닥드리는 문제를 모두 습득할 수 있을 정도로 쉽게 구글링 할 수 있는 것이 필요하다.
그 지역 유저 그룹에 가입해라. 부지런이 참석해라. 그 사람들이 필요하게 될 것이다.
관련된 책을 사고, 읽어라. 그렇다, 당신의 진짜 iPad에서 읽을 수 있는 책 말이다. 아니면 종이로라도. 책은 온라인 학습 자료에는 없는 몇몇 좋은 특징들이 있다.
1) (상대적으로) 완전하다. 무료 온라인 강좌는 '적혀져야 하는' 부분이 이상하게 비어있거나 중간에 그냥 끊겨버리는 경향이 있다.
2) 책은 멋들어진 최신 기술 보다는 기본에 충실하다. 당신에게 당장은 기본이 필요하다.
3) 체계를 갖췄다. 당신에게 당장은 체계가 필요하다.
4) 대문자 B 책들의 저자는 책에 나온 버전의 툴로 예제들을 따라해볼 수 있게 만들기 위해 공을 들였다. (슬프게도) 항상은 아니지만 보통 그렇다. 그래서 코드 조각 보다는 완벽히 동작하는 예제가 적혀있다.
5) 하이퍼링크가 적어서 진짜로 개발하는 것 말고 삼천포로 빠지는 일을 줄여준다.
이제 프로젝트에서 배운 것을 사용할 차례다. 완전히 말아먹고 6개월 내에 다시 시작해도 좋거나, 단 한번도 사용해본 적 없는 것을 사용해도 좋다고 확실히 이해해주는 고용주 밑에서 일하지 않는다면 당신이 돈을 받고 하는 프로젝트에는 사용하지 말라. 개인 프로젝트에 써먹어라. 작은 개인 프로젝트.
문제를 만나면 앞서 말한 포럼이나 지역 유저그룹의 사람들과 상의해라. (모임엔 잘 나가고 있는건가?)
축하한다! 당신은 이제 이 바닥에 첫 발을 내딛은 것이다. 더 이상 X라는 기술을 몰아내기 위해 떠드는 얘기도 당신에게 암호가 아니다. 당신도 같이 떠들 수 있는 문제가 된 것이다.
당신이 새로 습득한 것들을 갖고 2단계에서 적어둔 리스트를 리뷰하라. 당신이 적은 것들 중 없어진 것은 지워라. 당신이 6단계에서 마주친 문제에 직접적으로 연관된 것을 하나 골라라. 온라인 튜토리얼, 블로그, 그리고 어떤 것이든 이용해라. 당신은 이제 판을 볼 줄 알기에 책벌레처럼 있지 않아도 된다.
이것이 내가 몸소 익히고 계속 해나가려 노력하는 프레임워크이다. 당신도 한 번 해보기로 마음먹었다면 이것이 어떻게 쓰여지는지 나에게도 알려주기를 부탁드린다.