이 책을 처음 접한건 한창 DDD를 공부할 때였다. 뭔가 설계라는 것을 제대로 해보고 싶어서 공부하던 때였는데, 그 때엔 아무런 경험도 없었다. 그러니 이 책을 읽어도 내용이 머릿속에 들어올 리가 만무했다. 그 때 당시에는 중요한 부분이랍시고 형광펜으로 줄을 그어놨는데, 지금 와서 보니 그렇게 중요한 내용은 아니었던 부분들이 많이 눈에 띄었다.
요즘 드는 생각은, 어쨌든 개발은 문제를 해결하는 일이다. 그러면 어떤 문제를 해결하는 방법론을 공부할 때, 내가 그 문제를 경험해보지 않으면 깨달음을 얻기가 힘들다는 것이다.
이론과 실전은 다르다. 개발은 실전이다. 개발의 유명한 고전서적들은 대개 문제를 해결하는 방법론에 대한 주제가 많다. 예를 들자면 리팩토링, 클린코드, 클린 아키텍처, 최근에 읽은 오브젝트(난 이 책이 고전서적의 반열에 올라가도 된다고 생각한다) 등 이런 책들은 모두 선배 개발자분들이 오랜 시간동안 개발을 하면서 느꼈던 점들, 어떻게 하면 더 개발자들이 편-안한 개발을 할 수 있을지 그 방법에 관한 책들이다.
그렇다면 일단 선배 개발자들이 해왔던 것들을 나도 경험을 해봐야 한다. 객체지향의 이론을 공부했다면 내 생각대로 직접 개발을 해보고, 문제를 만나고, 이걸 어떻게 해결할까 고민을 해보고 이런 과정들이 선행되고 난 뒤에 이 책들을 읽으면 내가 겪은 문제들을 이미 겪은 선배 개발자들이 어떻게 해결을 했는지 조언을 듣고, 그 분들이 많은 시간을 공들여 삽질해온 결과물들을 감사히 받아들이면 되는 것이다.
그 분들이 n년이 지나고서야 얻은 깨달음들을 공짜로 얻을 순 없다. 그 깨달음을 얻고자 한다면 나도 그만큼의 시간을 투자해야 된다. 그래도 결국 나는 이득이다. 그 분들의 n년을 나는 n개월만에 얻을 수 있기 때문이다.
결론은 이렇다.
앞으로 공부하고자 하는 개발 분야가 있다면, 그 분야의 전체 맥락을 살펴본다. 그리고 바로 코딩으로 내가 몸소 경험해보자. 그 뒤 겪었던 문제들을 정리하면서 책을 읽자.