개발자들에 대한 충고가 가득한 책이다. 이런 저런 좋은 조언을 해줄 수 있는 사람이 있다면 ‘근사한 복’중에 하나일 것이다. 없다면 이 책으로 그 ‘근사한 복’을 받아도 될 듯하다.

liveprogrammer

특히 테스트(TDD)에 대한 좋은 충고가 많다.

실수는 몰라서 저지르는 것이 아니라 알면서도 저지르는 일을 말한다. 그러므로 경험으로 배워 다시는 발생하지 않는 것이 아니라, 앞으로도 계속 일어난다. 자주 발생하는 개발 오류를 정리해서 교육시켰으니 다시는 같은 문제가 안 생길 거라며 기뻐하던 분을 본 적이 있다. 당연하고도 슬픈 결과지만, 그분의 희망은 이루어지지 않았다.

다시 힘주어 말하지만, 실수는 몰라서 저지르는 것이 아니라, 알고도 저지르는 것이다. 그렇기에 실수인 것이고, 그러므로 예방이 아닌 발생 즉시 발견하는 것이 유일한 해결책이다. 그리고 그것을 가능하게 해주는 것이 바로 테스트이다. 결국 테스트를 작성하지 않겠다는 것은 복잡도가 낮은 프로젝트 초기에 비용을 조금 절약하고, 프로젝트 후반에 비싼 대가를 지불하겠다는 의미이다.

TDD를 배우면서 프로젝트에 적용하는데 100% 코드커버리지는 못하고 있다. 다만, 필요한 기능과 생각한 로직을 테스트하는데 상당히 도움이 된다. 조금씩 한발 한발 나아가는 것이 중요하다고 본다. 핵심은 TDD를 몰랐을 때와 알고 조금씩 시행하는 것의 차이는 생각보다 크다.

다음 충고도 유용하다.

5년후에 팀장이 되겠다. 10년후에는 상무가 되겠다. 이런 식의 커리어 패스는 무의미하다. 멀리보고 프로그래머로써 자신의 하고자 하는 업무 방향과 맞도록 경력을 계획하고 관리해야 한다.

새로운 지식을 습득할 때도 이런 계획에 기반을 두어야 한다. 시류나 유행을 쫒아 이 기술, 저 기술을 기웃거릴 것이 아니라, 주류기술은 아니지만, 미래에 크게 각광 받을 수 있거나, 틈새 시장에서 중요하게 작용할 가능성이 있는 기술에도 계획을 갖고 시간과 에너지를 투자하는 지혜가 필요하다. 커리어 패스는 누가 대신 방향을 잡아 주는 것이 아니라, 스스로 개척하는 것이다.

옳은 말이다. 하지만 개발자는 때로는 시류에 관심을 가질 필요도 있다고 본다. 앞으로 어떤게 더 유용하겠다는 판단도 할 필요가 있고, 그것을 미리 준비하는 자와 아닌 사람의 차이는 상당히 클 것이라고 생각된다. 미래를 예측하는 것은 인간으로서는 거의 불가능하다. 그렇기 때문에 일단 배우는 것이 즐겁다면 해볼 가치는 있다고 판단된다. 항상 그렇듯 변화의 선봉에 있는 사람은 고되지만, 그 열매는 가장 크고, 늦을 수록 그 열매는 매우 작아진다.

책 전반적으로 개발자들에 대한 좋은 충고가 많이 있다. 동료나 후배들에게 권해주고 싶은 책이다.