규도자 개발 블로그

실용주의 프로그래머 - 앤드류 헌트, 데이비드 토머스 (2000) 본문

Review/Book

실용주의 프로그래머 - 앤드류 헌트, 데이비드 토머스 (2000)

규도자 (gyudoza) 2019. 3. 27. 21:03

이 책의 모토는 다음과 같다.


"숙련공에서 마스터로"


실용주의 프로그래머라는 직관적인 이름에 걸맞는 내용들로 채워져있다. 책의 전반적인 분위기를 파악할 수 있는 목차에서 특히나 이 책의 특징을 잘 파악할 수 있는데 실용주의 철학에 대한 소개에서부터 기본적인 도구를 고르는 법, 그리고 다소 구체적인 디버깅이나 텍스트 처리에 대한 부분까지도 실려있는 걸 보면 이 책이 프로그래밍에 있어서 어느정도의 궤를 잡고 있는지 얼추 감이 올 것이다. 철학에서부터 구현까지 아주 많은 실용주의 프로그래밍 철학을 설파한다. 

 어떤 내용은 클린 코드나 이펙티브 프로그래밍에서 많이 봐왔던 것들인데 이만큼 여러 책에서 다루는 것이면 그만큼 중요하겠거니 하는 생각이 든다. 하지만 이 책에서 가장 감명깊었던 부분은 바로 클라이언트와 요구사항에 대해서 말하는 부분이었다. 특히 이 한 줄이 가장 가슴속에 새겨졌다.


"정책은 수시로 바뀐다."


그렇다. 세상에 영원한 건 없을 뿐더러 변하지 않는 것도 없다. 노자가 말했듯이 세상에 변하지 않는 것은 유일하게 변한다는 사실밖에 없다. 정책은 수시로 바뀐다는 말은 곧 요구사항이 수시로 바뀐다는 말과 같다. 그것에 대해 이 책에선 이렇게 말하고 있다. 

"요구사항은 전달받는 게 아니라 채굴하는 것이다. 어떤 것이 성취돼야한다는 진술이다."

너무 맞는 말이라 감명받았다. 그리고 이 책에서 이와 동시에 설명하는 요구사항과 설계 예제를 보고 있노라면 실무에서 누구나 부딪힐만 한 것이어서 실제로 소프트웨어분야에 몸을 담고 있는 사람이라면 누구라도 동감할 것이다.

 책에서 나오는 예제를 간단하게 설명하자면 다음과 같다. 전달받은 요구사항에

※해당 직원의 관리자와 인사부에서만 그의 기록을 열람할 수 있다.

는 내용이 왔을 때 이것은 완전한 요구사항이라고 할 수 있을까? 아니다. 이 요구사항 속에는 비지니스 정책이 포함돼있다. 또 위에서 말했듯이 정책은 수시로 바뀐다. 따라서 요구사항 속에 그걸 고정하는 건 좋지 않은 방법이다. 해당 직원의 관리자와 인사부에서만 그의 기록을 열람할 수 있게 만들어야할 게 아니라 이런저런 정책에 대응할 수 있는 방향으로 만들어야 한다.

 그러니까 결국 요구사항은 정책을 제외한 채 기능을 명세할 수 있을 정도의 일반적 진술로 만들어야 한다. 개선된 요구사항은 다음과 같다.

※직원 기록은 지명된 사람들만 볼 수 있다.

그리고 나머지 정책에 관한 정보는 개발자에게 구현단계에서 지원해야할 것들의 예제로 넘겨주어야 한다. 그래야 바뀐 정책에 대응할 수 있는 유연한 소프트웨어의 기반이 닦이는 것이다. 소프트웨어. 말 그대로 software는 soft하게 만들어야한다는 게 이 내용의 정수가 아닌가 싶다.


이 내용 밖에도 주옥같은 내용들이 많다. 소프트웨어 구현에 구체적인 역할을 담당하고 있는 사람이라면 추천하고 싶다.

Comments