뉴욕의 프로그래머




뉴욕의 프로그래머
상세보기

임백준 지음 |
한빛미디어 펴냄
세계금융시장의 심장, 뉴욕 월스트리트 금융회사에서 근무하는 프로그래머들의 이야기를 소설 형식으로 다루는『뉴욕의 프로그래머』. 이 책은 현직 프로그래머인 저자 자신의 경험을 바탕으로 프로그래머들의…

    <br />&lt;행복한 프로그래밍&gt;, &lt;누워서 읽는 알고리즘&gt; 등으로 이미 유명한 임백준님이 쓴 소설책이다. 그가 쓴 책은 거의 읽어보았는데, 프로그래머의 가치와 프로그래머로서 느낄 수 있는 보람과 즐거움에 대하여 이야기 하고 싶은 마음을 느낄 수 있었다. 그런면에서 소설의 형태로 쓰여진 이 책은 그러한 저자의 의도를 가장 잘 드러내고 있는 것 같다는 생각이 든다.<br /><br />뉴욕을 배경으로 금융분야의 트레이더들이 사용하는 소프트웨어를 개발하는 회사에서 일어나는 다양한 에피소드를 바탕으로 이야기가 전개된다. 한국인 프로그래머 영우가 주인공으로 등장하는데, 함께 일하는 동료, 고객 등등 프로그래머로서 만나는 다양한 부류의 사람들에 대한 생각을 읽을 수 있다. <br /><br />소설책임에도 불구하고 소스코드가 등장하고 전산 용어들이 난무해서,&nbsp; 이 바닥에서 굴러본(?) 사람이 아니라면 이해하기 힘든 부분이 있겠지만, 프로그래머들에게는 심히 공감히 갈만한 이야기들이 흥미를 주고 있을 뿐만 아니라, 커다란 교훈을 선사한다. &lt;실용주의 프로그래머&gt;에 나오는 프로그래머에게 주옥같은 지혜를 소설로 읽는 기분이랄까? <br /><br />이 책을 읽으면서 반복되는 일상에 지루해 할 것이 아니라, 프로그래머만이 느낄 수 있는 즐거움과 보람을 찾아 보아야겠다는 생각을 하게 되었다. 좀더 나은 방법을 찾아, 아름다운 코드를 작성하려는 노력을 기울이고, 그 결과가 경험으로 쌓였을때, 언젠가 나도 누군가가 부러워할만한 내공을 지닌 원숙한 프로그래머가 될 수 있겠지...<br />

실용주의 프로그래머

얼마 전에 보안팀 팀장님으로부터 소프트웨어 테스팅에 대한 세미나를 들은 적이 있었다. 테스팅 방법론 뿐만 아니라 여러가지 이슈에 대해서 이야기를 나눌 기회가 있었는데, 그 때 팀장님께서 수차례 언급하셨던 책이 바로 “실용주의 프로그래머”였다. 그리하여 11월에 전략적으로 이 책을 공부하게 되었고 이번 주말에 일독을 끝냈다.

몇 만줄이 넘는 소프트웨어를 작성하다보니, 큰 프로젝트를 여러명이 함께 진행할 때, 안전하고 효과적인 방법에 대한 고민을 하게 된다. 또 언젠가 팀장이 퇴어 프로젝트를 책임지고 진행해야 하는 위치에 서게 되면, 물론 경험이 어느정도의 역량을 쌓아주겠지만, 팀장이 되기 위한 별도의 공부가 필요할 것 같았다.

워낙 좋은 평이 많은 이 책은 소프트웨어 개발자라면 반드시 일독을 권하고 싶을 정도로 알찬 내용을 담고 있다. 어느정도의 개발경력이 있다면 아마 읽는 내내 무릎을 탁 치게 될 것이다. 이 책에서 말하는 실용주의 프로그래머의 핵심은 한마디로 “빈틈없는 꼼꼼한 개발”이라고 본다.

한가지 중요한 이슈를 소개하자면, 책에서는 수차례 테스트의 중요성에 대해서 강조하고, 프로젝트의 대부분의 과정을 자동화하라고 권고하고 있다. 자동화된 회귀테스트가 소프트웨어의 신뢰성을 보장한다는 것이다. ‘예전에 되었던 것이 도대체 왜 지금 안되나?’ 라는 답답함을 토로해본 경험이 있는 개발자라면, 이 책을 읽고 테스트의 중요성을 깨닫기 바란다.

