최근 출퇴근 길에 “Coders at Work”의 eBook을 읽고 있다. 거의 내 맘대로 순서를 정해서 보고있는데, 오늘 출근 길에 읽은 Peter Norvig ((피터 노빅은 현재 Google의 연구 디렉터(Director of Research)다.)) 의 인터뷰 중에, 어떻게 프로그램을 짜는게 좋은가에 관한게 나온다.
이 이하의 인용은 Norvig 이 인터뷰한 내용. 모든 저작권은 Seibel 및 출판사에 있다.
Norvig: I thik one of the most important things is being able to keep everythin in your head at once. If you can do that you have a much better chance of being successful. That makes a small program easier. For a bigger problem, you need extra tools to be able to handle that. It’s also import to know what you’re doing. When I wrote my Sudoku solver, some bloggers commented on that. They said, “Look at the contrast – here’s Norvig’s Sudoku thing and then there’s this other guy, whose name I’ve fogottent, one of these test-driven design gurus. He starts off and he says, “Well, I’m going to do Sudoku and I’m going to have this class and first thing I’m going to do is write a bunch of tests.” But then he never got anywhere. Hehad five different blog posts and in each on he wrote a little bit more and wrote lots of tests but he never got anything working because he didn’t know how to solve problem.
한 TDD 구루와 자신이 작성한 수도쿠 솔버를 가지고 벌어진 논쟁에 대한 언급. ((이 논쟁글은 Learning from Sudoku solver, How to not solve a sudoku, Solving Sudoku with TDD 에 있다. 여기서 피터 노빅이 이름을 기억하지 못한다는 TDD 구르는 론 제프리스(Ron Jeffries)로, XP의 창안자 중 한 명이며, XP installed의 저자다.)) 피터 노빅이 보기에 가장 중요한 것은 모든 것을 한 번에 머릿속에서 굴리는 것, 그리고 자신이 뭘 하고 있는지를 아는 것. 그래서 TDD 가 도구가 아니라 목적이 되면 – 즉 테스트에 너무 집착하면 – 정작 해야하는 일, 문제 풀이에 집중하지 않게 되고 원하는 결과를 얻지 못할 수도 있다는 것.
물론 TDD 자체에 대한 반감은 아니라고 언급한다.
Then bloggers were arguing back and forth about what this means. I don’t think it means much of anything – I think test-driven design is great. I do that a lot more than I used to do. But you can test all you want and if you don’t know how to approach the problem, you’re not going to get a solution.
내 생각에도, 모든 소프트웨어 공학툴이 어떤 은탄환이 아니듯, TDD 역시 하나의 도구일 뿐이다. 도구가 강력하다고 모든 문제를 해결해주는 것이 아니니, 결국 우리가 해야하는 일은 “문제를 풀 수 있도록 자신을 갈고 닦는 일도 병행”하는 수 밖에 없다. 즉, 좋은 도구니까 잘 쓰면 좋을게다. 여기에 집착만 하지 않으면…
PS. Coders at work를 읽고나서 나랑 비슷한 글을 쓴 사람들이 꽤 있다.
피터 아저씨는 제가 존경해 마지않는 분입니다. 전세계적으로 사용되는 AI 교과서를 집필하신 분이기도 하죠. 그나저나 Coders at work 어떤가요? Practical Common Lisp는 감명깊게 읽었는데 이 책은 어떨지 궁금하네요.
Peter Norvig AI 책은 좀 많이 유명하죠(…)
Coders at work는 ** at work 씨리즈가 그렇듯 인터뷰 모음집입니다. 인터뷰 대상마다 생각도 다르고, 결론(?)도 다르고, 어느 정도 에세이 같은 느낌으로 읽었습니다. 프로그래밍 책이랑은 좀 다르겠지만, 추천하는 유명 프로그래머들이 많은 걸로 봐선 괜찮은 책인듯 합니다.(아마존 별점도 그렇고…)
TDD에 대한 견해에는 심히 공감. 세상에 은탄환 따위 없…
네 그런거 없죠. 좋은 아이디어가 있을 순 있겠지만, 아마도 은탄환 따위는 없음…
Test가 도구가 아닌 목적이 되면, 문제 풀이에 집중못할수도 있다는 부분에 한대 맞은듯하군요.
“본질”에 집중하는게 역시 중요한 듯 합니다. ~_~