프로그래머의 길, 멘토에게 묻다

@codemaru · August 07, 2010 · 6 min read

진짜 오랜만에 진득하게 앉아서 책을 읽은 것 같습니다. 300페이지도 안되는 분량인데 잡생각하면서 읽다보니 생각보다 오래 걸렸네요. 책 내용은 그냥 제목처럼 신입 개발자가 어떻게 빠르게 숙련된 개발자가 되는지에 관한 것입니다. 일부는 참 공감 가는 것들도 있고, 일부는 완전 저랑은 반대 생각을 가지고 있는 것도 있고 그렇네요. 가볍게 읽으실 수 있는 내용입니다.

“그대가 이미 가득 차 있는 잔을 가지고 내게 온다면, 어찌 그대에게 마실 것을 드릴 수가 있겠소?”

전반적인 이해력은 서로 다른 여러 수준의 경험이 상호 연관될 때 더욱 높아질 수 있다. 그 무엇도 당연하게 여기지 않는 신참들과, 알 것은 다 안다고 생각하는 고참들이 더 자주 밀접하게 소통할 때가 거기에 해당한다. – 칼 와익, 칼린 로버츠

어떻게 만들어야 하는지 잘아는 무언가를 만들어보는 시간을 가져라. 그리고 그 경험을 바탕으로 당신이 얼마만큼의 길을 왔고 지금 현재 역량은 어느 정도인지 깨달아라.

그는 사이드 프로젝트에 뛰어들었고 구할 수 있는 것은 뭐든지 읽기 시작했다.

정말로 프로그래밍을 잘 하게 된다는 것은 일생의 과업이며, 지속적인 배움의 연속으로 이루어지는 대담한 계획이다. – 존 제프리즈 외

프로그래머가 일하는 모습을 본 적이 있는 사람이라면, 자기 방식대로 일할 수 있는 기회가 주어졌을 때 프로그래밍은 그 자체로 가장 큰 동기를 부여한다는 것을 알 것이다. – 제랄드 와인버그

돈을 벌기 위한 소프트웨어와, 만들기에 재미나는 소프트웨어 사이에는 서로 겹치는 부분이 그다지 많지 않다. (중략)  당신이 돈을 벌고자 한다면, 너무 지저분해서 누구든 공짜로는 해결하려 들지 않는 그런 문제를 안고 씨름해야 할 때가 많다. – 폴 그레이엄

“숙련됨은 연습을 중단하는 그 시점부터 퇴보하기 시작한다.” 당신이 프로그램을 짜지않는 하루하루마다 숙련공으로 가는 길은 점점 더 멀어져 간다.

(용꼬리의 …) 부작용은, 적극적으로 기술을 연마하지 않으면 결국은 자신에 대해서 상심할 수 있다는 점이다.

오로지 동료와 가까이서 같이 일할 때만 배울 수 있는 그런 세세한 기법들이 있게 마련이다. 이런 기법들은 가르치기에는 너무 뻔해 보여서 잘 언급되지 않지만, 그런 것들이 쌓였을 때의 효과는 크다.

어떤 일이든 간에 사랑하지 않고서는 정말로 잘 할 수가 없다. 그리고 당신이 해킹을 사랑한다면 필연적으로 자신만의 프로젝트를 하게 될 것이다. – 폴 그레이엄

프로그래머가 되고자 준비하는 가장 좋은 방법은 프로그램을 짜는 것이며, 다른 사람들이 작성한 뛰어난 프로그램을 공부하는 것이다. 나 같은 경우에는 컴퓨터 과학 센터의 쓰레기장에 가서 버려진 운영체제 코드 리스팅을 건지곤 했다. – 빌 게이츠

“Programmers at Work”에서 빌 게이츠는 이렇게 말했다.

“프로그래밍 능력을 테스트하는 가장 좋은 방법 중 하나는, 프로그래머에게 30페이지 정도의 코드를 건네주고서 그 사람이 얼마나 빨리 그 코드를 통독하고 이해하는지 보는 것이다.”

2003년 이래로 복잡한 알고리즘을 구현할 때 불변식을 의도적으로 사용하기 위해서 ‘절대 디버거를 쓰지 않는’ 태도에서 ‘테스트 주도 개발’을 훈련하는 쪽으로 돌아섰다.

소프트웨어 개발 분야에서 무엇이 모여 숙달됨을 이루는지 우리가 정확히 알지는 못하지만, 어떤 것이 상관없는지는 알고 있다. 천재이거나, 운이 좋거나, 부유하거나, 유명해지는 것이 당신을 마스터로 만들어 주지는 않는다. 이런 것들은 장인정신에 꼭 필요한 것이 아니다. 소프트웨어 개발의 모든 측면을 아우르는 기술과, 그 기술을 전수해서 우리 분야가 앞으로 나아갈 수 있게 하는 능력, 그것이 장인정신의 핵심이다.

 0  0

 

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중