
원조. 뭔 말이 더 필요할까? 읽기가 딱딱해서 그렇지 사실 여기 있는 내용을 이해하기 쉽게 풀어놓은 책이 태반이다. 결국 그 말은 이 책에 있는 내용 이상을 쓴 책이 잘 없다는 뜻. 다른 책을 먼저 읽다가 "아~ 이런 시각을 가질 수 있구나!"라고 생각한 항목이 몇 개 있었는데, 이 책에 있는 내용이다. 아 좀 허탈.
꽤 오래전에 책을 샀는데, 드디어 한 번 제대로 읽었다. 옛날엔 읽다가 무슨 얘기인지 이해가 안 돼서 도중에 접어 버렸는데, 경력이 쌓이니 이제야 어떤 얘기를 책에서 하고자 하는지 알겠다. 그래도 발전이 좀 있었네.
명서. 책이 어려워 쉽게 설명한 다른 책을 먼저 읽겠지만 결국 이 책으로 돌아오게 된다.

스크럼. 듣기는 많이 들었는데, 제대로 개념이 안 잡혀 있었다. 도서관을 기웃거리다가 냉큼 집어 든 책. 지금 아니면 우선순위에서 밀려 못 읽을 것 같더라. 요즘 날도 덥고 비도 많이 와서 자전거로 출퇴근을 못해 지하철에서 읽을 책이 필요했는데, 마침 잘 됐다.
스크럼을 이 책에서 처음 접하는 게 아니라 놀랍지는 않았다. 귀동냥만 해서 엉클어져 있는 개념을 교통정리하는 기분으로 읽었다. 스크럼이란 단어를 이 책에서 처음 봤다면 기존에 내가 알고 있던 소프트웨어 개발 방식과 너무 달라서 꽤나 충격을 받았을지도 모른다.
방법론 하면 결국 '사람이 제일 중요하다'는 말을 꼭 듣게 된다. 이걸 반대하는 사람은 아마 없을 텐데, 방법론에 너무 치중해 이걸 깜빡하곤 하는 게 문제다. 모두가 다 알고 있는데, 잘 잊는 진리.

내공이나 디자인 패턴에 대한 지식 없이 'GoF 디자인 패턴'을 처음부터 읽어서 이해하기는 힘들다. 그래서 GoF 디자인 패턴에 나온 패턴을 이해하기 쉽게 풀어놓은 책을 골라서 먼저 읽는다. 이 책도 그런 책 중의 하나다.
디자인 패턴을 사용해서 우아하게 문제를 해결하기에 앞서 하나를 변경하려면 사방팔방을 다 들쑤셔야 하는 나쁜 해결방법부터 보여주는 게 좋다. '프로그래밍 면접 이렇게 준비한다'에서 O(n^2) 답을 먼저 제시하고 개선해서 O(logn) 혹은 O(n)으로 문제를 해결하는 게 좋았는데, 이 책에서도 이런 접근 방법을 보여줘서 좋았다.
그리고 제목 그대로 C++을 사용해 예제 코드를 짰다. Java로 예제를 짠 책들이 넘쳐나는데, C++을 주로 사용하는 프로그래머에겐 반가운 일이다. 허나 그냥 소스 코드를 C++ 문법에 맞춰 짠 것에 지나지 않는다. C++ 구현 이슈를 하나도 다루지 않는다. 명색이 책 이름에 C++을 붙였는데도 말이다. 아무리 언어 스팩에 멀티 쓰레드가 포함이 안 됐다고는 하나 멀티 쓰레드 환경에서 싱글톤을 다루지 않은 건 이해가 안 된다.
겹치는 예제도 있고 'GoF 디자인 패턴'에 나온 내용을 그대로 붙인 것도 많이 보인다. 원조인 책이 분명히 있고 그걸 쉽게 이해하기 위한 책이라서 이런 부분은 어쩔 수 없다고는 생각한다. 하지만, 이 책을 보는 사람은 'GoF 디자인 패턴' 책을 본다고 가정하고 이해하는 데 필요한 지식을 풀어서 설명하면 어땠을까 하는 아쉬움이 남는다.
평가가 좋은데, 나는 마음에 안 들었다. 포지션이 애매하다. 디자인 패턴을 처음 접하는 사람에게는 이 책보다는 'Head First Design Patterns'가 더 낫다. 아님 헤드 퍼스트보다는 수준이 높은 책을 원한다면 '실전 코드로 배우는 실용주의 디자인 패턴'이 낫다. 자바를 못해서 C++로 된 이책을 사는 거라면 말리고 싶다. 자바로 된 정말 좋은 책들이 많다. 언어 때문에 그런 책들을 포기하는 건 너무 아까운 일. C++을 배웠다면 책을 읽을 정도만큼만 자바를 배우는 건 그리 어렵지 않다.