뉴욕의 프로그래머 - 임백준 지음/한빛미디어 |
지난 2달 동안 루비 책을 들고 다니느라 힘겨워진 어깨를 조금 쉬도록 하기 위해 이번에는 가벼운 소설책으로 한 권 골라 봤습니다.
어제 오후부터 읽기 시작했는데, 소설이어서 그런지 금새 다 읽어 버렸네요.
덕분에, 루비(Programming Ruby)에 대한 서평보다, 이 책의 서평을 먼저 적게 되었습니다(2007년 한 해를 책에 대한 글로 마무리 할 수 있어 기쁩니다.)
우선 작가 임백준씨가 참 부럽습니다.
프로그래머로서 소설을 쓸 정도로 글 재주가 좋다는 건 축복입니다.
비록 소설가다운 멋진 문체가 두드러지는 책은 아니지만, 프로그래머를 꿈꾸는 지망생들이나, 현업에 종사하는 사람들이 이 책을 한번쯤 읽고 많은 공감을 했으면 하는 생각이 듭니다.
저 또한 증권가에서 근무하는 초 하수 프로그래머지만, 책을 읽는 동안 소설에 등장하는 프로그래머들과 제 자신을 거울로 비춰보면서 비교할 수 있는 재미있는 기회가 됐습니다.
일부 제가 생각하는 바와 소설 속에 나오는 해결책이 조금 다른 부분도 있었지만, 이런 분야에 근무하는 프로그래머의 하루 하루를 일반인들이 읽기 쉽게 잘 풀어 쓰셨네요.
덕분에 책을 읽으면서, ‘이 친구 나랑 똑 같네’, ‘ 이쿠, 완전 망했네’ 와 같이 내용에 동의하거나, 같이 걱정하는 부분이 상당히 많았습니다.
책에 나오는 뉴욕의 프로그래머와, 역시 서울에서 비슷하기엔 너무 다른 금융 프로그램을 개발하고 있는 저 자신을 비교 해 봤습니다.
비교항목 |
뉴욕의 프로그래머 |
서울의 프로그래머 |
활동 무대 |
뉴욕 월 스트리트 |
여의도. 혹은 서울 어디 전산실 |
주요 개발 기술 |
자바 |
C++ |
프로그래머의 지위 |
전적으로 실력, 수평적 관계 |
학벌, 지위, 연차, 수직적 관계 |
평생 프로그래머 |
50대 후반의 ‘리오’ 처럼, 평생을 프로그래머로서 살아 가는 사람들 |
코딩할 만하면 30대 초반부터 관리직으로 변신(나 자신도 벌써 VS2005 보다 MS-WORD 가 더 익숙하다 --) |
주요 고객 |
주로 은행, 증권사의 전문 트레이더 |
일반 고객 |
배포방식 |
패키지 형식으로 코드 완료 > 코드 프리지 > 배포(CD 등) > 2주간 고객사 테스트 > 프로그램 가동(재설치) |
프로그램 시작 시 자동 패치 방식(거의 매일 패치가 다운로드 됨)으로 재 설치 필요 없음 |
등장 인물들의 Skill |
최고 수준의 프로그래머(소설이어서 그런지 일반적으로 이런 건지 궁금함) |
내 생각에는 책에 나오는 주인공에 비할바가 못되는 평범한 프로그래머 집단 ^^ |
‘프로그램’ 외에 잘하는 일 |
거의 ‘프로’ 수준으로 잘 하는 일이 하나쯤 있다. |
나만 그런지 모르겠지만 주변에 다른 재주 있는 사람이 그닥 없어 보임. |
주요 Communication |
e-mail 사용 |
메신저 사용 |
물론 책의 내용이 모두 창작의 결과라고 ‘저자의 말’에서 작가가 밝혔지만, 책의 내용은 프로그래머가 금융회사에 근무할 경우 겪을 수 있는 다양한 종류의 문제들, 트레이딩과 관련된 전문적인 분야까지 설명하고 있어서 작가가 이미 두루 경험했고, 실전에서도 여러번 겪었던 내용을 극화시킨 거라 생각됩니다.
그래서 비록 소설이지만, 책에 나오는 등장인물들이 겪는 문제와, 문제를 해결하는 방식, 테스트 방식과 QA 팀 운영방식, 장애에 대처하는 방식에 대한 개발팀의 노하우, 한국과 다른 미국만의 개발팀 문화를 더욱 흥미롭게 읽을 수 있었습니다. (소설로 이런 구체적 사실이 명기된 프로그래머의 현실을 보여주는 책이 나올거라고 생각도 못해 봤습니다)
책을 읽으면서 조금 의아했던 부분도 있는데 실시간으로 엄청난 데이터를 처리해야 하는 환경에서 왜 최고 수준의 프로그래머들이 자바로 클라이언트를 만들었을까 하는 의구심이 들었습니다.
웹으로 구현된 프로그램도 아니고, 고객 PC 에 설치되는 프로그램인데, 자바를 사용하는 게 현실적으로 잘 와 닿지 않았습니다.
제가 개발하는 금융 프로그램에서도 거래소나 코스닥에서 쏟아지는 엄청난 거래 데이터를 실시간으로 처리 하기 위해 어쩔 수 없이 C++ 을 통해 개발하고 있습니다.
아무래도 초당 처리해야 하는 데이터가 엄청나다 보니 다른 대안이 없더군요.
제 개인적인 믿음은 가상 머신 위에 올려져 돌아가는 자바로는 Native C/C++ 의 성능을 따라 올 수 없다고 생각하고 있어서, 소설에서처럼 빠른 사용자 응답이 요구되는 클라이언트에 자바가 사용되는 것이 책을 읽는 내내 마음에 걸렸습니다. (하긴, 대규모 웹 트랜잭션을 처리하는 서버의 경우도 이미 자바, 루비와 같은 스크립트 언어를 사용하는 경우가 대세를 이루더군요. 서버의 경우 돈으로 최고 성능의 서버를 도입해 성능부분을 커버하고, 그 보다는 유지보수와 개발시간을 단축할 수 있는 방법을 선택했다고 믿고 싶습니다. 클라이언트의 경우, 사용자마다 PC가 다양해서 돈으로 고객 PC를 모두 구입해 줄 게 아니라면, 성능을 돈으로 살 수는 없으니까요)
만약 C++(제 개발 환경과 같은) 로 이뤄진 클라이언트를 가정한 소설이었다면, 개발팀이 어떤 테스트 유닛을 가지고, 어떤 프로파일링 툴로 성능을 구하며, 고객 오류 Dump 를 어떤 식으로 자동 보고하고 이를 처리하는 지 좋은 조언을 구할 수(엿볼 수)도 있었을 것 같아서 조금 아쉬웠습니다.
또한 늘 돈이 걸려 있는 금융 프로그램 성격상 프로그래머의 작은 방심으로 인한 버그 하나가 고객에게 엄청난 금정적 손실을 가져올 뿐더러 잘못하면 이 때문에 회사를 나가야 할 수도 있는, 그래서 매번 새로운 빌드를 배포할 때마다 엄청난 스트레스에 시달리는 저 같은 금융 프로그래머의 애환을 잘 다루고 있다고 봅니다.
실용주의 프로그래머나 기타 개발 관련 책들과 달리, 어떠 어떠 해야 한다라는 주입식 내용이 아니라, 소설을 통해 개인의 역할을 다시 한번 되짚어 보는 좋은 시간이 되었네요.
글쟁이 기술자의 허무맹랑한 글이 아닌 실전의 경험이 구구절절 묻어 나는 개발자들이 이런 책들을 좀 더 많이 적어서 각자 다른 분야에 일하는 개발자가 서로에 대해 보다 잘 이해할 수 있는 계기가 되었으면 합니다.
책에서 건진 기억할만한 내용들
페어프로그래밍이 의미를 갖는 것은 물론 공평한 규칙이 지켜지는 것에 한해서이다. 공평한 규칙의 요소는 ‘실력’이 아니라 ‘열정’ 이다. 프로그래밍 실력은 차이가 나도 페이프로그래밍을 수행하는데 아무 상관이 없다. 그렇지만 열정의 수준은 동등해야 한다.
(p17)
실력이 조금 나은 개발자는 우쭐하기 쉽고, 실력이 모자란 개발자도 자존심이 강해서 섣불리 잘못을 지적하기가 힘든 경우가 많습니다. 실력이 차이는 있을 수 있지만, 팀웍을 위해 서로 협력하고, 실력을 커버할 수 있는 열정이 있다면 개인과 팀을 위해 꼭 필요한 개발자가 될 수 있을거라 생각됩니다. 개인적으로 실력도 있으면서 겸손하고 늘 성실한 개발자가 제일 좋습니다 ^^;
테스트 주도 프로그램에서도 유닛 테스트를 귀가 따갑게 들었는데, 이 소설에서도 잡초에 뿌리는 약처럼, 일상화 되어야 하는 중요한 도구임을 얘기해 주고 있습니다. 다시 한번 유닛 테스트 도입을 심각하게 고려해 볼 생각입니다.“소프트웨어 안에 피는 잡초를 제거하기 위해서 반드시 뿌려야 하는 약이 있거든. 그것에 대해서 말하고 있는 거야. 그 약이 뭔지 알겠어?”
“그게 뭔데?”
“유닛테스트야”
(p47)
사용자, 현장 지원팀, 테스트가 전하는 버그의 내용을 아무런 의심 없이 덥석 믿어 버리는 것이다.
(p88)
오류가 발생했을 때 그 오류 내용을 전달하는 사람 때문에 얼마나 많은 삽질을 했는지 모릅니다. 동일 사이트에 모든 사용자가 문제라고 큰 소리 치더니 확인해 보면 본인 pc 에서만 문제가 있는 경우도 있고, 방금 전에 자기 pc 에서 발생한 현상에 대해서도 엉뚱하게 전달하는 사람들의 말을 곧이곧대로 믿고 전혀 엉뚱한 곳에서 원인을 찾은 경우가 어디 한 두번이라야지요. 어느 정도 적응이 되었다 싶은데도 아직도 가끔은 헤메는 경우가 많습니다. 당할 때마다 분노 게이지는 ㅠㅠ;;
“너 같은 사람이 존재한다는 사실을 차라리 몰랐더라면 얼마나 좋았을까. 그럼 요즘처럼 밤마다 뜬 눈으로 지새우지 않아도 되었을 텐데”
(p143)
굿윌헌팅이라는 영화에 나온다는 대사인데..정말 소설에서 처럼 엄청난 천재와 같이 경쟁해야 하는 위치에 있다면 그로 인한 좌절감은 상상을 초월할 듯 합니다. 아직 다행인지 불행인지 제 주변에는 그 정도 천재는 없네요
소프트웨어 출시를 둘러싼 이러한 번거로움 때문에 최근에는 월 스트리트에서도 웹을 기반으로 하는 웹 어플리케이션을 추가하는 경향이 많아지고 있다.
(p18)
대세가 웹으로 가고 있다는데는 무조건 동의 --;; 하지만, 아직은 웹 브라우저 창에서 제대로 된 실시간 데이터를 처리할 수 있는 메커니즘 따윈 없습니다. RIA 인들 엄청난 성능 저하를 가져올 뿐이고……
배포 문제가 늘 관건이지요.
C/S 프로그램은 설치와 업데이트가 전제 조건이어서 자리를 자주 옮겨다니면서 여러 pc 에서 작업해야 하는 사용자의 경우 설치와 업데이트를 번거러워하고, 클라이언트 프로그램에 버그라도 발견되는 날이면, 해당 모듈을 내리고 패치로 업데이트 하기 위해 발바닥에 땀나도록 뛰어다녀야 하는 경우가 많습니다. 웹의 경우에는 서버프로그램만 잠시 내렸다 다시 올리는 정도로 끝날 수도 있어서 결국 웹으로 가야 이 모든 게 해결 될 거 같네요.
'나의 서재' 카테고리의 다른 글
[책]Code Craft 짧은 서평 (8) | 2008.03.09 |
---|---|
[책]Programming Ruby(프로그래밍 루비) (10) | 2008.02.03 |
[책]생각하는 프로그래밍 (13) | 2008.01.11 |
[책] Ship it! 성공적인 소프트웨어 개발 프로젝트를 위한 실용 가이드 (2) | 2007.10.22 |
[책]실용주의 프로그래머 (2) | 2007.10.05 |
[책]테스트주도개발(Test-Driven Development by Example) (4) | 2007.08.14 |
댓글