제목에서 알 수 있듯, 이 책은 이론적인 얘기만 늘어놓는 수많은 책과는 다르다. 소프트웨어에 대해 이론적인 내용을 정리하는 것과 달리, 이렇게 실용적인 측면에서 소프트웨어의 핵심을 표현하는 것은 정말 어려운 일이다. 그 일을 해낸 저자에게 존경을 표한다.
소프트웨어 개발자들이 알아야 할 개발 문화부터 소프트웨어 개발의 전반적인 부분-개발 프로세스, 개발 도구, 관리 도구 등-까지 다루면서도, 교과서적인 딱딱함이 아니라 선배 개발자가 이야기를 들려주듯 재미있고 이해하기 쉬운 용어로 실 예를 들어가며 설명한다.
이론적인 주제인 알고리즘에 대해 소개하면서도 학문적 의무가 아닌, 실용적 측면에서의 필요성으로 접근한다. Windows, Unix, Shell, C, C++, Java, 개발 도구, 관리 도구 등의 구체적인 주제를 다룰 때조차도, 좋은 소프트웨어를 개발하기 위해 필요한 통찰(insight)을 준다.
이 책은 개발 분야를 막론하고 모든 소프트웨어 개발자가 읽어야 할 필독서다. 좋은 개발 문화를 정착시키는 데 밑거름이 될 책이다.
- 안철수 연구소 CTO 김익환
이 책이 번역되어 나온다는 얘기를 작년 이맘때쯤 아는 사람으로부터 들은 듯하다. 애착이 가는 책이니만큼 누가 어떻게 번역하고 있는지 그 동안 무척 궁금했다. 솔직히 말하자면, 걱정이 앞섰다. 그러다 얼마 전에 ‘추천의 글’을 써달라는 부탁을 받았다. 덕분에 원고를 받아서 두어 번 읽어볼 수 있는 기회가 있었는데, 그 동안 쓸데없는 걱정을 하고 있었음을 알게 되었다. 번역이 꽤 좋았다. 얼마나 정성을 들였는지 알만했다.
지금부터 실어 놓은 글은 작년에 내가 이 책을 추천하느라 쓴 글이다. 새 글로 이 책을 추천하고 싶어, 며칠 동안 맘고생을 해봤지만 앞서 쓴 글만 못했다. 내 글이 이 책의 값어치를 얼마나 잘 그려 보여줄런지 알 길은 없지만, 어쨌든 많은 분들이 이 책을 고를 때 주저하지 않기 바란다. 이 책은 경험과 지식이 많은 기술자든 아니면 초보 기술자든, 이 분야에 몸담은 사람이라면 꼭 한 번은 찬찬히 살펴 봐야할 책이다.
- 동명정보기술원 책임연구원 김재우
지금까지 필자가 읽었던 컴퓨터 책 중 최고의 책 한 권만을 꼽으라면 단연 본서 Pragmatic Programmer를 꼽을 것이다. 그만큼 필자의 프로그래밍 인생에 많은 영향을 주었고, 다시 매니저가 된 필자로 하여금 팀원들에게 영향을 끼치고 있기 때문이다.
프로그래밍의 세계에는 많은 이론들이 생겨나고, 저마다 혁신적인 방법론을 제창하기도 하며, 프로그래밍의 왕도에 대한 수많은 논란이 벌어지고 있다. 도대체 더 나은 소프트웨어를 만들려면 어떻게 해야 하는 것일까? 지금까지 우리는 구조적 프로그래밍, OOP, Generic 프로그래밍, 컴포넌트 기반 개발, 디자인 패턴, 리팩터링, Aspect Oriented Programming 등등 수많은 이론과 방법을 접하고 있으며, 앞으로도 새로운 이론들은 계속 나올 것으로 보인다. 하지만 이러한 많은 이론들이 추구하는바 더 나은 소프트웨어를 만드는 더 나은 방법의 공통 요소가 있는 것은 아닐까? 그런 것이 있다면 어떤 것일까?
본서는 그 공통요소에 대해 명쾌한 비유와 설명, 실용적인 예시로 필자의 궁금증을 풀어주었다. DRY나 직교화 같은 개념을 마음속으로 이해하고 나면 위에 예로 들었던 수많은 방법론들이 어떤 필요성에서 출발해서 왜 이런 형태로 존재하고, 또 앞으로는 어떻게 나아갈 것인지에 대한 통찰을 얻을 수 있다. 깨진 창문이나 삶은 개구리 같은 식의비유를 통해서 팀원들 간 이해의 공감대를 넓힌 것은 정말 가치 있는 일이었다.
필자의 회사에서는 새로운 팀원을 채용하기 전에, 지원자에게 Pragmatic Programmer를 면접보기 전에 읽고 올 것을 요구하고 있다. 안 읽고 온 사람에게는 책에 있는 것과 똑같은 얘기를 회사에서 해줘야 하기 때문이다.
늦은 감이 있지만 이러한 명저가 한국어로 출간된다는 점에 대해 너무나도 다행스럽게 생각하며, 독자 여러분도 깨달음의 기쁨을 공유할 수 있기를 기원한다.
IMC게임즈 프로듀서 김학규