얼마 전에 보안팀 팀장님으로부터 소프트웨어 테스팅에 대한 세미나를 들은 적이 있었다. 테스팅 방법론 뿐만 아니라 여러가지 이슈에 대해서 이야기를 나눌 기회가 있었는데, 그 때 팀장님께서 수차례 언급하셨던 책이 바로 "실용주의 프로그래머"였다. 그리하여 11월에 전략적으로 이 책을 공부하게 되었고 이번 주말에 일독을 끝냈다.
몇 만줄이 넘는 소프트웨어를 작성하다보니, 큰 프로젝트를 여러명이 함께 진행할 때, 안전하고 효과적인 방법에 대한 고민을 하게 된다. 또 언젠가 팀장이 퇴어 프로젝트를 책임지고 진행해야 하는 위치에 서게 되면, 물론 경험이 어느정도의 역량을 쌓아주겠지만, 팀장이 되기 위한 별도의 공부가 필요할 것 같았다.
워낙 좋은 평이 많은 이 책은 소프트웨어 개발자라면 반드시 일독을 권하고 싶을 정도로 알찬 내용을 담고 있다. 어느정도의 개발경력이 있다면 아마 읽는 내내 무릎을 탁 치게 될 것이다. 이 책에서 말하는 실용주의 프로그래머의 핵심은 한마디로 "빈틈없는 꼼꼼한 개발"이라고 본다.
한가지 중요한 이슈를 소개하자면, 책에서는 수차례 테스트의 중요성에 대해서 강조하고, 프로젝트의 대부분의 과정을 자동화하라고 권고하고 있다. 자동화된 회귀테스트가 소프트웨어의 신뢰성을 보장한다는 것이다. '예전에 되었던 것이 도대체 왜 지금 안되나?' 라는 답답함을 토로해본 경험이 있는 개발자라면, 이 책을 읽고 테스트의 중요성을 깨닫기 바란다.
테스트는 이 책에서 말하는 실용주의 프로그래밍 기법의 일부분일 뿐이다. 총 45가지 주제를 가지고 개발자에게 흥미롭고 유익한 이야기를 전달하고 있으니 개발자라면 꼭 한번 읽어보시라.
어렸을 때 우리집은 가난했지만 부모님께서는 항상 나에게 좋은 교육기회를 제공하기 위해 애쓰셨다. 덕분에 나는 국민학교 시절부터 집에서 컴퓨터를 가지고 놀 수 있었다. 처음 컴퓨터를 살 때 아버지께서 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도 못쓰던 시절 리눅스는 그저 설치가 전부였다.
나는 처음부터 컴퓨터가 좋았다. 인문계의 적성을 가지고 있음에도 불구하고 컴퓨터 이외의 다른 전공을 생각해 본적이 없을 정도로 난 쭉 한길을 따라 달려왔다. 그리고 오래전부터 바라던 프로그래머(?)가 되었다. 이제 시작이라 프로그래머라기보다 코더에 가깝지만. 하고 싶었던 일을 직업으로 삼아 살아가고 있음에 항상 감사할 일이다.