제목 : 뉴욕의 프로그래머
지은이 : 임백준
출판사 : 한빛미디어
"이게 뭐야, 컨커런트 익셉션(Concurrent Exception)이 또 발생했자나."리는 대사로 시작하는 소설을 본 적이 있는가?
개발자를 위해 개발자에 의해 쓰여진 소설.
작가 임백준은 실제로
윌스트리트에 있는 금융회사에서 프로그램을 개발하고 있는
현업 개발자다.
그래서 그럴까
소설속에서 주인공 영우가 맞닥드리는 상황은
실제로 내가 한번쯤 경험해볼만한 상황이며
영우의 고민은
나도 늘상 하는 고민중 하나이다.
개발자라면 맘 편히 읽을 수 있는 책.
혹시 전문용어때문에 어렵지 않냐고??
자바 한달만 공부한 수준이라면 누구든 쉽게 읽을 수 있다.
자.. 그럼 익숙하고 친근한 소설속의 내용을 잠시 보자. ^^
"아, 그 메일은 나도 봤지. 2.2 버그를 잡느라 2.3은 아직 신경 쓸 겨를이 없어서 그래. 2.2 코드 프리즈(code freeze)가 이번 금요일이자나. 그러니까 내일이란 말이지. 그런데 아직도 잡히지 않은 골치 아픈 버그가 있어서 말이야. 너 혹시 그 버그 얘기 들었어? 2.2 릴리즈에서 유일하게 남아있는 P1 버그인데 말이야."
영우는 마이크가 말하려고 하는게 무엇인지 눈치를 챘다. P1 버그라면 우선순위(Priority)가 제일 높은 버그를 의미하는 것으로 소프트웨어가 출시 되기 위해서는 반드시 수정되어야 하는 버그를 의미한다. 회사에서는 버그(bug)나 업무(task)를 기록하고 관리하기 위해서 아틀라시안(Atlassian)에서 만든 웹기반 프로그램인 지라(JIRA)를 사용하고 있는데 지라에서는 버그의 우선순위를 P1에서 P5까지 다섯 단계로 구분해 놓았다.
- 벼랑끝에 선 마이크 중 -
하지만 영우는 두 사람이 함께 수행하는 작업이 한 사람이 수행하는 작업보다 효율적이라는 XP의 철학을 신뢰했다. .. 중략 .. 페어프로그래밍이 의미를 갖는 것은 물론 공평한 규칙이 지켜지는 것에 한해서이다. 공평한 규칙의 요소는 '실력'이 아니라 '열정'이다. 프로그래밍 실력은 차이가 나도 페어프로그래밍을 수행하는데 아무 상관이 없다. 그렇지만 열정의 수준은 동등해야 한다. 마이크처럼 자기 일에 대한 주인의식을 갖지 못하고 다른 사람에게 의존하는 사람은 페어프로그래밍이 아니라 기생을 하는 것이기 때문에 상대방의 의욕을 꺾는다. 그런 의미에서 영우는 기꺼운 마음이 생기지 않았다.
- 벼랑끝에 선 마이크 중 -
"화가에게 매일 아침 9시부터 저녁 5시 사이에 그림을 그리라고 해봐. 제대로 된 그림이 나올 수 있을까?"
누군가 그에게 출근 시간이 남다른 이유에 대해 물었을때 콘린은 이렇게 대답했다. 프로그래밍이라는 행위가 소설쓰기나 그림그리기와 전혀 다를것이 없다고 말하는 그는 [해커와 화가들]의 폴 그레이엄을 인용하기를 좋아했다.
- 무정부주의자 콜린 중 -
그가 가지고 있는 또 하나의 괴짜 같은 행동은 소프트웨어 도구를 향한 그의 이해할 수 없는 태도이다. 그는 분량이 만만치 않은 수백 개의 소스코드를 윈도우즈가 제공하는 노트패드만으로 작성한다. 제리나 존은 팀원들에게 인텔이제이나 이클립스를 사용할 것을 권장했지만 콜린은 그들의 말을 귓등으로도 듣지 않았다. 프로그래밍에 열중한 콜린은 화면에 수십개의 노트패드 창을 열어놓고 Find, GoTo, Replace 라는 노트패드가 제공하는 세 개의 원시적인 기능을 이용해서 번개처럼 코딩을 수행한다. .. 중략 .. 디버깅은 여러 개의 System.out.println 구문을 이용해서 수행하고, 프로그램 실행은 명령어 라인에서 처리한다. IDE가 제공하는 편리한 리팩토링 도구나 디버깅 기능을 이용하지 않기 때문에 그가 작성한 코드는 수없이 자잘한 버그를 담고 있지만, 그는 개의치 않았다.
- 무정부주의자 콜린 중 -
이러한 트레이더들에게 세상에 존재하는 소프트웨어는 오직 두 종류뿐이다. 버그가 하나도 없이 완벽하게 동작하는 소프트웨어와 냄새조차 견딜 수 없는 쓰레기 같은 소프트웨어가 그것이다. 미아의 목소리를 통해서 추측해 보건대 영우가 일하고 있는 트레이드매치 시스템은 지금, 쓰레기로 분류되기 일보 직전에 놓여있는 셈이었다. 다만 한 두명의 트레이더가 아니라 모든 트레이더가 동시에 로그아웃 되었다고 하니, 문제는 트레이드매치 시스템이 아니라 네트워크에 있는 것일 지도 몰랐다. 그와 같은 사실을 입증할 수만 있다면 트레이더들의 불만을 완전히 누그러뜨릴 수는 없다고 해도 최소한 시스템이 쓰레기로 분류되는 일만큼은 모면할 수 있을 것이다. 그렇지만 만약 그런 사실을 입증할 수 없다면, 즉 문제의 원인이 트레이드매치 시스템 바깥에 있는 것이라는 사실을 밝혀낼 수 없다면, 결과는 생각하기조차 끔찍했다. 그것은 트레이드매치라는 소프트웨어의 생명주기가 갑작스럽게 끝나게 되는 것을 의미했다. 즉, 프로젝트의 종료를 의미하는 것이다.
가까스로 침대밖으로 기어 나온 영우는 팬티차림으로 책상 앞에 앉았다. VPN을 이용해서 회사의 네트워크에 접속하고, 미아의 이메일을 찾아서 읽었다.
- 톰과의 한 판 승부 중 -
제임스 고슬링을 비롯하여 자바 언어를 만들고 배포한 사람들이 저지른 가장 큰 실수 중의 하나는 자바 언어가 C나 C++언어와 달리 프로그래밍 언어 차원에서 메모리 누수 현상을 제거했다는 정확하지도 않고 별로 의미도 없는 주장을 집중적으로 펼쳤다는 사실이다. 그들은 그렇게 함으로써 훗날 많은 자바 프로그래머들이 자바 언어로 작성한 프로그램에서는 메모리 누수가 일어나지 않는다는 착각을 하도록 만들었다.
- 로버트는 왜 회사를 그만 두었는가 중 -
영우는 그의 결정이 실망스러웠다. 사람은 누구나 실수를 하기 마련이다. 특히 그가 처했던 상황처럼 급박한 순간에 실수를 저지르지 않을 수 있는 사람은 없다. 호나우두나 앙리 같은 불세출의 축구스타들도 골대 앞에서 어처구니 없는 실수를 저지르고, 이창호나 조훈현 같은 당대 최고의 바둑 고수들도 실수를 하고 머리를 긁적거린다. 하물며 일생동안 수천, 수만 줄의 코드를 작성하는 프로그래머들이 어찌 실수르 하지 않고 살 수 있으랴.
- 로버트는 왜 회사를 그만 두었는가 중 -
노트북을 네트워크에 연결하고, 인텔리제이, 퍼포스, 토드 등의 프로그램을 실행하고, 이메일을 열어보았다. .. 중략 .. 영우는 빠른 손놀림으로 퍼티(Putty) 창을 열어서 현장 시스템을 구성하는 세 개의 서버에 접속했다. prstat 명령어를 통해서 시스템의 전체적인 상태와 자바가상기계 안의 쓰레드 수를 확인했다. 로그 파일을 열어서 서버에 특별한 문제가 없는지 점검하고, 나기오스(Nagios) 시스템을 이용해서 서버의 하드웨어와 네트워크 연결 상태를 점검했다.
- 프로그래밍의 절대 미학 중 -
영우는 머리카락을 움켜쥐고 이브가 수정한 코드의 내용을 읽어보았다. 이브의 코드는 농약을 잘못 먹은 뱀의 몸뚱이처럼 if 와 else 를 삼키며 심하게 뒤틀려 있었다. 뒤틀림의 정도가 너무 심해서 코드의 의미를 한 줄씩 정확하게 이해하려고 노력하는 영우의 머리에서는 쥐가 나고 김이 피어오를 지경이었다.
프로그래밍을 하다가 자기 코드가 뒤틀리고 있는 생각이 들면 곧바로 키보드를 내려놓고 뒤로 물러서는 것이 현명한 프로그래머의 자세이다.
뒤로 물러서서 심경을 차분히 가라앉힌 다음 필요한 리팩토링을 하고, 과감하게 설계를 고치고, 필요한 유틸리티 코드를 작성하는 정지작업을 펼쳐서 코드의 본문이 최대한 간결하게 만드는 것이다. 그렇게 함으로써 본문을 구성하는 코드는 반듯해서 오해와 착각의 여지가 없어야 한다.
- 프로그래밍의 절대 미학 중 -
TRACKBACK :: http://www.bugzzang.com/blog/trackback/217
flutia 2008/04/01 02:20 # M/D Reply
훈훈~
bugzzang 2008/04/01 09:36 # M/D
오잉
leech 2008/04/01 15:10 # M/D Reply
미사리 강이라는 그분께 특훈?
bugzzang 2008/04/02 18:56 # M/D
빙고~
삽작여사 2008/04/02 14:36 # M/D Reply
와~~~~~
결혼해요?
오잉 o.O
날짜 언제에요? 왕~~~
올만에 여기저기 둘러보니 진짜 새로운 소식들이 많네요.
결혼날짜 잡은거 축하해용
bugzzang 2008/04/02 18:56 # M/D
메신저좀 들어오삼
묭 2008/04/07 23:18 # M/D Reply
엄지손가락 그게 그뜻이었구나~ 흥!
근데 드레스~ 안좋은 게 하나 있어 팔살은 안감춰져..ㅠ.ㅠ 한복이 췍오~ ^^