Media Log

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

신고
  1. at 2010.03.31 15:30 [edit/del]

    비밀댓글입니다

    Reply

submit
해커와 화가 - 10점
폴 그레이엄 지음, 임백준 옮김/한빛미디어

어떤 사람들은 폴 그레이엄이 건방지거나 혹은 그가 주장하는 바가 틀렸다고 말하면서도 하나 같이 그의 글은 재밌다고 한다. -에릭 싱크, 조엘, 그리고 이 책의 역자인 임백준까지

나도 폴 그레이엄의 글을 좋아한다.

이 책을 읽고 나서 그의 글에 매료되어서 개인 블로그를 즐겨찾기 해두고 종종 가보곤 한다.( 물론 내 빌어먹을 영어 실력 탓에 그 재밌는 최신 글들을 잘 이해할 수 없다는 것이 화가 나지만. )

이 책의 내용은 조엘 온 소프트웨어 처럼, 폴 그레이엄의 블로그에 이미 쓰여진 많은 에세이들을 기반으로 작성되었다.

나는 그가 그림을 얼마나 잘 그리는 지는 따위는 관심 없다.
단지, 이 책에서 그가 LISP, Python, 펄, 그리고 해커를 말할 때면 내 집중력은 200%가 되었다.

프로그래밍 언어에 대한 비교는 언제나 많은 논란거리를 가지고 오는 위험한 주제이기도 하면서 또한 프로그래머들의 흥미를 유발하는 최고의 주제이기도 하다.

그는 LISP에 대한 광신도였다.

그의 블로그에서 그는 자바가 쓰레기라고 말하고 있지는 않지만, 자바 프로그래머는 파이썬 프로그래머보다 멍청하다고 말한다.
자바 사람들이 반발하자, 그는 자바 프로그래머가 멍청하다는 것이 아니라 상대적으로 파이썬 프로그래머가 영리하다. 라고 다시 말한다.

그는 LISP에 대한 광신도이면서 다른 언어로는 파이썬과 펄, 그리고 루비를 인정한다.
에릭 레이몬드가 윈도우즈를 쓰레기라고 번번히 말하듯이 그 역시 다른 언어들은 가차없이 깍아내린다.
아마 그는 속으로 이렇게 생각하고 있을 것이 분명하다.
( 도대체 어떻게 자바 따위로 프로그래밍을 할 수 있다는 말이지? )

하지만 내가 사용하는 언어가 쓰레기가 된들 뭐 어떤가. 그의 글은 재밌는걸.
그리고 LISP와 파이썬이 미치도록 공부하고 싶어지는 것을.

실제로 그랬다. 이 책을 덮고나서부터 머리속에 LISP와 파이썬 밖에 없었다.
LISP를 접해보려고 했지만, 괜찮은 국내 서적을 찾을 수가 없었다.
인터넷에서 배우지 뭐, 했으나 괴물 형상의 괄호 투성이 언어와 영어로된 설명은 날 금방 질리게 만들었다.

LISP는 나중으로 미뤘지만 Python과 펄 그리고 루비 마저 버릴 수는 없었다.
하나씩 책을 구해서 읽어보고는 그 중 내 두번째 무기로써 Python을 선택하게 되었다.
( 첫 번째 무기는 물론 C++ 이다. ^_^ )

비즈하드 프로젝트를 하면서 파이썬으로 뭔가를 만들어보고 싶은 욕구가 넘쳐난다.
꽤 적당하다고 생각되는 몇 몇 기능들은 이미 다른 언어로 만들어져 있기 때문에 굳이 바꾸지 않고 앞으로 새로 추가될 기능에 대해서 한 번 시도해 보려고 한다.

아 얼마나 즐거울까.



신고
  1. at 2010.03.25 10:18 [edit/del]

    비밀댓글입니다

    Reply

submit