- 교보문고에서 "실용주의 프로그래머" 상세보기
"실용주의 프로그래머 시리즈"는 이미 프로그래머들 사이에서는 알만한 사람들은 다 아는 유명한 시리즈이다. "CVS", "단위테스트", "프로젝트 자동화" 가 그 것들인데, 이번에 내가 읽은 책은 그러한 실무위주 참고서가 아닌 일종의 지침서와 같은 내용의 "실용주의 프로그래머" 이다.
"이 책은 개발자를 위한 탈무드다."
이책은 일단 나머지 모든 실용주의 프로그래머 시리즈의 내용을 아우르는 방대한 영역을 다루고 있으며, 전체적인 밑그림 혹은 개념들을 잡는데 주력하고 있다. 뿐만 아니라 "어떻게 프로그램을 할 것인가" 라는 기술적인 문제는 물론이고 좋은 프로그래머가 되기 위해서 갖추어야 할 여러가지 덕목들에 대해서도 알려주고 있다. 이 책의 서문에 보면 "이 책은 개발자를 위한 탈무드다." 라는 글이 있는데, 그말이 딱 맞는 듯 하다.
이 책을 읽기 전에
우선 1) 이 책은 꽤 두껍다. 그리고 활자도 작으며 빼곡하여 최근 유행인 처세술 서적 따위와는 다르게 살짝 부담스러운 책이다. 그리고 2) 내용도 결코 쉽지 않다. 중간에 연습문제도 있어서 일일이 풀어보자면 많은 생각과 노력을 필요로 한다. 하지만 자신이 프로그래머라면 꼭 읽어야 한다. 탈무드라고 하지 않았나? ^^
한가지 중요한 것은, 이 책을 읽기전에 충분히 사색하고 고민하라는 것이다. 이 책을 읽기전에 프로그램에 대한 사전 배경지식이 없다거나, 설렁설렁 인터넷에 있는 소스 카피해다가 대충 붙여넣고는 얼렁뚱땅 테스트하고 론치하는 식의 작업을 하던 사람이라면, 거기다 "시간이 없어서...", "잘 돌아가는 데..." 등의 변명을 늘어놓는 사람이라면 별 도움이 안될 수도 있을 것 같다. 왜냐하면, 자신이 고민하지 않은, 무관심한 문제의 해답을 만나도 그것의 의미를 알턱이 없기때문이다. 즉 괜한 시간 낭비일 수 있다는 말이다.
이런 사람들이 읽으면 좋아요.
- 프로그래머로서 (어떤 개발이든 좋다. 웹이든, 시스템이든 윈도우든) 수년간 경력이 있고
- 프로젝트 리더이거나 곧 될지도 모르는 사람
- 항상 자신의 개발에 뭔가 1% 부족하다고 느끼고 있으며,
- 그때마다 새로운 시도를 해보지만 만족할 수 없었던 사람
- 자신이 즐겨 사용하는 코딩이나 방법론에 대한 확신이 부족한 사람
- 그외 모든 프로그래머. ^^
내가 동감한 내용 Best 5
1. DRY 및 KISS :
요즘 "Ruby" 라는 language 가 뜨고 있는 것 같다. "DRY" 는 "Do not Repeat Yourself"의 이니셜로 한마디로 "삽질은 금물" 이란 말로 의역할 수 있겠다. 루비의 기본 개념을 말할때 꼭 등장하는 말이다. 이책에서 강조하고 있는 내용이기도 하다. 그리고 이 책에는 나오지 않지만 KISS 는 "Keep It Simple Stupid" 라는 말의 이니셜로 Perl 의 기본 개념을 설명할때 자주 등장하는 말이다. 역시 의역하자면 "간단한 것이 좋은 것이여~" 정도 되겠다.^^ (Perl 프로그래밍, O'Reilly 한빛미디어 참고)
* 한편 "Perl 프로그래밍" 책을 보면 Perl 의 슬로건으로 TMTOWTDI 즉 "There's More Than One Way To Do It" 이라는 말도 있다. "어떤 일을 하는데는 여러 가지 방법이 있다." 라는 말인데 역시 귀담아 들을만 하니 참고하기 바란다.
2. 직교성 :
직교성은 한마디로 어떤 두가지가 서로 겹치지 않는 것을 말하는 것으로, 프로그래밍에서는 서로 다른 두 모듈이 독립적으로 개발되고 작동되는 것을 말한다. (내가 바로 이해하고 있는 것 맞지? ^^) 잠깐 이와 관련된 검색결과들을 보고 오면 좀더 이해하는데 도움이 될 것이다. 아주아주 중요하지만 대충 급한대로 만들다 보면 절대로 성립될 수 없는 개념중 하나가 아닌가 한다.
3. 깨진 창문 이론 :
이 말은 굳이 이 책이 아니더라도 다른 책에도 수없이 많이 거론되는 말이다. 사소한 것 하나를 방치해둔 것이 결국 큰 화를 부르는 원인이 될 수 있다는 말인데, 이 것의 예는 정말 너무나도 많다. 대부분의 대형 사건, 참사들은 사소한 한두가지의 실수나 태만으로 인해 비롯된 것이 많다는 것을 상기해보자.
4. 적당히 괜찮은 소프트웨어 :
혹시, 이 글을 읽는 사람 중에 자신이 "완벽주의자" 라고 생각하는 사람이 있는가? 그렇다면 이 부분을 읽어보고 고민해보기 바란다. 정말 좋은, 실용적인 프로그램이란 어떤 것인지 고민해 볼 수 있는 대목이다. 요약하자면, 완벽한 프로그램이란 존재하기 어렵다. 따라서 적당히 괜찮은 프로그램을 만드는 것을 목표로 삼는 것이 실용적이다 라는 내용이다.
5. 기타 방법론 :
이부분은 특정 한 섹션을 염두에 둔 것이라기 보다는 전반적인 총론이라 하겠다. 늘 "객체지향" "절차지향" 이란 말들을 쏟아내지만 정작 그 의미를 제대로 알고 잇는 것 같지는 않다. 뿐만 아니라 방법론이란 것도 마찬가지 많은 방법론이 있고 tool 도 있다. UML 을 배우고 최근에는 Agile 이다 Scrum 이다 회사에서 하는 것도 많다. 하지만 내가 하고 잇는 것의 실체가 무엇인지 나는 정확히 알고 있지 못했던 것 같다. 과연 실용적으로 또한 자의적으로 내가 선택할 수 있는 방법론이란 게 있긴할까? 라는 생각을 한번 해보았다.
여전히 남겨진 고민거리
- 좋은 프로그래머가 될 것인가? 또는 프로그래머로서 남을 것인가)?
- 아니면 좋은 매니저가 될 것인가?
- 경영인이 될 것인가?
- 그리고 좋은 매니저, 경영인이 되기 위해 좋은 프로그래머가 되어야 하는가?
학창시절 공부를 게을리 한 탓에 지금 고생을 많이 하고 있지만, 그 시절 공부를 안한 것을 스스로 책망하진 않는다. 그때는 그 나름대로 이유가 있었고 의미가 있었던 행동들이라 생각하기 때문이고, 그 시절이 없었다면 지금의 나도 없기 때문이다. 다만 한가지 아쉬운 것은 그때 "왜 분명한 목표가 없었던가?" 라는 것인데, 지금도 그것은 여전히 남겨진 숙제이자 고민거리이다.
과연 위의 질문들의 해답은 무엇일까?
- p.s : 이 책을 쓴 저자 앤드류 헌트는 전문 개발자 출신이 아니라고 한다. 신기하지 않나? ^^
'책 이야기' 카테고리의 다른 글
| 오만과 편견(Pride and Prejudice) (0) | 2007/05/25 |
|---|---|
| 일본 100배 즐기기 (0) | 2007/04/30 |
| 실용주의 프로그래머 (0) | 2007/04/25 |
| 예수와 함께한 저녁식사 (0) | 2007/04/18 |
| 기니피그 사이언티스트 (0) | 2007/04/01 |
| 잠들기 전 10분이 나의 내일을 결정한다 (0) | 2007/03/26 |

이올린에 북마크하기
이올린에 추천하기



댓글을 달아 주세요