테스트는 이 책에서 말하는 실용주의 프로그래밍 기법의 일부분일 뿐이다. 총 45가지 주제를 가지고 개발자에게 흥미롭고 유익한 이야기를 전달하고 있으니 개발자라면 꼭 한번 읽어보시라.

MAC OSX에 대한 호기심

내일은 회사의 10주년 기념식이 있는 날이라 몇 일동안 계속해서 공연 연습을 했다. 입사 동기가 광고 패러디 퍼포먼스(?)의 영상을 맥북에서 키노트를 사용해서 구성했는데 처음보는 맥북과 키노트의 프리젠테이션은 나의 호기심을 자극했다. 특히나 가장 나의 시선을 끌었던 것은 바로 터미널의 존재!

그리하여 요즈음에는 지름신의 강림에 시달리고 있다. ‘어차피 사택에 컴퓨터가 없어서 불편하지 않은가’하는 자기 합리화 메커니즘을 가동하며. 그리고 지금까지 월급탄 이래로 나를 위해 지른 것이 없기도 하고. 게다가 아무 이유 없는 LG카드 6개월 무이자 할부 혜택까지 …

지금까지 웬만한 OS는 다 사용해봤는데 MAC OS만 경험이 없다. 내가 가장 궁금한 것은 ‘MAC OS가 프로그래머에게 적합한 운영체제인가?’ 하는 것이다. 내가 개발할 때 사용하는 것은 윈도우의 경우 거의 Putty 밖에 없다고 볼 수 있다. 그 다음으로 중요한 것은 운영체제의 안정성과 인터페이스의 간결함!

큰 돈(?)을 들이지 않고 MAC을 사용해 보기 위한 방법에는 2가지가 있다. 맥북을 구입하던지

사용자 삽입 이미지 혹은 맥미니를 구입하던지

사용자 삽입 이미지
맥북의 경우 100만원대, 맥미니의 경우 60만원대에 구입이 가능하다.

MAC OSX에 경험이 있는 여러분에게 묻습니다. SSH에 접속해서 콘솔에서 주로 작업하는 프로그래머에게 MAC OSX는 어떤 선택이 될까요? 물론 MAC OSX에서 게임할 생각은 없습니다. 안정성, 편의성, 간결함 등이 중요한 항목이 되겠네요.

컴퓨터에 관한 아련한 추억

어렸을 때 우리집은 가난했지만 부모님께서는 항상 나에게 좋은 교육기회를 제공하기 위해 애쓰셨다. 덕분에 나는 국민학교 시절부터 집에서 컴퓨터를 가지고 놀 수 있었다. 처음 컴퓨터를 살 때 아버지께서 286 컴퓨터는 바로 가지고 올 수 있고 386 컴퓨터는 한 달 기다려야 된다고 하시며 나에게 선택권을 주셨다. 급한 마음에 나는 286을 선택했다. 낭만(?)은 짧고 인생은 길었다 ……

나의 첫 컴퓨터는 삼보 컴퓨터였고 286 AT 제품이였다. 컴퓨터를 부팅하면 삼보컴퓨터에서 제공해주는 프로그램이 떴는데 이 것이 내내 골치꺼리였다. 컴퓨터학원에 다니기 시작하면서 나는 DOS가 무엇인지 알게 되었고 우리집 컴퓨터에 자동으로 뜨는 프로그램이 영 탐탁치 않았지만 아는 것이 없으니 어쩔 도리가 없었다.

컴퓨터하면 역시 게임이 백미! 학원을 다니면서 친구들과 게임을 복사해서 즐기곤 했는데 학원에서 되던 게임이 집에서 안되는 현상을 경험하면서부터 메모리 관리를 공부하게 되었다. 특히 삼국지 무장쟁패는 600k 이상의 기본 메모리를 요구했는데 처음에는 도저히 이를 맞출 수가 없었다. 결국 config.sys와 autoexec.bat의 역할을 알게 되었고, autoexec.bat에서 띄우는 한글 폰트 프로그램를 제거하자 600k 이상의 기본 메모리를 확보할 수 있었다. 화면에서 삼국지 무장쟁패의 타이틀을 보는 순간 동생과 나는 얼싸앉고 폴짝 폴짝 뛰며 기쁨을 만끽했다. 나는 그렇게 컴퓨터를 조금씩 알아갔다.

나중에는 역시 게임 때문에 OS를 바꾸어야 하는 경우가 있었는데 그때서야 비로소 우리집 컴퓨터에 깔려있는 OS가 MS-DOS가 아닌 DR-DOS라는 사실을 알게 되었으며 더욱 충격적이였던 것은 DR-DOS가 쓰기 금지 되어 있는 D드라이브에 깔려 있다는 사실이였다. 그때 나는 앞으로 절대 메이커 PC를 구매하지 않겠다고 맹세했다.

