실용주의 프로그래머 (The Pragmatic Programmer)

The Pragmatic Programmer: From Journeyman to Master

pp_eng.jpg

Andrew Hunt, David Thomas
김창준, 정지호 옮김
인사이트

실용주의 프로그래머는 컴퓨터 과학의 기본 원리(이론)와 실제 프로젝트 수행을 통한 경험(실천)을 조화시켜 효율적이고 생산성 높은 작업을 할 수 있는 프로그래머다.

이 책은 프로그래밍과 관련된 다양한 분야의 지식과 경험을 통해 실용주의 프로그래머가 갖추어야 할 자질과 마인드를 70가지의 팁과 위트 있는 예제와 및 비유로 제시하고 있다.

1장 실용주의 철학에서는 실용주의 프로그래머가 프로젝트에 임하는 자세나 생각하는 방식에 대해 언급한다.
* 자신의 기술 (Craft)에 관심과 애정을 가진다 / 새로운 것에 빨리 적응한다 / 캐묻기 좋아한다 / 비판적인 사고의 소유자 / 현실적 / 다방면의 기술에 익숙하다 / 학습을 습관으로 삼고 지식 포트폴리오를 관리한다

2장 실용주의 접근법에서는 보다 구체적인 실용주의 방법론들을 제시한다.
* DRY(Don’t Repeat Yourself) 원칙이나 확장성 및 재사용성을 고려한 설계, 독립적인 컴포넌트 설계

3장 기본적인 도구는 실용주의 프로그래머가 사용할 수 있는 다양한 도구에 대한 관점을 담고 있다.
* 명령어 셸을 익히고, 에디터에 능통하고, 소스코드 관리 시스템을 사용하고, 텍스트 처리언어를 익히고, 코드생성기를 사용하라

4장 실용주의 편집증에서는 완벽한 소프트웨어는 불가능하다는 사실을 인지하고 에러와 오작동으로부터 프로그램과 사용자를 보호하는 방법에 대해 언급한다.

5장 구부러지거나 부러지거나에서는 지속적으로 개선 가능한 유연한 코드를 만들기 위한 팁을 제공한다.
* 모듈간의 결합도를 최소화하고, 메타프로그래밍을 통해 통합보다는 설정옵션을 활용하며(코드에는 추상화를, 메타데이터에는 세부 내용을), 동시성과 독립성을 고려하여 설계하라

6장 코딩하는 동안 해야 할 일들에서는 우연에 맡기는 프로그래밍을 지양하고 알고리즘과 함수를 지속적으로 테스트하고 리팩터링하라고 강조한다. 또한 마법사가 자동생성한 코드는 피하라고 말한다.

7장 프로젝트 전에에서는 프로젝트를 시작할 때 고려해야 할 기본원칙을 다룬다.

8장 실용주의 프로젝트에서는 프로젝트 차원에서 성패를 좌우하는 핵심부분에 대한 통찰을 제시한다.
* 형식의 노예가 되지 말고 명세의 나선에 빠져 코딩을 시작도 못하는 일이 없도록 하라. 수작업 절차를 피하고 테스트를 보다 일찍, 자주, 자동으로, 정교하게, 극한상황에서 수행하라. 문서는 나중에 추가하는 것이 아니라 애초부터 하나의 프로그래밍 언어를 다루듯 프로젝트의 일부가 되도록 작성하라.

이 책에 대한 서평 대부분에 들어 있는 표현 – ‘프로그래머라면 누구나 한번쯤은 읽어야 하는 책이다’
식상한 표현이 되어버린 감도 없지는 않지만, 정말 맞는 말이다.

단순히 프로그래밍 언어를 쓸 줄 아는 수준(Journeyman)에서 프로그래밍을 통해 무언가를 창조해 내는 수준 (Master)으로 독자의 자질과 시야를 향상시켜 주는 책이다. (부제: From Journeyman to Master)

워낙 유명한 책이라는 말을 듣고 읽게 된 측면이 커서 그런지 앞부분을 읽으면서는 다소 진부한 느낌도 있었다. 누구나 할 수 있는 정신교육을 하는구나 하는 느낌이 들었던 것이 사실이다.

그러나 2장에 접어들고, 이 책의 정수라 할 수 있는 주옥 같은 실질적인 팁들이 제시되자, 생각이 바뀌었다. 이 책이 다루고 있는 광범위한 분야의 팁을 모두 이해할 수는 없었지만 하나하나 버릴 것 없는 조언이었다. 알고 있고 하고 있는 것에 대해서는 다시 한 번 점검을 하고 발전가능성을 생각하게 되었고, 알고 있으나 하고 있지 않은 것에 대해서는 스스로의 게으름에 부끄러워했다. 모르고 있는 것들에 대해서는 지식 포만감과 수집욕을 느끼면서 추가적으로 찾아볼 것들, 읽을 책들을 정리하는 기쁨이 있었다.

번역서를 웬만하면 안 읽으려고 생각했는데, 기대 이상으로 번역은 만족스러웠다. 워낙 SW Engineering 분야에서 유명하다는 김창준씨의 단순 번역가 이상의 꼼꼼하고 자세한 번역이 인상적이었고, 역주에 제시된 다양한 정보와 책 뒷면 부록의 저자 인터뷰도 좋았다. 이 책을 정말 좋아하고 제대로 읽은 사람이 번역을 했다는 느낌이 들었다. 물론 처음에는 번역이 너무 ‘적극적’인 느낌이 들어 반감도 들었지만 말이다.

인사이트의 책 라인업이 맘에 드는 요즘이다. 제본도 고급스럽게 잘 된 것 같고, 편집도 깔끔하다.

이 책을 소장해야 할까 원서를 소장할까 반신반의 하면서 샀던 것이 사실이다. (소장은 이미 전제된 것이지만..) 전철을 오가면서 놓치기 아까워 여러 페이지를 접어놓기까지 한 것을 보면 간만에 책 읽는 즐거움과 동시에 도전의식을 준 책이 아니었나 하는 생각이 든다. (AB형은 책을 고이고이 아껴서 본다고들 하던데..) 이 책을 통해 앞으로 읽을 책 목록이 기하급수적으로 늘어나 버린 점은 고마우면서도 한편으로 원망스럽다.

Author: mcpanic

어떻게 하면 보다 사람냄새 나는 기술을 만들 수 있을까 고민하는 Human-Computer Interaction (HCI) 연구자 / 컴퓨터과학자 / 새내기 조교수