Media Log

프로그래머의 길, 멘토에게 묻다 - 8점
데이브 후버 & 애디웨일 오시나이 지음, 강중빈 옮김/인사이트

나는 6년동안 프로그래밍을 공부하면서 두명의 멘토를 만났다.

첫번째 멘토는 지금은 절친한 내 친구이자 대학 동기이다.
2004년도 이 맘 때, 복학해서 아무 것도 모른채로 연구실 문을 두드려서 무작정 받아달라고 들어간 그 곳에서 그를 처음 만났다.
그는 몇일 동안이나 연결리스트를 이해 못해서 상심하던 내 옆에 앉아서 코드를 작성하는 법을 차근 차근 가르쳐 주었는데, 지금도 그 때가 너무 고마워서 그를 만나 술을 마실 때면 항상 그 때 이야기를 꺼내곤 한다.

두번째 멘토는 회사에 들어와서 만났다.
처음 그와 대화 했을 때 나는 그가 똑똑하다는 것은 알수 있었지만, 코드는 별로 짜본 적이 없는 사람이라고 예상했었다.
그로부터 시간이 좀 지나서 언젠가 그가 내 옆에 앉아서 코드를 작성하는 것을 보고는 내가 그동안 크게 착각하고 있었음을 깨달았다.
그는 말이 별로 없고 남들 앞에 잘 나서지 않는 타입이라 많은 사람들이 그가 얼마나 똑똑한지 잘 모르고 있지만, 나는 그가 우리 회사 최고의 프로그래머임을 확신한다.
내가 지금 아는 것의 팔할은 그에게 배웠으며 아직도 많은 것들을 배우고 있는 중이다.

이 책을 읽으면서 저 두 명의 멘토가 떠올랐는데, 이 글로나마 그들에게 감사를 표하고 싶다.

멘토를 만난다는 것은 중요한 일이다. 그리고 행운도 따라줘야 한다.
하지만 무조건 행운만을 기대해서는 곤란하다. 이 책의 저자는 이메일을 보내 누군가에게 멘토를 해달라고 부탁을 했는데, 그 사람의 대답이 충격적이었다. 매일 아침에 만나서 잠시 대화를 해주겠다는 것 아닌가.
물론 이렇게 착한 사람을 만나는 것은 쉽지 않겠지만, 시도 해볼만한 충분한 가치가 있다.
가만히 앉아서 행운이 굴러 들어오기만을 기다린다는 것이 방구석에만 있으면서 여자친구가 생기기를 바라는 오덕후와 무엇이 다르겠는가.

이 책의 많은 부분에 대해서 공감하지만, 너무도 당연해서 별로 감흥이 없는 조언도 많이 있었다.

  • 모르는 것을 부끄러워 하지 말라.
  • 열정을 키워라
  • 주변을 당신보다 뛰어난 개발자들로 채워라.
  • 일하면서 성찰하라.

이런 조언들은 훌륭한 프로그래머가 되고 싶어하는 그 어떤 견습생이라도 이미 알고 있을 내용이다.

책을 읽는동안 실용주의 프로그래머라는 책을 읽을 때와 비슷한 느낌을 받았는데, 내 생각에는 이 책보다는 실용주의 프로그래머가 견습생들에게 훨씬 더 가치 있고 읽을 만한 책이다.
기술적인 내용들에 대해서는 조금만 더 구체적인 예를 들어가며 설명해줬으면 좋았겠지만 이 책에서는 아쉽게도 그런 것은 전혀 없다. 하지만 그렇기 때문에 좀 더 가볍게 머리 식힐 생각으로 읽어볼 수 있는 책이기도 하다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
실용주의 프로그래머 - 9점
앤드류 헌트 외 지음, 김창준 외 옮김/인사이트
최근 2주 정도를 이 책을 읽으면서 잠이 들곤 했다.
이 책은 아주 재밌고 잘 쓰여진 책이다.

이 책의 역자는 애자일 프로그래밍 블로그를 운영하고 있으며 다독가로도 유명하다.
책에는 역주가 상당히 많은데, 대부분 관련 부분에 대해서 더 많은 정보를 얻을 수 있는 책들을 소개하는 내용이다. -그가 정말로 얼마나 많은 책들을 읽었는지 알 수 있다.


어떻게 커플링이 없이 레이어를 잘 설계하는가.
어떻게 모듈 혹은 함수간의 커플링을 줄일 수 있는가.
어떻게 중복된 코드를 제거할 수 있는가.

이것들은 내가 코딩하면서 항상 고민해 왔던 것들이고, 지금도 또한 고민하는 내용들이다.

책에서 저런 내용들을 잘 설명해주는데, 뭔가 깨달음을 얻으려고 하면 내용이 탁 끝나버리곤 해서 너무 아쉬웠다. 아마 아직 내 경험이 부족하기 때문일 것이다.
이 책의 저자들은 위의 내용들에 대한 해답을 이미 잘 알고 있는 것 같은데, 조금만 더 자세히 써주었더라면 별 5개를 줬을 것이다. 별 반개는 그래서 빼버렸다.

우연에 맡기는 프로그래밍이나 깨진 유리창의 법칙을 읽으면서는 아주 부끄러웠다.

깨진 유리창 하나를 방치해 두면, 그 지점을 중심으로 범죄가 확산되기 시작한다는 이론으로, 사소한 무질서를 방치하면 큰 문제로 이어질 가능성이 높다는 의미를 담고 있다.
-깨진 유리창 이론, 위키피디아에서 발췌

이는 일상 생활의 많은 곳에서 볼 수 있는데 프로그래밍 세계에서도 마찬가지이다.

어떤 문제를 해결하는데 있어서 해법을 두개 찾았다고 하자.
Plan A는 정석으로 해결하는 방법이고(조금 더 까다롭고 조금 더 오래걸린다. 하지만 완벽하다),
Plan B는 꼼수로 대충 메꾸는 방법이다.(금방 할 수는 있지만 부작용이 있다)

이제 선택의 순간에 놓여서, 기존 프로젝트의 코드들이 무결하고 아름답게 잘 짜여져 있었다면 Plan A를 선택하게 되지만, 반대의 경우라면 Plan B를 선택하게 된다는 것이다.(똑같은 사람일지라도. 그리고 시간이 있음에도 불구하고. 심지어는 어떤 부작용이 있을지 알고 있음에도 불구하고!)

우리는 그동안 얼마나 많은 플랜 B를 선택해왔던가.

좀 더 훌륭한 프로그래머가 되고 싶다면 이 책에서 가르쳐주는 실용주의 프로그래머의 많은 기법과 정신들을 마음 속 깊이 각인하고 습관화 해야만 할 것이다.
신고

submit