goldw***
2024-05-27

익스트림 프로그래밍의 창시자, 켄트 벡. 그의 수십 년 경험과 통찰이 담겨 있는 ‘경험적 소프트웨어 설계’ 노하우
처음 이 책의 서평을 신청한 이유는 "켄트 벡" 이라는 저자의 명성 때문이었다. 특히 그의 도서 "테스트 주도 개발"을 무척 감명깊게 읽었고 실제 업무에서도 적극적으로 >활용하고 있었기에 그의 새 책에 대한 내용이 무척 궁금했었다. 그리고 요즘 소프트웨어 설계을 잘하고 싶은 욕구가 있었기에 개발 장인의 소프트웨어 설계에 대한 인사이>트를 배우고 싶어 서평 작성을 신청하였다.
본 책과 옮긴이 노트 이렇게 2권으로 구성되어 있다.
처음 책을 받았을 때의 첫인상은 책이 무척 "날씬하다" 였다. 대부분의 IT 서적들은 >방대한 내용들을 담기 위해서 어느 정도 두께가 있는 경우가 대부분인 반면, 이 책은 147페이지라는 아주 바람직한(?) 두께를 지니고 있었다. 그래서 처음에는 금방 읽을 수 있겠구나 라고 생각을 했었다. 하지만 내용은 그렇게 가볍지 않았다.
이 책은 크게 다음의 3부로 구성되어 있으며 1부에서 3부로 넘어갈수록 구체적 내용 -> 추상적 내용을 포함하고 있다.
1부 코드 정리법
여기서는 말 그대로 코드를 잘 정리할 수 있는 구체적인 방법을 실제 예제와 함께 설>명한다. 실제 개발 업무를 진행하면서 적용할 수 있는 간단한 방법들이 구체적으로 잘
정리되어 있으므로 실무에 바로 적용 가능하다. (일부 개발자들은 이미 해당 정리법>을 이미 사용하고 있을 수도 있다.)
2부 코드 관리법
2부를 시작하기 전에 저자가 책의 제목 끝에 왜 "물음표"를 두었는지에 대해 언급한 >부분이 있다.
"""
코드 정리의 적용 대상을 파악하고, 코드 정리법을 적용한다고 해서 코드 정리를 마스터한 것은 아닙니다. 이 책의 제목은 물음표가 강조된 제목입니다. 코드 정리법을 적용할 수 있다고 해서 반드시 코드를 정리해야 한다는 뜻은 아니라는 점을 강조하고 싶었습니다.
< 켄트 벡의 Tidy First? 69페이지 >
"""
즉, 코드 정리에도 시점이 중요하다는 이야기다. 코드 정리를 먼저할 지 동작 변경을 먼저할 지 판단이 잘 서지 않는다면 2부 마지막에 요약된 내용을 바탕으로 코드 정리>의 적절한 타이밍을 결정하자.
3부 이론
제목처럼 이론을 설명하는 부분이다 보니 잘 이해가 되지 않는 부분이 많았다. 내용을
제대로 이해하려면 시간을 두고 반복적으로 읽어봐야할 듯 하다. 일단 지금 이해한 >내용을 일부 정리하자면:
결합도: 한 요소를 변경 시 다른 요소도 함께 변경해야 하는 경우, 두 요소는 특정 변경과 관련해 결합되어 있다.
비용(소프트웨어) ~= 비용(전체 변경) ~= 비용(큰 변경들) ~= 결합도: 결국 결합도를 낮출 수록 소프트웨어 비용을 줄일 수 있다. 하지만 결합도는 무작정 줄일 수 없기에 그 사이의 절충점을 찾아야 한다.
응집도: 동작 변경 시 함께 변경해야 할 코드들이 여러 곳에 흩어져 있다면 이러한 요소들을 가까이 둠으로써 응집도를 높일 수 있다.
결론
개인적으로 IT 서적 중에서 소장 여부를 결정할 때 고려하는 요소 중 하나가 책 내용>의 유효 기간이다. 특정 세부 기술에 대한 책들의 경우 시간이 지남에 따라 기술 버전이 올라가면서 내용이 구식이 되어 버리는 경우가 있는 반면, 이 책은 시간이 지나도 의미있는 내용을 가지고 있는 책이다. 책의 내용을 잘 습득하고 조금씩 코드를 잘 정리하다보면 지금보다 더 나은 소프트웨어를 만들 수 있지 않을까 기대하며 서평을 마친다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."