Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

책 이야기 #6 - 프로그램은 왜 실패하는가? Why Programs Fail? 본문

Book

책 이야기 #6 - 프로그램은 왜 실패하는가? Why Programs Fail?

naggingmachine 2007. 1. 24. 12:28


이 글은 이 책의 역자이신 류광님으로부터 부탁을 받아 작성한 추천사입니다. 정말 좋은 책인데, 강컴에서 인기도 많아 흐믓해하고 있습니다. ^^ (이미지를 클릭하시면 구매 페이지로 이동합니다) 또한 이와 관련해서 다음달 2월 12일에 INETA 세미나를 개최합니다. 많은 분들의 참여 부탁드립니다.


추천사

'왜 프로그램이 실패할까?' 이 책의 제목이기도 한 이 문구는 소프트웨어 개발자들의 수명을 단축시키는 가장 큰 요인 중의 하나일 것이다. 많은 소프트웨어 개발자가 하루에도 수없이 되뇌이는 말이자, 그에 대한 답을 스스로 찾아내야 하는 고난의 시작을 알리는 신호탄이기도 하다. 하지만 이 책의 제목은 많은 사람들의 관심을 끌기 위한 일명 '낚시(trolling)'용일뿐, 실제로 저자가 하고자 했던 핵심적인 말은 부제로 사용된 '시스템적인 디버깅을 위한 지침서(A Guide to Systematic Debugging)'라고 생각한다. 디버깅 관련 컨퍼런스를 진행하거나 컨설팅을 해보면 쉽게 해결할 수 있는 문제를 몇일 동안 고생하고도 해결하지 못하는 개발자들을 심심찮게 만날 수 있다. 조금만 더 '시스템적'으로 접근했다면 나의 도움 없이도 쉽게 해결할 수 있지 않았을까라는 생각을 많이 하게 된다. 그렇다면 과연 시스템적인 디버깅이란 과연 무엇을 말하는 것일까? 결론부터 말하자면, 이 책에서 그 답을 얻을 수 있다.

오늘날에는 소프트웨어를 아무런 계획이나 절차 없이 개발하는 경우는 드물다. 왜? 실패할 확률이 높기 때문이다. 우리의 선배 개발자, 그 선배의 선배 개발자들이 맨땅에 헤딩하기 식으로 프로젝트를 진행하면서 얼마나 많은 프로젝트를 실패했는가? 자신을 스스로 소프트웨어 개발자라고 부르는 사람이라면, 소프트웨어를 개발하기 위해서 적어도 '요구 사항 분석 - 설계 - 개발 - 테스트 - 유지 보수' 단계가 필요하다는 것쯤은 다 알고 있을 것이다. 자, 그럼 디버깅을 잘하기 위해서는 어떻게 해야 할까? 오류가 난 부분에 중단점(BreakPoint)을 설정하고 하나씩 따라가 보는가? 반복문에서 오류가 발생하면 '작거나 같다(<=)'를 '작다(<)' 또는 '크다(>)'로 바꿔보며 문제를 해결하고 있지는 않는가? 만약 그렇다면, 여러분은 디버깅 프로세스를 학습할 필요가 있다. 이 책은 내용 구성 자체가 디버깅 프로세스를 따르고 있다.

상식적으로 생각해보자. 문제가 발생하면 그 문제가 무엇인지부터 알아내야 한다. 문제가 무엇인지도 모르면서 문제를 해결한다는 것은 어불성설(語不成說)이다. 그렇기에 2장의 제목처럼 '문제점 추적' 과정을 거쳐야 한다. 문제를 해결하기 위해서는 문제를 계속해서 만들어 낼 수 있어야 한다. 문제가 무작위로 발생해서는 문제를 해결할 수 없다. 언제 발생할지도 모르는 문제를 어떻게 해결했다고 할 수 있겠는가? 따라서 4장의 '문제점 재현' 과정이 필요한 것이다. 많은 개발자들은 문제점 재현 과정을 생략하기도 한다. 대부분의 문제는 '언제나' 발생하니까. 하지만 우리가 밤을 지새우고 괴로움에 몸이 지치는 이유는 언제나 발생하는 문제점이 아니라 특정한 상황에서만 발생하는 문제점이기 때문에 문제점의 무작위적인 특성을 없애야만 문제점을 쉽게 해결할 수 있다. 그 다음으로는 실제로 문제점을 해결하는 과정이 필요한데, 자세한 내용은 여러분이 직접 책을 읽어보면서 배웠으면 한다. (영화 예고편에 가장 중요한 내용, 심지어는 결론까지 모든 내용을 다 소개하는 TV 프로가 가장 얄밉다)

나는 번역서가 나오기 전에 이미 이 책을 읽어보았고 주위의 많은 사람들에게 추천을 했다. 그만큼 이 책의 내용이 만족스러웠고 이 책만큼 번역이 되어 국내 개발자들에게 디버깅에 관한 새로운 인식을 심어주었으면 좋겠다라고 생각한 책도 드물다. 그리고 이 책에 가장 적합한 역자로 '류광'님을 떠올렸다. (나의 바램이 이루어진 걸까?) 국내 개발자 서적의 대표 역자이신 '류광'님으로부터 번역에 관한 완성물을 전달받게 되었고 책을 읽고 난 후, 이 책이 '류광'님의 책으로 다시 태어났음을 알게 되었다. 이해하기 쉽게 쓰였음은 물론이거니와 독자들을 위한 '역주'에 많은 노력을 기울였음을 알 수 있다. 쉽지 않은 내용과 많은 분량에도 불구하고 작업을 마무리해주신 류광님께 박수를 보내고 싶고, 많은 국내 개발자분들이 이 책으로부터 시스템적인 디버깅에 관한 개념과 실무에 대해서 배울 수 있기를 기대한다.

디버깅의 모든 것, 디버그랩(http://www.debuglab.com) 운영자
한국과학기술원(KAIST) 소프트웨어 전문가 과정