컴퓨터 학원에서는 GW-BASIC을 배웠다. 프로그램을 짠다는 것이 너무 신기하고 재밌었다. 내가 생각한데로 프로그램을 작성하고 그 것이 그대로 동작하는 것을 바라보는 것은 나에게 큰 성취감과 즐거움을 가져다 주었다. GW-BASIC을 어느정도 배웠을 당시에 퇴마록을 열심히 읽고 있었기에 <좀비와 현암의 결투>라는 유치찬란한 게임을 만들어 보았다. 굳이 장르를 붙이자면 턴제 시뮬레이션 게임이라고 해야할까? 좀비와 현암 각각 4가지의 메뉴를 가지고 있다. 현암을 예로 들자면 “기 모으기”, “월향검 던지기” 등이 있는데 현암의 동작은 플레이어가 선택하고 좀비의 동작은 그야 말로 렌덤이였다.

PC 통신에 대한 추억도 빼놓으면 섭섭하다. PC 통신에서 첫 사랑의 메세지를 받았을 때 그 떨림은 아직도 생생하다. 천리안에서 만나 종종 신의 손 게임을 겨뤄보곤 했는데 둘다 최고 600타 근처에서 용호상박을 이루었다. 그러다 언젠가부터 그녀가 1000타를 넘기 시작했다. 세벌식을 연습했던걸까?

나는 본디 호기심이 많은 사람이 아닌데 컴퓨터에 관한한 호기심이 왕성했던 것 같다. 인터넷이라는 개념이 처음 나왔을 당시에 PC 통신에서 소켓을 써서 인터넷에 접속해보기도 했다. 그리고 도스와 윈도우가 아닌 새로운 운영체제에 대한 관심도 많아서 리눅스를 수도 없이 설치해 봤다. 레드햇이 대세이던 그 시절 안 깔아본 배포판이 없을 정도였다. 심지어 역사의 뒤안길로 사라진 IBM의 OS/2 WARP도 설치해봤다. 그러나 c 프로그래밍도 못하고 vi도 못쓰던 시절 리눅스는 그저 설치가 전부였다.

나는 처음부터 컴퓨터가 좋았다. 인문계의 적성을 가지고 있음에도 불구하고 컴퓨터 이외의 다른 전공을 생각해 본적이 없을 정도로 난 쭉 한길을 따라 달려왔다. 그리고 오래전부터 바라던 프로그래머(?)가 되었다. 이제 시작이라 프로그래머라기보다 코더에 가깝지만. 하고 싶었던 일을 직업으로 삼아 살아가고 있음에 항상 감사할 일이다.

입사서류 제출

나의 첫 직장이 될 곳의 본사를 들러 입사서류를 제출했다. 기술을 극대화 한다는 뜻을 가지고 있으며 이제 막 본격적인 성장을 시작하려는 회사. 전문연구요원이라는 특이사항 때문에 선택할 수 있는 직장의 스펙트럼이 그리 넓지 않았으나 고민의 커다란 줄기는 ‘대기업을 선택할 것인가?’, ‘내가 원하는 일을 할 수 있는 곳으로 갈 곳인가?’ 에 대한 것이였다. (대기업이 나를 뽑아줄 지는 의문이지만.)

여기저기 개발자의 애환이 들려오고 있긴 하지만, 프로그래머는 국민학교 시절부터 변하지 않은 나의 꿈이였다. 철저히 인문계적 적성(몇 번의 적성 테스트 결과)을 지닌 내가 자연계열을 선택하고 컴퓨터학부를 거쳐 대학원 전산과에서 공부하고 있는 이유는 컴퓨터가 좋아서였다. 지금까지의 모든 선택은 나의 의지대로 이루어졌고 다른 일은 언감생심 꿈도 꾸어지지 않는 것을 보면 프로그래머는 정말 내가 하고 싶었던 일이였다는 결론을 도출 할 수 있다.

그리하여 나는 소프트웨어 개발자가 되기로 하였고, 그 일을 할 수 있으면서 좋은 대우를 받을 수 있는 회사를 선택했다. 그리고 그 뒤로 다른 회사에는 전혀 관심을 가지지 않았다. 나의 선택에 확신이 있었기 때문. 그렇기에 나는 힘들지도 모르는(?) 회사 생활이 기대가 된다. 그 동안 좀처럼 찾을 수 없었던 열정을 불러오는 동기부여가 내 마음에 자리잡기를 희망하며.