Media Log

세상을 뒤흔든 프로그래머들의 비밀 - 6점
에드 번즈 지음, 김도균 옮김/정보문화사

이 책은 여러 해커들에 대한 인터뷰를 담고 있다.
예전에 소개하기도 했던 책인 세상을 바꾼 32개의 통찰과 비슷한 종류의 책이다.

세상을 뒤흔든 프로그래머라고 제목이 지어지긴 했지만, 사실 제임스 고슬링 정도를 제외하고는 세상을 뒤흔들었다고 할만한 프로그래머는 별로 없다.
리누스 토발즈 정도는 되야 세상을 흔들었다고 할만할텐데 말이다.

게다가 거의 Java 쪽 사람들이라서 여러 분야의 해커 이야기를 기대했던 사람들에게는 조금 실망스러울 수도 있겠다. 그나마 앤드류 헌트나 데이비드 토마스 정도가 내게 익숙한 이름이고 나머지 사람들은 별로 들어보지 못한 이름들인데, 이것은 내가 Java를 많이 접해보지 않았기 때문일 수도 있겠다.

책의 제목처럼 여러 훌륭한 프로그래머들에게는 어떤 공통점이 있는지를 알아보는 것이 이 책의 목적이자, 인터뷰의 질문들이다.

이 책에서 언급되는 훌륭한 프로그래머들의 공통점을 정리하면 다음과 같다.

기본기에 충실하다.
 - 시스템의 동작 방식을 로우레벨 수준에서 잘 이해하고 있다.

호기심이 왕성하고 끈기가 있다.
 - 끊임없이 궁금해하며, 그런 궁금증을 풀어가는 과정에서 어려움에 봉착해도 쉽게 포기 하지 않는다.

막히면 잠시 쉬면서 해결책을 찾는다.
 - 잠시 다른 일을 하면서 불현듯 해결책을 떠올려 본 것은 많은 사람이 경험해본 일 일 것이다. 이들은 이런 경험이 많아서 그런지, 막히더라도 절대 초조해하지 않고 마치 자신이 곧 그 문제를 해결할 수 있음을 알고있는 것만 같았다. 여기서 '잠시'라는 시간은 하루 혹은 일주일 정도를 쉰다는 것은 아니다. 제임스 고슬링은 10분 혹은 1시간 정도를 다른 일을 하다 보면 마법같이 해결책이 나온다고 한다.

마지막으로 도구를 잘 다루는 것이 꼭 필요한 요소는 아니지만 대부분의 훌륭한 프로그래머들은 에디터나 개발관련 툴을 아주 잘 다룬다.

책 내용 중에 페이팔의 젊은 창업자인 친구 하나가 파이썬(문제를 해결 하는 방법은 한 가지여야 한다)과 펄의 철학(문제를 해결 하는 방법은 여러가지여야 한다)을 이야기 하면서 언젠가 귀도와 래리월이 논쟁하는 것을 본 적이 있다고 했는데, 정말 재밌었다고 한다. 하기사 그 정도 수준의 고수들이 논쟁하는 것을 보는 것은 흔치 않은 기회이고 재미있는 일임에 분명하다.
나는 래리월이 아주 젊잖고, 귀도가 다혈질인 사람일 것으로 상상되는데, 이 친구는 그 반대였다고 얘기한다.
정확히 어떤 내용인지 너무도 궁금해져서 구글을 통해 찾아봤지만, 찾을 수가 없었다.

나 역시 다른 사람들의 프로그래밍 습관을 지켜보며 어떤 차이점이 있나 하고 살펴보고는 하는데, 그 중 뛰어난 프로그래머 한 명에게서 특이할만한 사항을 발견했다.

코드를 작성하고 있는 동안에, 컴파일 혹은 빌드를 자주 하지 않는다.

그는 우선 코드를 작성하기 전에 로직을 머리 속에 잘 정리해 놓은 뒤에, 글을 쓰듯이 코드를 빨리 써내려 나간다. 보통의 많은 사람들이 이 과정에서 문법적으로 오류는 없는지 컴파일을 해보고, 혹시 문제가 있으면 얼른 수정하고 다음 코드를 작성하고는 한다. 그는 다른 사람들과는 다르게 함수 1개를 작성하던 5개를 작성하던지간에 절대로 중간에 컴파일 해보지 않고 끝까지 코드를 써내려 간다. 코드를 다 만들었으면 이제 컴파일 해볼만도 한데 자신이 쓴 코드에 문제가 없는지 한줄 씩 다시 꼼꼼히 읽어보고 머리 속에서 프로그램을 돌려본 후에 그제야 컴파일을 해본다. - 여기서 컴파일 까지 한방에 깔끔하게 된다면 완벽하겠지만, 대부분 그렇게 되지는 않았다. :)

나는 이 방식이 집중력을 계속 유지할 수 있고, 버그 없는 코드를 만드는데 도움을 준다고 느껴져서 혼자서 연습을 하고 있는 중이다.
따라하다보니, 나는 내 기억력이 한계치에 도달해서 이전에 무슨 코드를 입력했었는지 기억이 안나려고 하는 즈음에 무의식적으로 빌드 키를 누르는 나를 발견했다. 그리고 이렇게 잠시동안 빌드가 되는 순간에 집중력이 무너져서 이전에 생각하고 있었던 여러 로직들 중 하나를 까먹게 되곤 하는데, 컴파일이 성공적으로 되어 버리면 이런 까먹은 부분이 생각이 안나고 그대로 묻혀버리는 경우가 있다. 물론 이런 것들은 사소하거나 혹은 심각한 버그로서 다시 자신에게 돌아오게 될 것이다.

머리가 특별히 좋다면 처음부터 모든 로직을 꾸역꾸역 넣어 두고 프로그램을 짤수도 있겠지만, 보통의 두뇌를 가지고 있다면 차근차근 로직을 메모한 뒤에 한 번에 쭉 써내려간 뒤, 다시 한 번 자신의 코드를 리뷰하고나서 컴파일 해보는 것이 더 나은 프로그래머가 되기 위한 좋은 연습이 될 수 있을 것이다.