본문 바로가기
나의 서재

[책]실용주의 프로그래머

by esstory 2007. 10. 5.

실용주의 프로그래머 - 10점
앤드류 헌트 외 지음, 김창준 외 옮김/인사이트


딱히 서평을 남길 필요가 없을 정도로 너무나 유명하고 좋은 책이어서 블로그에 글 쓰기가 조금 망설여 지네요

프로그램 관련 일을 하는 사람이라면 누구나 이 책을 읽고 마음 한 구석이 꽉 차 오르지 않는 사람이 없을 거라 확신합니다.

 

책 뒷면에 보면 이미 이 책을 먼저 읽은 선배들의 감동을 알 수 있습니다.

저녁식사 후 읽기 시작한 이 책을 놓지 못하고 줄을 쳐가며 읽다 새벽 4시가 돼서야 뿌듯한 마음으로 쓰러지듯이 잠들 수 있었다. 도대체 줄을 치지 않은 곳이 어디인가?
- 오픈소스놀리지 대표 이만용

책과의 인연은 2번째입니다.  거의 다 읽어가던 책을 도서관에서 분실하고 한참 만에 이 책의 내용이 그리워 다시 구입한 책이거든요.

그만큼 책의 내용은 읽고 또 읽고 할 만한 가치가 충분히 있습니다.

책 어디 한군데 중요하지 않은 부분이 없지만 아래 부분들은 특히 마음에 와 닿았습니다.

 

소프트웨어 엔트로피(p 34)

깨진 창문에 대한 얘기가 나옵니다. 잘못된 코드, 설계 등을 발견할 경우 그대로 두지 말고 바로 고치지 않을 경우 훗날 큰 대가를 지불해야 한다는 내용입니다.

 

지식 포트폴리오(p49)

매년 새로운 언어를 하나씩 배우고, 책을 읽고, 새로운 것에 도전하라는 내용이 나옵니다. 평생을 거쳐 공부하라는 내용인데, 알면서도 지켜지지 않는 부분이라 다시 한번 되새기게 되더군요

 

중복의 해악(p65)

이 책을 떠올릴 때 가장 먼저 생각나는 단어는 DRY – 반복하지 마라(Don’t Repeat Yourself) 입니다. 이 단원 이후에도 책의 구석구석에 DRY 원칙을 강요하고 있습니다. 서버와 클라이언트로 나뉘어 져 있을 경우 서로 다른 OS, 컴파일러 때문에 동일한 헤더를 각기 따로 선언해서 사용하는 경우가 많은데, 그러한 부분까지 자동화를 통한 코드 생성으로 중복을 피하라고 이야기합니다. 어찌 보면 심하다 싶을 정도로 코드의 중복을 제거하는데 많은 노하우를 전달하지만, 그만큼 프로젝트를 진행하면서 중요하게 다가오더군요. 얼마 전 제 블로그에 쓴 프로그래밍 이야기 - DRY 원칙을 지키고 있습니까?” 글도 현실에서 겪는 코드 중복의 문제를 기록했더랬습니다.

 

도메인언어(p110)

다양한 언어를 사용해서 명세, 데이터, 흐름을 제어할 수 있는 명령어를 지원하라고 얘기합니다. 저희 회사의 경우에도 프로그램 내부에 Visual Basic Script 기반 내장 Script 를 지원하고 있는데, 책에는 보다 더 세밀한 부분까지 제어할 수 있는 언어를 만들거나 활용하라고 조언해 주고 있습니다.

 

디버깅(p157)

디버깅을 직면하는 초보 개발자들의 심리적인 상황과 이를 극복하는 얘기를 하고 있습니다. 버그를 발견했을 때 늘 겪는 일들이고, 이를 해결하는 방법도 상당부분 제가 생각하는 부분과 맞닿아 있어 기분이 좋았습니다. 이전 포스트 중 디버그 이야기 – 비정상종료” 부분도 일맥상통한 내용입니다.

 

 

텍스트 처리(p169)

텍스트 데이터를 자유롭게 다룰 수 있도록 루비와 같은 언어를 익혀야 한다고 강조하고 있습니다.

이런 언어를 이용해서 재빨리 간단한 유틸리티를 만들 수 있고, 머리 속의 생각들을 담을 수 있는 프로그램도 할 수 있기 때문에 많은 생산성 향상을 가져다 줄 수 있다네요. 이 단원을 읽으면서 루비를 배워야겠다는 다짐을 했는데 아직도 실천에 옮기지 못했습니다.

 

코드 생성기(p175)

수동으로 또는 자동으로 코드를 만드는 코드 생성기를 설명합니다. 처음 만드는데 얼마간의 시간이 투자되어야겠지만, 일단 만들고 나면 큰 프로젝트의 경우 많은 시간절약을 가져올 수 있고, DRY 원칙을 지킬 수 있는 장점이 있습니다.

 

결합도 줄이기와 디미터법칙(p227)

디미터법칙은 한 객체가 제공하는 메서드에 접근하기 위해 또 다른 객체들을 통하는 것을 허용하지 않습니다. 이 법칙을 사용하면, 모듈간의 종속성을 최소한으로 줄일 수 있어 향후 유지보수에 많은 이점이 있습니다. 물론 종속성을 줄이기 위해 Direct 접근을 막다 보면, 수많은 위임함수 때문에 코딩 량이 늘어나는 단점이 있을 수도 있지만, 인터페이스 기반의 COM 이나 기타 잘 짜여진 코드를 보면 대부분 철저하게 디미터 법칙을 잘 따르고 있음을 알 수 있습니다.

 

메타프로그래밍(p27)

프로그램의 모든 항목을 동적으로 설정할 수 있도록 프로그램 할 것을 설명합니다. 간단한 배경색부터 알고리듬이나 사용할 데이터베이스 제품까지(이건 좀 오버인 듯 하지만) 모두 설정으로 간단하게 변경할 수 있도록 프로그램 하라는 얘기입니다. 물론, 이렇게 하기가 결코 쉬워 보이지는 않게 때문에 각론에서는 일부 반대의견도 있지만, 총론에서는 저도 동의할 수 밖에 없네요

 

요구사항의 구렁텅이(p319)

아래 인용구 외 더 무슨 말이 필요할까요 ^^;

완성이라는 것은 더 이상 더할 것이 없을 때가 아니라, 더 이상 빼낼 것이 없을 때 얻게 되는 것이다.

-       생텍쥐페리, 바람과 모래의 별들 1939

그 외에도 정말 너무나 많은 좋은 내용들이 책에 담겨 있습니다.

이 책의 다른 좋은 장점은 책이 무거워 지하철에서 들고 읽으면 팔뚝이 굵어진다는 점입니다. ^^;;

 

 

사용자 삽입 이미지


Daum 블로거뉴스에서 이 포스트를 추천해주세요. [추천]


댓글