실용주의 프로그래머 프로그램 프로그래밍 프로그래머 2
앤드류 헌트 외 지음, 김창준 외 옮김 / 인사이트 / 2005년 8월
평점 :
구판절판


최근에 개발 방법론 및 소프트웨어 개발에 관한 책을 여러권 읽는데, 그 중 가장 탁월하고, 반드시 읽어봐야할 책이라고 생각되는 책이다. 애자일 프로그래밍, 익스트림 프로그래밍 등 다양한 방법론과 철학을 다루는 책들이 나오고 있는데, 가장 교과서적이고 기본적이면서 중요한 책이라고 생각된다. 무엇을 하든 기본이 중요하다고 생각한다. 그런 점에서 이 책은 소프트웨어 개발의 ABC를 다루고 있다.  

기본이 중요하지만 기본이 쉬운것만은 아니다. 오히려 기본은 최고수가 될 수록 심오해지는 그런 것이라고 생각한다. 골프의 지존들도 결국은 기본에 대해서 이야기하는 것을 봐도 그렇고, 모든 일의 기본이 쉽지만은 않고, 알면 알 수록 더 심오함을 가지게된다고 생각한다. 이 책도 소프트웨어 개발의 그런면을 다루고 있다. 

솜씨 좋은 목공수는 다양한 도구를 다루어서 솜씨 좋게 목공예품을 만들어낸다. 이 책은 소프트웨어 개발할 때 필요한 다양한 도구에 대해서도 이야기하고 있고, 특정한 도구에 종속되기보다는 상황에 맞도록 도구를 활용할 줄 알며, 단지 이론적으로 도구를 언급하기보다는 도구를 마치 자신의 몸의 연장처럼 활용하는 것에 대해서 이야기하고 있다. 그리고, 솜씨 좋은 목수는 자기 자신을 위한 도구를 만들줄 안다. 이런 식으로 스스로 코드 생성기를 만들고 그것을 활용하는 것에 대해서도 설명하고 있다.

너무 주옥 같은 내용이 많은데, 깊이가 있으면서도 실용적이다. 이를테면, 많은 애자일 프로그래밍 책에서는 비가역적인 결정을 늦추라고 말하고, 성급한 결정으로 돌이킬 수 없는 비용을 치루는 상황과 그 해결책을 이야기하지만 그 구체성에 대해서는 다소 설명이 부족한 느낌이다. 이 책에서는 가역성이란 장에서 구체적인 방법을 이야기하고 있다. 특히, 특정한 벤더 제품에 대해서 의존도가 문제가 될 것 같으면, 특정 벤더제품을 쓰기로 결정하기 보다는 추상화한 인터페이스를 통해서 일단 특정 벤더제품을 쓰도록 한 상태에서 인터페이스를 통해서 구현을 해 놓으면 나중에 벤더가 바뀌었을때 특정한 코드부분만 수정하면 된다는 설명을 한다. 그 근저에는 직교성,  DRY원리, 결합도 줄이기, 메타데이터 사용하기 등이 놓여있다. 

이 책에서 제시하고 있는 다양한 아이디어와 그 실행코드예제 등을 따라가면 고개를 절로 끄덕이게 된다. 마치 솜씨 좋은 목수가 만든 제품을 보며 감탄하듯이, 소프트웨어 개발이 이런 수준의 노력과 정교함이 필요하다는 생각에 아름다움마져 느끼게 된다. 

뒤의 부록에서는 최근의 소프트웨어 개발언어, 개발툴인 루비온레일즈에 대해서 소개하고 있는데, 그런 부분도 흥미롭다. 리뷰어역시 1990년대후반에 자바 개발자로써 나름대로 많은 성과를 내었다고 생각했는데, 시간은 흘러서 어느덧 10년이 지났는데, 그간 소프트웨어 업계에서 정말 많은 진보가 있었다는 생각이 들었다. 그 진보의 결과물은 생산성이 아닐까 싶다. 앞으로도 관심있게 소프트웨어 개발관련한 책들을 읽어봐야겠다는 생각이 들었다.


댓글(0) 먼댓글(0) 좋아요(2)
좋아요
북마크하기찜하기 thankstoThanksTo