메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

켄트 벡의 Tidy First?

더 나은 소프트웨어 설계를 위한 32가지 코드 정리법

한빛미디어

번역서

판매중

  • 저자 : 켄트 벡
  • 번역 : 안영회
  • 출간 : 2024-04-19
  • 페이지 : 248 쪽
  • ISBN : 9791169212427
  • eISBN : 9791169218139
  • 물류코드 :11242
  • 부록 :Tidy First? 옮긴이 노트
  • 초급 초중급 중급 중고급 고급
4.6점 (33명)
좋아요 : 14

익스트림 프로그래밍의 창시자, 켄트 벡.

그의 수십 년 경험과 통찰이 담겨 있는 ‘경험적 소프트웨어 설계’ 노하우

 

* 저자와 옮긴이가 함께 만든 책
* 옮긴이 노트(별책부록) 특별 구성: 켄트 벡과 옮긴이의 소통 기록 + 옮긴이 특별 부록
 

익스트림 프로그래밍(XP)의 창시자이자 소프트웨어 패턴의 선구자, 켄트 벡이 10년 만에 돌아왔습니다. 격변의 시기에 놓인 우리를 위한 그의 첫 번째 조언은, 시스템의 전체적인 구조를 생각하며 코드를 작성하고, 복잡한 코드는 논리적인 작은 조각으로 정리하는 방법입니다. 이 코딩 노하우를 32가지로 책에 간결하게 정리했으며, 소프트웨어 설계의 기반이 되는 결합도, 응집도, 설계 옵션, 비용 등에 대한 저자만의 인사이트도 함께 담았습니다. 더 나은 프로그래밍을 할 수 있는 방법이 바로 여기에 있습니다.

 

켄트 벡 저자

켄트 벡

소프트웨어 패턴(Pattern), 테스트 주도 개발(Test Driven Development), 익스트림 프로그래밍(Extreme Programming, XP) 같은 아이디어들을 주장하면서 지속적으로 소프트웨어 공학의 교조에 도전하고 있습니다. 애자일 선언문의 서명자이며, 『테스트 주도 개발』(인사이트, 2014), 『켄트 벡의 구현 패턴』(에이콘출판사, 2008), 『익스트림 프로그래밍(2판)』(인사이트, 2006)을 포함한 많은 책의 저자입니다.

안영회 역자

안영회

베터코드 CEO. 프로그래머로 사회 생활을 시작해서 IT 컨설팅과 IT 서비스 회사 경영자로 동종 업계에서 스무 해 이상 일하고 있습니다. 한때는 한국 스프링 사용자 모임(KSUG)을 만들어 운영했던 만큼 커뮤니티 활동과 지식 공유를 즐기고 있습니다.

본권
Part 1 코드 정리법
Chapter 1 보호 구문
Chapter 2 안 쓰는 코드
Chapter 3 대칭으로 맞추기
Chapter 4 새로운 인터페이스로 기존 루틴 부르기
Chapter 5 읽는 순서
Chapter 6 응집도를 높이는 배치
Chapter 7 선언과 초기화를 함께 옮기기
Chapter 8 설명하는 변수
Chapter 9 설명하는 상수
Chapter 10 명시적인 매개변수
Chapter 11 비슷한 코드끼리
Chapter 12 도우미 추출
Chapter 13 하나의 더미
Chapter 14 설명하는 주석
Chapter 15 불필요한 주석 지우기

 

Part 2 관리
Chapter 16 코드 정리 구분
Chapter 17 연쇄적인 정리
Chapter 18 코드 정리의 일괄 처리량
Chapter 19 리듬
Chapter 20 얽힘 풀기
Chapter 21 코드 정리 시점

 

Part 3 이론
Chapter 22 요소들을 유익하게 관계 맺는 일
Chapter 23 구조와 동작
Chapter 24 경제 이론: 시간 가치와 선택 가능성
Chapter 25 오늘의 1달러가 내일의 1달러보다 크다
Chapter 26 옵션
Chapter 27 옵션과 현금흐름 비교
Chapter 28 되돌릴 수 있는 구조 변경
Chapter 29 결합도
Chapter 30 콘스탄틴의 등가성
Chapter 31 결합도와 결합도 제거
Chapter 32 응집도
Chapter 33 결론


Part 4 참고 문헌
Appendix A 참고 문헌
 

별책부록 - 『Tidy First?』 옮긴이 노트


Part 1 켄트 벡과 옮긴이의 소통 기록
Chapter 1 PREFACE
Chapter 2 1부 코드 정리법
Chapter 3 2부 관리
Chapter 4 3부 이론

 

Part 2 옮긴이 특별 부록
Chapter 5 켄트 벡의 글을 번역하며 알게 된 것들
Chapter 6 개발자가 테스트를 보는 세 가지 관점
Chapter 7 소프트웨어 설계 20년 해 보고 깨달은 ‘좋은 설계’의 조건
Chapter 8 느슨한 결합(loosely coupled) 원칙을 활용한 소프트웨어 설계
Chapter 9 소프트웨어 ‘설계’의 정의는 변해야 한다

Kent Beck is Back! 
그가 20년 동안 준비한 시리즈의 첫 책! 지금 바로 만나보세요!


켄트 벡이 20년 넘게 간직한 사명 ‘괴짜들이 세상에서 안전하다고 느끼도록 돕는다’, 그 첫 번째 결실은 [Tidy First?], 바로 코드 정리법입니다. 코딩을 하는 누구나 실무에 적용하여 즉각적인 효과를 볼 수 있는 코드 정리법을 32가지로 정리했으며, 그와 함께 저자가 40년 이상을 프로그래머로 살면서 얻은 개발 및 소프트웨어 설계에 대한 인사이트를 이 책에 가득 담았습니다. 또한, 옮긴이가 번역을 진행하며 저자와 나눈 대화를 정리한 <켄트 벡과 옮긴이의 소통 기록>과 옮긴이의 번역 소회와 개발 인사이트가 담긴 <옮긴이 특별 부록>을 별책부록으로 구성하여 켄트 벡과 옮긴이, ‘두 장인의 대담’을 눈앞에서 지켜보는 것과 같은 경험도 함께 선사합니다. 앞으로 켄트 벡이 써 내려갈 새로운 시리즈의 시작을 어서 만나보세요!
 

“Make the change easy, then make the easy change”
“변화를 쉽게 만들고, 그 다음에는 쉽게 변화하라”
 

_켄트 벡
 

주요 내용

  • 소프트웨어 설계의 작동 방식과 원리에 대한 기본 이론 이해
  • 시스템의 동작 변경과 구조 변경 간의 차이점 탐색
  • 프로그래밍 경험 향상을 위한 정리 우선순위 결정법
  • 작고 안전한 단계에서 큰 변경을 이끄는 방법
  • 소프트웨어 설계와 인간관계의 실천
     

제목에 '?'가 붙은 이유는 읽다가 금세 알았습니다. 무작정 tidy하게 보완하려고 시도하지 말라는 조언이되, 어떤 시도가 '무작정'에 속하는지 조곤조곤 설명합니다. 뚝딱뚝딱 개발하고 나가기가 아니라 서비스를 운영하는 차원에서 정말 소중한 판단 기준들이 나옵니다. 얼마 전에도 '프로그래밍의 규칙'(https://wizmusa.tistory.com/1170964495)을 읽고 20년 전에 나왔으면 좋았겠다고 생각했는데, 이 책도 그렇습니다. 전산실에서 일하던 때에 만났더라면 참 도움이 됐겠다 싶습니다. 저자는 반평생동안 체득했을 노하우를 정말 간결하게 펼쳐 줍니다. 책 두께가 정말 얇습니다. 이 정도 두께면 책에서 예고한 후속작도 읽는 데에 부담이 없겠습니다.

 

택배 봉투를 뜯으면서 책을 꺼내니 왠일인지 비닐에 싸여 있었습니다. 게다가 제목으로 예상한 것보다 책 두께가 얇아서 한번 더 의아해 했습니다.

 

비닐을 뜯어 보니 얇고 작은 책 2권이 나왔습니다.


 


번역서는 150페이지 가량 되는데 추천사를 보니 원래 책은 100페이지가 안 된다고 하네요.

 

간만에 받은 얇은 책이라 별 부담감 없이 책을 읽기 시작했으나, 책의 내용은 솔직히 쉽게 쉽게 읽히지는 않았습니다. 주니어 개발자를 대상으로 한다고 되어 있네요. 어느정도 시스템 프로그래밍 경험이 있는 개발자들에게 유용할 듯 합니다.

 

책의 내용이 조금 난해하게 느껴지는 이유는 아마도 제가 아는 코딩이라함은 웹사이트 기반의 프론트엔드쪽 프로그래밍이라 솔직히 이 책이 기반하고 있는 소프트웨어 설계와는 조금 결이 다르기 때문이 아닌가 싶기도 합니다. 프론트엔드 쪽은 아무래도 웹페이지 하나 하나마다 Request와 Response에 기반하여 브라우저가 사용하도록 허락한 모듈을 조작하는 스크립트를 나열하는 형식으로 코딩을 하니까요.

 

그에 반해 시스템 차원의 소프트웨어 설계를 기반으로 하는 프로그래밍은 아무래도 시스템의 자원을 호출하는 이벤트엔 기반하는 "디자인 패턴"에 대한 이해도 있어야 해서 코딩하는 관점이 많이 다른 것 아닌가 싶습니다. 여하튼 제가 이해하기에는 좀 무리가 있는 책이었습니다.


 


이 책의 목적은 코드를 형식적인 측면에서 깔끔하게 작성하는 방법을 알려 주는데 있다고 합니다. 코드를 읽기 좋게 정리하는 작은 방법, 즉 구조적 설계 원리들을 계승하여 코드 정리 혹은 코드 정리법을 안내하는 지침서 입니다.

 

제가 주로 접한 스크립트 기반의 코딩의 경우 '어떻게 할지'에 주목한다면, 시스템이나 플렛폼에 기반한 프로그래밍은 '어떻게 생각할지'에 초점을 맞추어야 개발 및 유지 관리에 용이한 소프트웨어를 개발할 수 있습니다.

 

시스템의 전체적인 구조를 생각하며 코드를 작성하고, 복합하게 스파게티화 된 코드를 논리적인 작은 조각으로 정리할 수 있도록 저자의 32가지 노하우를 안내하는 책 입니다.

 

이 책을 처음 접한 제 첫걸음은 미약하기 그지 없었으나, 경험이 좀 더 쌓여 가면서 다시 읽어가면 그때 그때마다 큰 가르침으로 다가오지 않을까 ... 기대해 봅니다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이 책은 익스트림 프로그래밍의 저자이며 TDD개발자인 캔트백의

소프트웨어 설계 방식을 다룬 책이다

*TDD? Test-Driven Development

소프트웨어 개발 방법론 중 하나로

선 테스트 후 개발하는 프로그래밍방법론

시스템의 동작을 변경하는 일과 구조를 변경하는 일의 근본적인 차이점

각자가 스스로 코드를 변경하는 프로그래머로서 구조 변경과 동작 변경에 대한 투자를 병행하는 비법

소프트웨어 설계가 작동하는 방식과 이에 작용하는 힘에 대한 이론의 기본 사항 에 대해 다룬다.

이 책의 특징

 

1. 설명이 간결하다 (두께도 300P 미만임)

2. 별책부록인 옮긴이 노트에

캔트백과 옮긴이의 인터뷰 기록& 옮긴이의 생각이 담긴 내용이 있다.

 

추천대상

소프트웨어 설계에 관심있는 누구라도 추천하지만

노하우, 전략이 집약된 책이라

개인적으로는 소프트웨어 설계를 좀 다뤄본 경험자가 읽는 것을 추천!

사실 나같은 주니어입장에서는

설명이 너무 간결&핵심이 집약된 표현이다보니

다소 추상적으로 느껴지는 부분이 있었다.

별책부록인 옮긴이 노트에서

번역 후의 의미를 다시 풀어 설명하는 과정이 인상적이었다.

본 책에서 추상적으로 이해되었던 내용이

옮긴이 노트 부분을 통해 더 이해되는 느낌이 들었다

(+더불어 ‘번역’이라는 작업의 어려움, 중요성에 대해서도 간접적으로 느껴졌다)

![좌 Tidy First 우 Code](https://velog.velcdn.com/images/cpprhtn/post/d99636fe-c252-428a-b691-587ea6d3a5a5/image.jpg)
(위의 클린 코드 책은 지인한테 빌려준 상태라 (강화학습책과 바꿔읽는중) 다른 시리즈로 대체한 사진.)

개발을 해오면서 한 번쯤 들어본 책들입니다. 필독서로 추천되곤 하죠. 하지만 개발 초보자에게는 너무 어려운 책일 수 있습니다. 이런 책들은 "소프트웨어 설계"를 다루며, 혼자 개발하는 것이 아니라 팀을 위한 코드를 작성하는 방법을 다룹니다.

OOP를 기반으로 설명하지만 DOP, FP, SOLID 등 여러 개념을 포함하고 있으며, 코드를 작성할 때 많은 규칙을 제시합니다. 이 책들을 읽는 시점은 개인 프로젝트를 넘어서 협업이 필요할 때가 더 적합할 것입니다. 협업 시기에는 일관성 있는 코드를 작성하는 것이 리팩토링, 코드 리뷰, 신입 교육(프로젝트 중도 참여) 등에서 비용 효율적이기 때문입니다.

### Clean Code에 대한 당시의 기억
Clean Code는 2015년쯤 처음 접했습니다. 당시 TCPL(The C Programming Language)처럼 유명한 필독서라는 느낌에 책을 사서 읽었습니다.

처음 책을 읽었을 때, 절반도 못 읽고 덮었던 기억이 있습니다. 공부해 보지 않았던 자바 기반의 예시 코드와 와닿지 않는 이론적인 내용들, 딱딱한 말투와 수많은 규칙들이 이유였을 것입니다.
책의 표지에 먼지가 쌓여갈 즈음 몇 번 다시 읽어보면서 새로운 부분을 이해하고 공감하게 되었습니다. 이는 스스로의 개발 경험이 쌓였다는 증거이기도 했습니다. (이럴 때면 뿌듯해했습니다 ㅎㅎ)

켄트 벡의 책을 받으면서 조만간 클린 코드를 다시 읽어볼 생각을 하고 있습니다.

### Who is Kent Beak?
켄트 벡(Kent Beck)은 익스트림 프로그래밍(Extreme Programming, XP)의 창시자 중 한 명으로, 애자일 소프트웨어 개발 방법론의 중요한 기여자이며, 테스트 주도 개발(Test-Driven Development, TDD)의 개척자입니다.

> "Make the change easy, then make the easy change." - Kent Beck
"변화를 쉽게 만들고, 그 다음에는 쉽게 변화해라."

이 인용문은 "Tidy First: 더 나은 소프트웨어 설계를 위한 32가지 코드 정리법"의 마지막 표지에 적혀 있습니다. 이는 질긴 반죽을 만들어 부드럽게 하기보다는 처음부터 부드러운 반죽을 만들어 쉽게 빵을 만들라는 의미와 비슷합니다. 코드도 마찬가지 아닐까요?


### Tidy First과 Clean Code 비교 및 느낀점
켄트 벡의 "Tidy First"와 로버트 C. 마틴의 "클린 코드"는 소프트웨어 개발자들에게 필독서로 여겨집니다. 그러나 두 책은 접근 방식과 내용 전달 방식에서 다릅니다.

먼저, "클린 코드"는 자바 언어를 기반으로 코드의 가독성과 유지보수성을 높이기 위한 다양한 기법을 제시합니다. 로버트 C. 마틴은 코드의 명확성과 단순성을 강조하며, 좋은 코드를 작성하기 위한 원칙들을 세세하게 설명합니다. 그러나 난이도가 높아, 처음 읽을 때 모든 내용을 이해하기 어려웠습니다. 개발 경력을 쌓으며 여러 번 읽어야 가치를 파악할 수 있었습니다. 특히 동시성, 리팩토링, TDD같은 개념들은 대규모 협업을 경험해보지 않은 초보자들에게는 복잡할 수 있습니다. 대신에 자세하고 구체적인 내용을 기반으로 뛰어난 유지보수와 확장성의 방향을 제시합니다. 하지만 책에서 제시하는 모든 규칙을 따르려 하면 생산성이 저하될 수 있다고 느꼈습니다.

반면, 켄트 벡의 "Tidy First"는 범용적인 의미를 담아 쉽게 읽을 수 있습니다. 켄트 벡은 코드 설계와 리팩토링에 대한 직관적이고 쉽게 이해할 수 있는 접근 방식을 제시합니다. 복잡한 개념을 간단하고 명료하게 설명하며 실용적인 예제와 함께 코드를 정리하는 32가지 방법을 소개합니다.(목차상으로는 33번까지 있으나, 마지막 33번은 결론.) 이 책은 코드의 구조를 개선하고 유지보수성을 높이는 방법에 집중하여 실질적으로 큰 도움이 될 것입니다.

두 책은 동시성, 리팩토링, TDD, 테스트 등 중요한 주제를 다루지만, "클린 코드"는 더 구체적이고 자세한 대신 높은 난이도의 책으로 생각되며, "Tidy First"는 상대적으로 이해하기 쉬운 방식으로 같은 주제를 다루었습니다.

결론으로는 두 책 모두 소프트웨어 개발에 중요한 지침서지만, 접근 방식과 난이도에서 차이가 있으므로 각자의 필요와 경험 수준에 맞춰 선택하면 좋을 것 같습니다.

“한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 

  이 책은 SNS에서 호평이 많아 한빛미디어 리뷰 이벤트에 참여할 수 있게 되어 매우 기뻤습니다.

기대했던 책이라 받자마자 비닐을 벗기고 바로 읽기 시작했습니다. 책의 크기가 작고 얇아 금방 읽을 수 있을 것 같았지만, 함축적인 내용이 많아 쉽게 읽히지는 않았습니다. 몇 번을 곱씹으며 다 읽고 이렇게 리뷰를 작성합니다.

켄트 벡의 "Tidy First?"는 주니어 개발자에서 벗어나고자 하는 사람들에게 강력히 추천하고 싶은 책입니다. 이 책은 얇지만, 그 안에 담긴 함축적인 의미와 통찰력은 무한합니다. 익스트림 프로그래밍의 창시자인 켄트 벡이 자신의 수십 년 경험을 바탕으로 작성한 이 책은 소프트웨어 설계와 코드 정리의 중요성을 다시 한 번 일깨워줍니다. 다만, 내용이 함축적이기 때문에 완전 초급 프로그래머보다는 프로젝트를 한두 번 해본 주니어에게 추천합니다.

저는 여러 프로젝트를 거치며 코드의 복잡성과 비효율성에 직면한 경험이 있습니다. 그때마다 코드 정리의 필요성을 절감했지만, 구체적인 방법론에 대해 고민이 많았습니다. "Tidy First?"는 그러한 고민을 명쾌하게 해결해 주었습니다. 보호 구문, 안 쓰는 코드 정리, 대칭으로 맞추기 등 책에서 다루는 방법론은 매우 실용적입니다. 이러한 정리법을 통해 코드의 가독성과 유지보수성을 크게 향상시킬 수 있었습니다.

특히, 프로젝트 중반에 코드를 정리하고 리팩토링하는 일이 얼마나 중요한지 이 책을 통해 다시 한 번 깨닫게 되었습니다. 프로젝트가 진행될수록 코드의 복잡도가 증가하고, 그에 따라 버그와 유지보수의 어려움이 가중됩니다. 켄트 벡은 이러한 상황에서 코드를 정리하는 방법을 32가지로 체계적으로 제시합니다. 응집도와 결합도, 설계 옵션과 비용 등 소프트웨어 설계의 기반이 되는 요소들에 대한 저자만의 인사이트도 함께 담겨 있어, 코드 정리뿐만 아니라 전체적인 소프트웨어 설계 능력을 향상시킬 수 있습니다.

또한, 켄트 벡과 옮긴이의 소통 기록이 담긴 별책부록은 두 장인의 대담을 보는 듯한 생생한 경험을 제공합니다. 이를 통해 단순히 기술적인 면뿐만 아니라 개발 철학과 소프트웨어 설계에 대한 깊은 이해를 도울 수 있습니다.

 

 


저는 이 책을 통해 코드 정리의 중요성을 다시 한 번 상기하게 되었고, 이제는 코드 정리가 단순한 청소가 아닌, 더 나은 소프트웨어를 만들기 위한 필수 과정임을 깨달았습니다. "Tidy First?"는 주니어를 벗어나고 싶은 모든 개발자에게 강력히 추천합니다. 이 책을 통해 여러분도 코드 정리의 힘을 체감하고, 더 나은 프로그래머로 성장할 수 있기를 바랍니다.

 

- 이 책은 한빛미디어 리뷰어 이벤트를 통해 제공 받았습니다. -

 

 


 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

켄트 벡은 한국에서 가장 유명한 외국인 개발자 중 한명이라고 생각된다. 

그의 저서인 테스트 주도 개발, 익스트림 프로그래밍, 켄트 벡의 구현패턴은 모두 한국 개발자들에게 필독서로 유명한 책들이다.

 

개인적으로 켄트 벡의 책이나 로버트 C.마틴의 책을 좋아하는데, 글을 읽어보면 왜 사람들이 많이 읽어보는 지에 대해 알 수 있다. 저자의 의견에 대해 맞다 틀리다를 떠나 일단 글을 흥미롭게 전개 시킬 줄 안다고 생각한다.

지루하지 않은 책의 구성과 이야기를 풀어나가는 과정이 흥미로워 지겹다는 생각이 전혀 들지 않는다.

 

어찌보면 켄트 백의 구현패턴이라는 책이 조금 생각나기도 한다. 

꽤나 당연하면서도 개발자라면 아는 사실인 것 같은 이야기를 풀어나간다. 

하지만, 한번 생각해봐야 할 문제들을 다루고, 고민을 던져준다. 

여러 측면에서 생각해보도록 이야기를 만들어나간다.

 

굉장히 얇지만 많은 것이 담긴 책이라고 생각한다. 

추가로 부록에는 역자가 켄트 벡과 생각을 나누며 역자의 생각까지 덧붙여져 있다. PART2 의 특별부록은 조금 더 살을 붙여서 책을 써보면 어떨까라는 생각이 들 정도로 역자의 정성과 내공이 느껴졌다.

 

꽤나 얇은 굵기에 생각보다 비싼 가격이라 생각될 수도 있겠지만, 켄트 벡은 이 책을 3개정도의 시리즈로 낼 생각이고, 우리는 결국 이것을 다 사게 될 것이다. 그렇다면 남들보다 더 빨리 읽는 게 이득이 아닐까?

 

개발자로써 가장 어렵게 느껴지는 것은 리팩토링이다. 내가 작성한 코드가 다른 사람들(=개발자)들과의 의사소통에 문제가 없는지 또는 간결하게 썼는지 또는 비용 효율적인지 다양한 관점에서 접근하고 사색할 시간이 필요하다.

 

처음 시작은 어떻게든 짧은 기간 안에 기능을 구현해야 하기 때문에 소위 말하는 스파게티 코드처럼 짜여지기도 한다. 이후에 바빠서 다른 기능을 만들다 보면 어느새 해당 코드는 잊혀지고 문제가 생겼을 때 다시 돌아보는 죽은 코드가 된다. 그리고 다시 돌아왔을 때의 절망이란 상상하기도 어렵다.

 

문제는 절망뿐 아니라 해당 코드를 다시 수정해야 하는데 어떤 의미 또는 어떤 의도를 가지고 구현했는지 전혀 이해가 안되는 것이다. 소위 개발자들이 '어?' 라고 하는 것을 경계하라고 하지 않던가? 그 말은 요즘 유머로도 쓰이는 것 같지만 그 본질은 어떤 코드를 작성하던지 어떤 프로세스로 코드가 흘러가는지 명확하게 이해하고 작성하란 말과도 같다.

 

이처럼 개발자가 작성하는 코드 그 자체는 말그대로 하나의 언어이자 글쓰기 그 자체다. 우리 주변에서도 글을 정말 맛깔나고 간결하게 잘 쓰는 사람이 있는가 하면, 간단한 의미조차도 장황한 글솜씨로 인해 의미 전달이 어려운 경우가 많다.

이렇게 코드를 작성하고 지속적으로 고쳐야 하는 것은 어떻게 보면 숙명과도 같다. 어제의 코드가 오늘의 정답이 아닐수도 있기 때문이다. 그런 의미에서 켄트 벡이 설명하는 이 책은 우리에게 당연한 얘기를 다시 풀어서 들려준다.

 

그렇다. 당연한 얘기다. 당연히 간결하게 작성해야 하고 주석 없이도 이해할 정도로 코드를 작성해야 하고...어떻게 해야 하고 등등. 우리가 이미 다 알고 있는 내용이다. 그럼에도 불구하고 우리는 이를 잊고 있는 경우가 많다.
이를 켄트 벡이 친절하게 다시 되짚어 주는 느낌을 개인적으로 많이 받았다. 우리의 친절한 이웃 스파이더맨처럼 또는 옆집 아저씨처럼 친근하게 코드를 잘 작성하는 법을 쉽게 설명하고 있다.

 

단순히 기능하는 코드를 작성하는 사람을 코더라고 한다. 프로그래머는 단순히 코드를 작성하는 것이 아니라 이 코드가 왜 필요한지 어떻게 하면 효율적으로 문제를 해결할지를 먼저 고민하고 그 답으로 코드를 작성한다. 우리는 이제 단순히 코더가 아니라 프로그래머가 되어야 하지 않을까? 이 책을 통해서 프로그래머로써 성장했으면 좋겠다. 

나의 바람이기도 하고 이 책을 읽은 모든 개발자에게도 바라는 바램이다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평임."

이 책은 “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

프로그램의 규모가 작으면 설계는 거의 하지 않고 바로 개발을 하여 그때그때 상황에 맞춰 노선을 잡아가곤 했습니다. 그러나 습관이 무서운 법이라고 생각 없이 개발을 한다면 대규모 프로젝트때 어쩔 줄 몰라 당황을 할 것 같습니다. 지금 당장은 아니더라도 먼 미래를 내다보며 어렵지만 차근차근 좋은 소프트웨어 설계에 대해 고민해보고 실행에 옮겨야 겠습니다.

일상 생활에서 "tidy first"는 어떤 작업을 시작하기 전에 먼저 주변을 정리하고 정돈하는 것을 의미한다. 예를 들어, 공부를 시작하기 전에 책상이나 방을 정리하여 깨끗하고 정돈된 환경은 학습에 대한 집중력을 높이는 데 도움을 준다.

소프트웨어 개발에서 "tidy first"는 같은 선상에서 코드를 작성하기 전에 코딩 환경을 정리하고, 필요 없는 파일을 제거하며, 코드 베이스를 정돈하는 것을 의미할 것이다. 이렇게 하면 코드 유지 보수가 용이해지고, 협업 시 다른 개발자들이 더 쉽게 코드를 이해하고 수정할 수 있게 된다.
 

이 도서는 익스트림 프로그래밍의 창시자, 켄트 벡 그의 수십 년 경험과 통찰이 담겨 있는 ‘경험적 소프트웨어 설계’ 노하우를 느낄 수 있게 해준다. 그의 첫 번째 조언은, 시스템의 전체적인 구조를 생각하며 코드를 작성하고, 복잡한 코드는 논리적인 작은 조각으로 정리하는 방법이다. 이 코딩 노하우를 32가지로 책에 간결하게 정리했으며, 소프트웨어 설계의 기반이 되는 결합도, 응집도, 설계 옵션, 비용 등에 대한 저자만의 인사이트도 함께 담았다.


본 책과 별책 부록으로 나누어 있는데 분량이 매우 얇다. 1부 코드 정리법, 2부 관리, 3부 이론 이렇게 나뉘어 있다.

코드 정리의 경우 디자인 패턴과 마찬가지로 좀 더 효율적으로 알아보기 쉽고 유지 보수하기 좋은 형태의 코드로 변환하는 팁을 알려주는 파트다. 응집도를 높이고, 선언과 초기화를 함께 그리고 주석을 효율적으로 사용하는 방식을 다룬다.


2부 관리는 코드 관리(code management)를 의미하며 1부와 맞물려 코드 정리의 시점과 얽힘을 푸는 방법, 리듬, 연쇄적인 정리하는 주제를 통해 작은 정리를 순차적으로 성공하며 하는 사례를 제시한다.


3부 이론에서는 소프트웨어 공학에서 항상 코드의 품질을 위해 이야기하는 응집도와 결합도에 대한 얘기와 함께 코드의 설계 변경, 구조 변경에 대한 좀 더 철학적인 저자의 의견을 들을 수 있다.


이 책의 내용은 결코 어렵지 않지만 문장을 곱씹어 의미를 이해해야 하는 부분 부분이 드러난다. 아래 예제와 같이 눈으로 스캔하는 것만으로도 저자의 의도가 전달되는 부분도 있으나 뒤로 갈수록 생각하며 읽게 하는 부분은 이 책의 특징이자 저자의 의도일 것이다. 저자가 그렇기에 책을 얇게 만들었다는 내용도 나온다.


책의 제목에 물음표(?)가 있는 것은 여전히 책의 이해와 적용에 대해 독자 나름의 해석과 이후의 결정체 지식을 결정하라는 의도로 보인다. 그렇다면 내용과 더불어 충실히 도서의 의도가 전달되었다고 본다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
 

처음 이 책의 서평을 신청한 이유는 "켄트 벡" 이라는 저자의 명성 때문이었다. 특히 그의 도서 "테스트 주도 개발"을 무척 감명깊게 읽었고 실제 업무에서도 적극적으로 >활용하고 있었기에 그의 새 책에 대한 내용이 무척 궁금했었다. 그리고 요즘 소프트웨어 설계을 잘하고 싶은 욕구가 있었기에 개발 장인의 소프트웨어 설계에 대한 인사이>트를 배우고 싶어 서평 작성을 신청하였다.

본 책과 옮긴이 노트 이렇게 2권으로 구성되어 있다.
처음 책을 받았을 때의 첫인상은 책이 무척 "날씬하다" 였다. 대부분의 IT 서적들은 >방대한 내용들을 담기 위해서 어느 정도 두께가 있는 경우가 대부분인 반면, 이 책은 147페이지라는 아주 바람직한(?) 두께를 지니고 있었다. 그래서 처음에는 금방 읽을 수 있겠구나 라고 생각을 했었다. 하지만 내용은 그렇게 가볍지 않았다.

이 책은 크게 다음의 3부로 구성되어 있으며 1부에서 3부로 넘어갈수록 구체적 내용 -> 추상적 내용을 포함하고 있다.

1부 코드 정리법
여기서는 말 그대로 코드를 잘 정리할 수 있는 구체적인 방법을 실제 예제와 함께 설>명한다. 실제 개발 업무를 진행하면서 적용할 수 있는 간단한 방법들이 구체적으로 잘
정리되어 있으므로 실무에 바로 적용 가능하다. (일부 개발자들은 이미 해당 정리법>을 이미 사용하고 있을 수도 있다.)

2부 코드 관리법
2부를 시작하기 전에 저자가 책의 제목 끝에 왜 "물음표"를 두었는지에 대해 언급한 >부분이 있다.

"""
코드 정리의 적용 대상을 파악하고, 코드 정리법을 적용한다고 해서 코드 정리를 마스터한 것은 아닙니다. 이 책의 제목은 물음표가 강조된 제목입니다. 코드 정리법을 적용할 수 있다고 해서 반드시 코드를 정리해야 한다는 뜻은 아니라는 점을 강조하고 싶었습니다.
< 켄트 벡의 Tidy First? 69페이지 >
"""
즉, 코드 정리에도 시점이 중요하다는 이야기다. 코드 정리를 먼저할 지 동작 변경을 먼저할 지 판단이 잘 서지 않는다면 2부 마지막에 요약된 내용을 바탕으로 코드 정리>의 적절한 타이밍을 결정하자.

3부 이론
제목처럼 이론을 설명하는 부분이다 보니 잘 이해가 되지 않는 부분이 많았다. 내용을
제대로 이해하려면 시간을 두고 반복적으로 읽어봐야할 듯 하다. 일단 지금 이해한 >내용을 일부 정리하자면:
결합도: 한 요소를 변경 시 다른 요소도 함께 변경해야 하는 경우, 두 요소는 특정 변경과 관련해 결합되어 있다.
비용(소프트웨어) ~= 비용(전체 변경) ~= 비용(큰 변경들) ~= 결합도: 결국 결합도를 낮출 수록 소프트웨어 비용을 줄일 수 있다. 하지만 결합도는 무작정 줄일 수 없기에 그 사이의 절충점을 찾아야 한다.
응집도: 동작 변경 시 함께 변경해야 할 코드들이 여러 곳에 흩어져 있다면 이러한 요소들을 가까이 둠으로써 응집도를 높일 수 있다.

결론
개인적으로 IT 서적 중에서 소장 여부를 결정할 때 고려하는 요소 중 하나가 책 내용>의 유효 기간이다. 특정 세부 기술에 대한 책들의 경우 시간이 지남에 따라 기술 버전이 올라가면서 내용이 구식이 되어 버리는 경우가 있는 반면, 이 책은 시간이 지나도 의미있는 내용을 가지고 있는 책이다. 책의 내용을 잘 습득하고 조금씩 코드를 잘 정리하다보면 지금보다 더 나은 소프트웨어를 만들 수 있지 않을까 기대하며 서평을 마친다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

내가 하고 있는 코드 정리에 대해 한번 생각하게 해보는 책.

사실 1장은 코드 정리를 해본 사람들이라면 다 체득하고 있는 것들이다.

이 책의 핵심은 2~3장 이라고 생각한다. 코드 정리와 코드 변경을 구분하고, 이를 관리하는 일.

상황과 성향에 따라 답은 달라질테지만, 켄트 벡의 어깨에 올라 코드 정리를 바라보는 것이 새롭게 느껴진다.

켄트 벡의 Tidy First?

2장부터는 2번 이상 읽어봐야겠다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

'Tidy'라는 책의 이름에 걸맞게 대체로 코드 품질과 설계 방법에 대해 압축하여 전달하고 있다.

압축을 하고 있는 만큼 어느정도의 경험이 있다면 더 좋겠지만, 전체적으로 어렵지 않게 되어있으며 프로그래밍 언어와 무관하게 프로젝트에 적용할 수 있는 코드 정리법, 관리법등을 다룬다.

각 장의 내이도 짧고 간결하고 더 나은 설계, 소프트웨어를 위한 저자의 경험적인 조언이 담겨있다.

켄트 벡의 "Tidy First?"는 코드 정리를 언제, 왜, 어떻게 해야 하는지에 대한 가이드라인을 제시합니다. 굉장히 얇아서 내용을 컴팩트하게 다루고 그만큼 빠르게 적용해 볼 수 있는 장점이 있습니다.


 

Part1에서는 코드 정리법을 다룹니다. 여러가지 방법을 제시하지만 저자가 강조하는 것은 "코드를 읽고 이해하는 데 드는 비용"이 높다는 것입니다. 그래서 코드를 읽기 쉽게 만들어야 한다는 것이 중요하다고 합니다.


 

Part2에서는 코드 정리를 언제 해야 하는지에 대해 다룹니다. 정리할 부분이 보인다고 무작정 하는 것이 아니라 코드 정리하는데 들어가는 비용까지 고려해서 합니다. 예를 들어, 다시는 코드를 변경할 일이 없는 컴포넌트의 경우에는 정리를 하지 않습니다. 코드 정리를 했을 때, 이해가 쉬워지거나 동작 변경이 쉬워지는 즉각적인 효과를 얻을 수 있으면 정리를 하는 것이 좋다고 합니다.


 

Part3에서는 코드 정리를 왜 해야 하는지에 대해 다룹니다. 개발에 들어가는 비용을 돈에 빗대어 설명하면서, 스스로 코드 정리를 해야 하는 이유에 대해서 찾을 수 있도록 합니다.


 

저자는 이 책이 코드 정리에 대해서 다룬다고 해서 코드 정리를 무조건 해야 한다고 말하지 않습니다. 대신에 스스로 생각할 수 있는 능력을 길러줍니다. 이제까지는 코드 정리를 뭐라도 하면 좋지 라고 생각했지만 이 책을 읽고 나서 돌이켜보면 굳이 안 해도 됐을 경우도 있었고 더 신경써서 해야 했을 경우도 있었던 것 같습니다. 앞으로 개발을 하면서 이 책의 내용을 체화한다면 변화에 유연하면서도 읽기 쉬운 코드를 작성해 장기적으로 많은 비용을 줄일 수 있을 것이라고 기대하고 있습니다.

켄트 벡은 익스트림 프로그램밍의 창시자로 소프트웨어 패턴, 테스트 주도 개발에 대한 선구자적 역활을 한 사람으로 여러 도서를 통해 프로그래머와 소프트웨어 엔지니어에게 다양한 지식을 알려 준 사람으로 지은이의 말, 옮긴이의 말, 들어가며을 읽으면서 이 도서가 무엇을 이야기 하고 있는지 무엇 때문에 개발자가 한번 쯤을 읽어 보아야하는지 알수가 있습니다.

 

개발자에서 설계자로 엔지니어로 단계별로 성장을 하는데 필요한 것은 코드에 대한 스킬, 코드를 읽는 스킬, 코드를 수정할 수 있는 디버깅 하여 정리하는 스킬, 비지니스(기능)을 구현하기 위한 클래스의 관계에 따른 결합도, 응집도 등에 대한 구조적 문제에 대한 설계 및 구현 코드에 대한 리텍토링애 대한 스킬 등 많은 요소가 필요합니다.

 

이 도서는 개발자가 성장해 나가는데 필요한 스킬을 코드 정리, 관리, 이론이라는 파트로 나누어서 독자에게 설명을 하고 있습니다. 코드 정리법은 기본적인 코드에 대한 글로 리펙토링 이나 클린 코드의 기본적인 내용을 정리 해 놓은것 처럼 간결히 설명하고 있으며 관리 파트에서는 코드를 정리하여 코드의 구조를 변경하여 시스템의 동작을 변경을 어떻게 결합되는지에 대한 설명을 하고 있습니다. 패턴과 같은 어려운 용어를 사용하지 않으면서 코드가 어떻게 시스템의 동작와 연관이 있는지에 대한 설명을 쉽게 풀어 주고 있습니다. 마지막으로 이론 파트에서는 소프트웨어 설계를 비용에 대한 접근 방법과 실제 현장에서 소프트웨어의 구조 변경을 언제 어떻게 해야하는지에 대한 여부와 방법에 대한것을 경제적, 인간적 원칙에 대해서 설명하고 있습니다.

 

개발자가 작성한 코드는 시간의 변화에 따라 변경하고 성장하는 살아있는 코드가 되어야 한다고 언제나 생각하고 있습니다. 이 도서는 막 개발이라는 세상에 들어온 신입 개발자 보다는 몇년 경험이 있는 개발가자 보다 성장하기 위해 읽어야 하는 도서라고 생각이 듭니다. 특히 요즘과 같은 AI 시대에 AI와 페어 개발를 하여 소트트웨어가 성장하는 시대에 성장을 하고자 하는 중급 개발자들이 읽었으면 합니다.

 

"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다."

미뤘던 코드 정리에서 악취가 나기 시작했습니다. 그러나 무시했습니다.

켄트 벡의 책을 읽으니 더 이상 무시할 수 없더라구요.

그래서 몸을 먼저 움직여 방을 청소했습니다.

엄두가 안났는데 작게 작게 시작해보면 결국 끝이 나더라구요.

제 코드도 작게 정리하러 가보겠습니다.

더 이상 악취가 익숙해지지 않게, Tidy First!

왕의 귀환!!! 켄트 벡의 신간이 한빛미디어를 통해 번역되어 나왔다.
제목은 <켄트 벡의 Tidy First?>이다.

 

책의 저자인 켄트 벡은 XP(익스트림 프로그래밍), TDD(테스트 주도 개발), 객체 지향 설계, 소프트웨어 패턴, 리팩터링 등 여러 분야에서 선구자적인 아이디어를 낸 프로그래밍 업계의 시조새이다.

 

그동안 책도 당연히 많이 써 왔는데 최근에는 별다른 소식이 없었다. 그러다 이렇게 떡하니 <Tidy First?>라는 책을 떡하니 내놓았다. 원서는 작년 말에 출간된 듯 하고 우리나라에는 지난 4월에 영접할 수 있게 되었다. (+_+)

 

이 책을 한 줄로 요약하면 "코드 정리를 해서 더 나은 소프트웨어를 만들어라!!"이다.

 

 

너무 간단하게 요약했나...?! 실제로 책도 매우 얄쌍하고 가볍게 나왔다. 여자 핸드백에 쏙 들어갈 정도이다. 이렇게 가벼운 책, 개인적으로 넘 좋아한다. 휴양지 선베드에 누워서 읽으면 얼마나 좋을지 상상하게 된다. (+_+)

 

켄트 벡은 구체적인 것에서 시작해 추상적으로 나아가는 것을 선호하는 사람이다. <켄트 벡의 Tidy First?> 책 목차도 동일하게 진행된다. 1부에 구체적인 코드 정리법이 나오고, 2부에서 그것을 어떻게 개발 흐름에 통합할 것인지 다룬다.

 

"안 쓰는 코드는 지워 버리세요. 그게 다입니다."

 

켄트 벡 옹의 말씀이시다. 인간이 살면서 집중력과 창의성은 언제 나오는가? 단순할 때, 한 가지 일을 할 때, 아무것도 없을 때이다. 소프트웨어 개발도 마찬가지이다. 덕지덕지 엉겨 붙어있는 코드 더미 안에서 개발 생산성이 나올 수가 없다.

 

코드 정리(정돈이 아니다)를 통해 코드의 이해도를 높이고 유지 관리를 용이하게 만들면서 궁극적으로 더 나은 소프트웨어 설계를 위해 노력하자. 그 구체적인 실천 방법과 배경이 되는 이론은 책 <켄트 벡의 Tidy First?>을 통해 확인해 보길 바란다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한번씩 좋은 코드/좋은 방향을 고민하는 시기가 오는데요. 그런 고민이 있을 때 읽으면 참고가 될 만한 책입니다.

각각 챕터가 짧지만 생각해볼 거리가 많습니다.

 

 

"한빛미디어 <나는 리뷰어다>활동을 위해서 책을 제공받아 작성된 서평입니다."

더 깔끔하고 더욱 효율적인 코드를 만드는 방법에 대한 부담없는 교양서


지정된 시간 내에, 혹은 완성해야 할 시간이 지났거나 이미 서비스가 된 이후 발견된 문제를 조금이라도 더 빠르게 수정해야 할 경우, 비즈니스 로직을 작성하고 버그를 수정하는데 급급하다 보면 보다 유지 보수가 쉬운 코드와는 점차 멀어지게 됩니다.

 

이 책은 개발자들에게 코드 정리와 관련된 기본 사항과 아무리 급하더라도 코드를 작성하는데 지켜야 할 좋은 습관을 알려줍니다. 통찰이나 개념이라고 이야기 하기보다는 교양이나 에티켓 심지어 예절이나 도덕에 가깝습니다. 20년 전이야 상용 제품의 코드를 개인이 개발과 빌드 하면서 유지보수하는게 가능했지만 지금은 팀을 이루어 개발하거나 다수의 개발자가 같은 코드를 보며 이야기하는 경우가 많으며, 다수의 사람들이 모이는 사회에서는 규범과 지켜야 할 것들이 필요한 것이고, 이 책은 이런 것들에 대해 이야기하고 있습니다.

 

소프트웨어 개발의 질을 높이고자 하는 개발자들에게 유용한 책이며 코드를 더 읽기 쉽게 만들고 원활하게 유지 보수하기 위해 코드 정리를 어떻게 적용해야 하는지에 대한 구체적인 내용을 안내합니다.

 

이 책은 세 부분으로 나눌 수 있습니다.

 

첫 번째 파트는 코드 정리의 기본 원칙을 다룹니다. 변수 이름 변경, 메서드 추출, 불필요한 코드 삭제 등의 방법을 설파합니다. 코드의 가독성을 높일 수 있는 기본기와 실천 사항들을 안내하며 유지 보수성을 높일 수 있는 코드를 만드는 데 도움을 줍니다.

 

두 번째 파트는 코드 정리의 실행과 전략을 다룹니다. 코드 정리와 기능 변경의 분리 중요성을 강조하며, 코드를 쉽게 변경하기 위해 더욱 정리가 중요하다고 안내합니다. 이를 실천한 코드는 결국 변경에 대한 비용이 줄어들고 더 좋은 코드로 발전합니다.

 

세 번째 파트는 코드 정리의 경제적 측면을 다룹니다. 코드 변경에 대한 비용과 코드 결합도 및 응집도에 대해 안내하며, 이러한 부분이 개발에 끼치는 영향력에 대해 설명합니다. 코드 정리로부터 시스템의 가치가 어떻게 높아지는지에 대한 설득력 있는 설명을 제공합니다.

 

책은 작고 분량이 적습니다. 말 그대로 소소합니다. 누구나 쉽고 간편하게 읽을 수 있으며, 초보 개발자들에게는 유용한 내용을 제공해 주고 경험 많은 개발자들에게는 경험 있는 시각으로 기본적인 철학을 되짚어 보면서 더 심도 있는 통찰을 이끌어 낼 수 있도록 합니다.

 

코드 정리의 중요성과 방법에 대한 체계적인 설명을 통해 코드의 가독성과 유지보수성을 높일 수 있으며 코드 변경의 경제적 측면을 이해할 수 있습니다. 더 깔끔하고 더욱 효율적인 코드를 만드는 방법에 대한 부담없는 교양서로 훌륭합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

아무 생각 없이 작성하던 코드들에 대해 되돌아볼 수 있는 책이었습니다. 옮긴이 노트까지 더해 읽으니 더욱 책의 내용이 풍부해진 것 같습니다.

옮긴이 노트에는 켄트 벡(저자)과 옮긴이의 소통 기록이 담겨있습니다. 뒷쪽에는 옮긴이 특별부록까지 있어 좋았습니다.


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

부제로 "더 나은 소프트웨어 설계를 위한 32가지 코드 정리법"이라고 달려 있다.

이 책을 잘 나타내는 부제라고 생각한다.

이 책에선 무언가 거창하고 거대한 대담을 다루거나 이해하는데 시간이 필요한 복잡한 개념이 없다.

그저 우리가 프로그래밍을 하는데 있어 습관으로 삼을만한 그라운드 룰들을 다룬다.

그 룰이 저 32가지 코드 정리법으로 요약되어 있다.

저자 켄트백은 한국어판 특별 서문에서 이 책은 굉장히 얇다고 스스로도 이야기 하는데 실물 책을 보면 알겠지만 이 책은 매우 얇다.

그래서 이 점이 매우 마음에 든다. 코드 정리는 당연한 것이고 이것은 가타부타 옳다 그르다를 논할 주제가 아니다. 그저 어떻게 할 것인가가 문제이지.

그러한 점에서 이 책은 아주 요점을 파악해 각 방법에 대해 아주 간결하면서도 어렵지 않게 서술하고 있다.

마음같아선 이 코드 정리법들을 더욱 압축하여 치트시트로 만들고, 책상에 부쳐두고 싶을 정도이다.

또한 저자는 이 책이 자신의 3부작 시리즈 중 첫번째 책이라고 밝힌다.

나머지 책들에 대해서도 기대한다.

켄트백은 프로그래머들에게 있어 셀럽이다.

그런 그가 다시금 새로운 시리즈로 프로그래머들에게 생각해볼만한,

그리고 습관으로 삼을만한 이야기들을 새롭게(혹은 우리가 알음알음 알고 있던 것들을) 
정리하여 말을 걸어온다. 그에게 호의적이든 호의적이지 않든 기회가 된다면

한번은 읽어 볼만하다고 생각한다.

 

더 나은 소프트웨어 설계를 위한 32가지 코드 정리법

Make the change easy, then make the easy change
변화를 쉽게 만들고, 그 다음에는 쉽게 변화하라

켄트 벡
켄트  벡은 소프트웨어 패턴, 테스트 주도 개발, 익스트림 프로그래밍 같은 아이디어를 주장하면서 지속적으로 소프트웨어 공학의 교조로 도전하고 있습니다. 애자일 선언문의 서명자이며, 다양한 도서의 저자입니다. 
이 책을 첨 받아 보고 느낀 점은 IT 도서 중 두껍지 않고 가볍게 읽을 수 있는 도서이면서 소프트웨어 설계의 핵심적인 내용을 담고 있다는 점에서 놀라웠습니다. 보통 IT 도서들은 예제와 이해하기 어려운 설명, 도식 등으로 채운 경우가 많은데 이 책은 군더더기가 거의 없다고 보는게 맞을거 같습니다. 

코드 정리란?
- 지저분한 코드를 정리한 후 프로그래밍 연산을 변경하는 시점
- 지저분한 코드를 안전하고 효율적으로 정리하는 방법
- 지저분한 코드 정리를 멈추는 시점
- 코드 정리가 작동하는 이유

소프트웨어 설계는 인간관계 속에서 벌어지는 활동입니다. 이 책에서는 거울 속의 사람 즉, 프로그래머 자신과의 관계부터 다루기 시작합니다. 스스로 돌보는 시간을 가져보는 건 어떨까? 자신의 일을 쉽게 만드는 데 시간을 내면 어떨까? 
이 책은 더 많은 사람들이 소프트웨어 설계를 잘 다루고 소중하게 여기길 바란다는 작가의 생각이 담겨있다. 그래서 각자가 스스로 할 수 있는 소프트웨어 설계부터 시작한다고 한다. 여러 줄의 긴 코드가 포함된 큰 함수가 있다고 가정해보면, 우리는 함수를 변경하기 전에 해당 코드를 읽고 무슨일이 일어나고 있는지 이해합니다. 이 과정에서 코드를 논리적으로 더 작은 덩어리로 나눌 수 있는 방법을 알게 된다. 이러한 덩어리를 추출하는 일이 바로 코드 정리입니다.

목차.

Part 1 코드 정리법

Chapter 1 보호 구문
Chapter 2 안 쓰는 코드
Chapter 3 대칭으로 맞추기
Chapter 4 새로운 인터페이스로 기존 루틴 부르기
Chapter 5 읽는 순서
Chapter 6 응집도를 높이는 배치
Chapter 7 선언과 초기화를 함께 옮기기
Chapter 8 설명하는 변수
Chapter 9 설명하는 상수
Chapter 10 명시적인 매개변수
Chapter 11 비슷한 코드끼리
Chapter 12 도우미 추출
Chapter 13 하나의 더미
Chapter 14 설명하는 주석
Chapter 15 불필요한 주석 지우기

Part 2 관리

Chapter 16 코드 정리 구분
Chapter 17 연쇄적인 정리
Chapter 18 코드 정리의 일괄 처리량
Chapter 19 리듬
Chapter 20 얽힘 풀기
Chapter 21 코드 정리 시점

Part 3 이론

Chapter 22 요소들을 유익하게 관계 맺는 일
Chapter 23 구조와 동작
Chapter 24 경제 이론: 시간 가치와 선택 가능성
Chapter 25 오늘의 1달러가 내일의 1달러보다 크다
Chapter 26 옵션
Chapter 27 옵션과 현금흐름 비교
Chapter 28 되돌릴 수 있는 구조 변경
Chapter 29 결합도
Chapter 30 콘스탄틴의 등가성
Chapter 31 결합도와 결합도 제거
Chapter 32 응집도
Chapter 33 결론

Part 4 참고 문헌

Appendix A 참고 문헌

들어가며.

안녕하세요? 정리하는 개발자 워니즈입니다. 이번에는 켄트백의 Tidy First?t라는 책을 읽고 서평을 해보려고합니다. 소프트웨어 엔지니어라면 한번쯤은 들어봤을 이름 켄트백에 대해서 알고 있을 겁니다. TDD의 아버지라고들 알고 계실 겁니다. 워낙 유명하신 분이라 이분이 작성하신 책을 한번쯤 읽어보고 싶던 차에 번역본책이 출간을 하여 바로 읽어보게 되었습니다.

이번 책을 읽게 되면서 저자인 안영희님에 대해서도 알게 됐습니다. 이번 책은 옮긴이 노트라고 안영희님이 켄트벡과의 소통을 기록한 별책 부록 같은 책이 한권더 첨부되어있습니다. 옮긴이 노트만 보더라도 안영희님이 이책을 옮기기 위해서 얼마만큼의 노력을 하고 진심이였는지를 알 수 있었습니다.

그리고 다음의 글들을 발견하게 되었는데요. 옮긴이 노트에 기재가 되어있는 내용들이지만 사전에 얼마나 많은 준비를 하고 책을 출간하기 위해 노력을 했는지가 느껴졌습니다.

흥미로운 Tidy First 고찰

켄트 벡의 글을 번역며 알게 된 것들

그럼 본격적으로 각 챕터별로 어떤 내용들을 소개하고 있는지 간단히 기록해보겠습니다.

Part 1. 코드 정리법

Part 1은 총 15개의 Chapter로 구성이 되어있으며, 정리를 수행하는 방법론 적인 설명들이 기재되어있습니다. 물론 개발경력이 어느정도 되는 소프트웨어 엔지니어라면 기본적으로 알고 있어야 하는 내용들입니다. 15가지 방법론들을 모두 적용하기에는 어려움이 있을 수 있지만, 이런 기법들을 숙지하고 적용하기 위해 노력한다면 코드 정리의 기본적인 발판이 되지 않을까 생각하게 되었습니다.

Part 2. 관리

2부에서는 1부에서 이야기한 코드정리 기법들을 자연스럽게 적용하는 흐름에 대해서 이야기를 하고 있습니다. 켄트백이 이야기하는 코드 정리는 동작변경과 구조변경을 분리하고(특히 동작에 영향을 주지 않고) 작은 단위로 나누어 반복적으로 수행하는 작업으로 정의하고 있다고 생각합니다.

코드 정리는 자꾸 손이 가는 감자칩과 같습니다.

마치 애자일 방법론과 같이 끊임없고 지속적인 행동 철학에 대해서 이야기하고 있지 않나 생각해봅니다. 코드를 작성하는것도 엄연히 글을 쓰는(작문) 행위와 같다고 생각합니다. 글을 작성하고 반복적인 퇴고를 수행하여 좀 더 좋은 구문과 문장을 만들 듯이 코드 정리도 좀더 간결하고 읽기 쉬운 흐름으로 가는 것에서 닮아 있다고 생각합니다.

Chapter 18에서 말하는 코드 정리의 일괄 처리량부분을 보면, 이책의 제목에서 말하는 부분이 아닐까 생각합니다.

코드 정리 비용을 중리고자 한다면, 코드 정리 개수를 늘려서 동작 변경에 소용되는 비용을 줄인세요. 그러면, 검토 비용을 줄일 수 있습니다.

Part 3. 이론

3부에서는 코드 정리를 왜 하는지 그 이유에 대해서 설명하고 있습니다. 다음과 같은 질문을 다룬다고 설명되어 있습니다

  • 소프트웨어 설계란 무엇인가?
  • 소프트웨어 설계가 소프트웨어 개발과 운영 비용을 어떻게 좌우하는가?
  • 소프트웨어 구조에 투자할 떄와 투자하지 않을 떄의 장단점은 무엇인가?
  • 소프트웨어의 구조를 변경할지 여부와 방법을 결정할 때 어떤 경제적, 인간적 원칙을 사용할 수 있는가?

위의 질문들에 대해서 쉽게 설명하기 위해서 경제 이론이 등장을 합니다. 시간 가치와 선택 가능성에 관한 이야기를 하고 있습니다.

  • 오늘의 1달러가 내일의 1달러보다 더 가치가 있기 때문에 버는 것을 빨리하고, 쓴느것을 가능한 뒤로 미룹니다.
  • 혼란스러운 상황에서는 어떤 물건에 대한 옵션이 물건 자체보다 낫기 때문에 불확실성에 맞서는 옵션을 만듭니다.

구조 변경과 동작 변경은 모두 가치를 만들어내지만 근본적으로 가역성(되돌릴 수 있는)이 되는가가 다릅니다. 둘중 어느게 나은가가 아니라 둘을 어떻게 조화시키는가가 중요합니다. 동작 변경을 먼저 하여 돈을 버는 것이고, 구조 변경은 옵션을 만드는 것입니다.

Part 3을 읽었을 떄는 결국 초반에는 동작을 변경하기 위해서(돈을 벌기 위해) 구현에 집중을 하고 있지만 나중에 가역성을 만들어내기 위한 옵션을 만들기 위해 코드 정리(구조 변경)을 조합해서 하기 위해 노력해라! 라는 의미로 받아들였습니다.

그리고 마지막으로 항상 들어온 이야기처럼 높은 응집도와 낮은 결합도를 통해서 소프트웨어의 비용을 줄일 수 있다는 이론에 대해서 설명을 하고 있습니다.

마치며.

이 책은 켄트백의 책을 안영희님이 옮긴 내용입니다. 하지만 안영희님이 옮기면서 켄트백의 철학과 사상 그리고 함축적인 한마디 한마디를 독작에게 전달하기 위해 노력한 흔적들이 많이 보입니다. 더군다나 별책 부록으로 들어가있는 옮긴이의 노트에서는 직접 켄트백과의 소통을 통한 내용들이 기재가 되어있는데 음식을 먹고난 뒤의 후식을 먹는 기분으로 쉽게 쉽게 읽혀졌습니다.

책 자체는 굉장히 얇은(146p 분량)으로 되어있는데 그 안의 내용과 무게감은 그 어느 두꺼운 책보다도 가볍게 여겨지지 않았습니다.

코드 정리는 소트웨어 개발자라면 항상 따라다니는 수식어이지만 수행하기는 어려운(?) 존재였습니다. 하지만 책을 읽고 난뒤에는 마치 이 행위를 습관처럼 한다면 소프트웨어의 품질 향상과 협업에 큰 기여를 하게 되지 않을까 생각해보게 되었습니다.

본 포스팅은 “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

2024년 4월에 출간된 한빛미디어의 <켄트 벡의 Tidy First?>에 대해 알아보겠습니다. 이 책의 원서는 <Tidy First? A Personal Exercise in Empirical Software Design>이며, 2023년 11월에 출간되었습니다. 원서 출시일을 보면 번역서가 꽤 빨리 나왔고, 역자와 출판사의 노력의 흔적이 보입니다.

 

이 책의 저자는 Kent Beck이며, 아마존 평가 점수는 5점 만점에 4.3점으로 비교적 높은 평가를 받은 책입니다. 국내 서점에서의 평가 점수는 교보문고, YES24 그리고 한빛미디어에서 4점대 후반으로 높은 점수를 받고 있습니다.

 

필자는 켄트 벡님의 책을 보고 깊은 감명을 받은 경험이 많습니다. 구현 패턴에서 많은 영감을 받았으며, 이후 테스트 주도 개발, 익스트림 프로그래밍 등 재미있게 읽은 책들이 많았습니다. 저자의 이름을 보고 책에 대한 기대감을 높이기에 충분했습니다.


 

<켄트 벡의 Tidi First?>는 약 250여 페이지로 구성되어 있으며, 휴대하면서 보기에 좋습니다. 다음 내용이 곧 출간된다고 하는데 기대가 큽니다.

 


한빛미디어의 도서 지원을 받아 작성한 리뷰입니다. 

한빛미디어에서 제공해 준 책을 읽고 작성했음을 밝힙니다.


 

 

이 책의 매력 포인트


저는 책을 읽을 때, 서문부터 읽는 것을 좋아합니다. <켄트 벡의 Tidy First?>은 서문과 추천사 내용도 다른 책보다 더 좋았습니다. 한국어판 특별 서문에 다음과 같은 내용이 있습니다.

저는 이 서문을 읽고, 기존 켄트 벡의 책에서 읽었던 느낌을 다시 상기할 수 있었습니다. 그리고 이 책의 시리즈에 대해 기대감을 느끼게 되었습니다. 

 


이 책은 얇습니다. 그런데 얇은 이유가 따로 있죠. 

제 생각에 IT 서적을 주로 읽는 대부분의 독자는, 보통 많은 분량을 집중해서 읽지 않습니다. 그래서 이 책도 최소한의 분량으로 구성했습니다. 여기에 있는 개념은 소프트웨어 설계에 대해 제가 알고 있는(또는 안다고 생각하는 것의 일부이지만, 제가 가장 자신있게 설명할 수 있는 개념입니다. ... 이 책은 연작으로 기획 중인 최소 3권의 시리즈 중 첫 번째입니다. ...


 

이 책은 4 파트와 33개의 챕터로 구성되어 있습니다. 첫 번째 파트는 코드 정리법으로 15개의 챕터로 구성되어 있습니다. 두 번째 파트는 관리로 6개의 챕터로 구성되어 있습니다. 세 번째 파트는 이론으로 12개의 챕터로 구성되어 있습니다. 마지막 네 번째 파트는 참고 문헌 챕터를 포함하고 있습니다.

 

이 책의 원서는 약 120페이지 내외인데, 실제 본문의 내용을 보면 약 100페이지 내외로 구성된 얇은 책입니다. 그런데 번역서는 약 250 페이지인데, 특별 부록이 추가되어 있습니다. 특별 부록의 주요 내용은 켄트 벡과 역자의 소통 기록과 옮긴이의 특별 부록이 담겨 있습니다. 필자는 본문뿐만 아니라, 이 부록편에서도 많은 영감을 얻을 수 있었습니다. 

 

또한, 이 책을 한 문장으로 잘 요약한 점도 서문에서 찾을 수 있었습니다. 이 책을 매우 잘 정리한 문장이라고 생각합니다.


숙련된 개발자들 입장에서 보면, 이 책에는 새롭다고 할 만한 내용은 별로 없다고 말합니다. 그런데도 책을 읽고 나서는, 이전보다 더 명확히 스스로 설명할 수 있게 되었다고 고백합니다. ...

비숙련 개발자들은 책의 초반부에서 기술 체크리스트르 제시했다고 말하기도 합니다. ...


 

 

마치면서


<켄트 백, Tidy First?>는 비교적 최신 원서를 번역한 책입니다. 이 책을 독자에게 전달하기 위해 노력한 역자안영회 님의 노력이 돋보입니다. 저자의 생각을 잘 전달하기 위해 세심한 부분까지 고려하며, 노력한 흔적이 보입니다. 

 

기존 켄트 벡 님의 책처럼 군더더기 없이 핵심 내용을 잘 정리하여 전달하는 책입니다. 이 책은 코드 정리의 중요성을 강조하며, 효과적인 소프트웨어 개발 프로세스를 구축하는 데 필요한 철학과 기법을 제시합니다.

 

이 책은 개발자라면 최소한 한 번 이상 꼭 읽어보시는 것을 추천합니다. 저자, 역자 님의 경험과 노하우, 그리고 코드 정리에 관한 통찰력을 얻을 수 있을 것입니다. 기본 켄트 벡님의 책과 같이 나중에 자신이 성장한 후 읽으면 또 다른 느낌을 얻을 것 같습니다. 

 

최근에 읽은 켄트 벡의 신작 『Tidy First?』는 그가 익스트림 프로그래밍(XP)의 창시자이자 소프트웨어 패턴의 선구자로서 10년 만에 내놓은 책입니다. 개발자로서, 코드 정리에 대한 새로운 시각을 제공해줄 것을 기대하며 책을 집어들었는데, 그 기대를 훨씬 뛰어넘는 통찰과 실용적인 조언들이 가득했습니다.

책 소개
켄트 벡은 이 책에서 수십 년간의 경험을 바탕으로 한 소프트웨어 설계와 코드 정리법을 32가지로 압축하여 소개합니다. 시스템의 전체적인 구조를 고려하며 코드를 작성하는 방법과 복잡한 코드를 논리적인 작은 조각으로 정리하는 방법을 매우 간결하고 명확하게 설명합니다. 특히 결합도와 응집도, 설계 옵션, 비용에 대한 그의 통찰은 개발자라면 반드시 숙지해야 할 내용들입니다.

목차 요약
책은 크게 네 부분으로 나뉘어 있습니다.

Part 1 코드 정리법

보호 구문, 안 쓰는 코드, 대칭으로 맞추기 등 코드 정리와 관련된 15개의 챕터로 구성되어 있으며, 각각의 챕터는 실무에서 바로 적용 가능한 코드 정리 방법을 다루고 있습니다.
Part 2 관리

코드 정리 구분, 연쇄적인 정리, 리듬 등 코드를 체계적으로 관리하는 다양한 방법을 설명합니다. 특히 코드 정리의 일관성을 유지하는 방법에 대한 그의 조언이 유용했습니다.
Part 3 이론

소프트웨어 설계의 이론적 배경을 제공하며, 결합도와 응집도, 경제 이론, 구조 변경 등의 주제를 깊이 있게 다룹니다. 여기서 설명하는 경제 이론과 소프트웨어 설계의 관계는 새로운 관점을 제시해주었습니다.
Part 4 참고 문헌

추가로 읽어볼 만한 자료들을 정리한 참고 문헌 목록은 매우 유용했습니다. 더 깊이 있는 공부를 하고 싶은 분들에게 추천할 만합니다.

별책부록: 옮긴이 노트

켄트 벡과 옮긴이의 소통 기록, 옮긴이의 번역 소회와 개발 인사이트 등을 포함하고 있어, 저자의 의도를 보다 깊이 이해할 수 있었습니다.

결론
켄트 벡의 『Tidy First?』는 단순한 기술 전달을 넘어, 소프트웨어 설계와 코드 정리에 대한 철학적인 접근을 제시하는 책입니다. 코드 정리를 통해 혁신적인 설계를 만들어가고자 하는 모든 개발자에게 이 책을 적극 추천합니다. 저자의 오랜 경험과 통찰을 통해, 더 나은 프로그래밍을 위한 방법을 배우고 실천할 수 있을 것입니다.

직접 읽어보니, 이 책은 단순히 코드 정리를 잘하자는 수준을 넘어, 어떻게 하면 더 나은 소프트웨어를 만들 수 있을지에 대한 깊은 고민과 실용적인 해결책을 제시합니다. 소프트웨어 설계에 대해 고민하고 있다면, 이 책을 통해 새로운 인사이트를 얻을 수 있을 것입니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
 

코드 정리란?

코드 정리는 말 그대로 코드를 깔끔하게 유지하는 작업이에요. 불필요한 주석을 제거하거나, 변수 이름을 더 명확하게 바꾸는 등의 작업을 포함하죠.

Kent Beck은 코드 정리를 아주 중요하게 생각해요. 왜냐하면 코드를 읽기 쉽고 이해하기 쉽게 만들어주니까요. 이렇게 하면 팀원들 간의 협업도 원활해지고, 나중에 코드를 수정하거나 확장할 때도 훨씬 수월해지거든요.

리팩토링이란?

리팩토링은 코드의 기능은 그대로 유지하면서 구조를 개선하는 작업이에요. Kent Beck은 리팩토링을 "코드를 더 좋게 만드는 과정"이라고 정의해요. 리팩토링을 통해 코드를 더 읽기 쉽고, 유지보수하기 쉽고, 확장하기 쉽게 만들 수 있어요.

Kent Beck의 Tidy first?

Kent Beck은 코드 정리를 단순한 작업이 아니라, 개발 과정의 필수적인 부분으로 봐요. 코드 정리는 개발 초기부터 꾸준히 해야 하는 작업이라고 강조하기도 했고요. 코드가 복잡해지기 전에 미리미리 정리하는 것이 중요하다는 거죠.


주기적인 코드 정리
또한 Kent Beck은 코드 정리를 주기적으로 해야 한다고 말해요. 코드가 복잡해지기 전에, 작은 변경을 자주 하는 것이 좋아요. 이렇게 하면 나중에 큰 리팩토링이 필요하지 않게 되죠.

테스트 주도 개발(TDD)
Kent Beck은 테스트 주도 개발(TDD)을 통해 코드 정리와 리팩토링을 자연스럽게 할 수 있다고 말해요. TDD는 코드를 작성하기 전에 테스트를 먼저 작성하는 방법이에요. 이렇게 하면 코드가 잘못된 방향으로 가는 것을 막을 수 있고, 코드 정리와 리팩토링을 할 때도 테스트가 있어서 안심할 수 있다고요.

더 나은 소프트웨어 설계를 위한 32가지 코드 정리법

코드 정리와 리팩토링의 중요성
코드 정리는 단순히 코드를 깔끔하게 만드는 것을 넘어서, 소프트웨어 개발의 핵심이라고 할 수 있어요. 코드 정리를 통해 코드의 품질을 높이고, 유지보수 비용을 줄일 수 있어요. 또한, 팀원들 간의 소통도 원활하게 할 수 있죠.

또한 리팩토링은 코드의 기능을 유지하면서 구조를 개선하는 작업이에요. 이를 통해 코드의 가독성을 높이고, 유지보수성을 높일 수 있어요. 또한, 코드의 중복을 줄이고, 오류를 줄일 수 있죠.

Kent Beck의 코드 정리와 리팩토링 철학은 소프트웨어 개발의 핵심이라고 할 수 있어요. 꾸준한 코드 정리와 리팩토링을 통해 코드를 깔끔하게 유지하고, 소프트웨어의 품질을 높이는 것이 중요해요. 여러분도 Kent Beck의 철학을 따라 코드 정리와 리팩토링을 꾸준히 해보세요. 그러면 더 좋은 소프트웨어를 만들 수 있을 거예요!

 

Kent Beck의 코드 정리와 리팩토링 철학은 소프트웨어 개발의 핵심이라고 할 수 있어요. 꾸준한 코드 정리와 리팩토링을 통해 코드를 깔끔하게 유지하고, 소프트웨어의 품질을 높이는 것이 중요해요. 여러분도 Kent Beck의 철학을 따라 코드 정리와 리팩토링을 꾸준히 해보세요. 그러면 더 좋은 소프트웨어를 만들 수 있을 거예요!?? 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

책 자체가 길지 않아서 가볍게 읽기 좋습니다.

내용도 실무에 적용할 수 있는 것들 위주로 작성이 되어있어서 도움 돼요!

특히, 시리즈의 첫 번째 내용이기 때문에 다음 시리즈를 위해서라도 꼭 읽는 것을 추천합니다.

 

내용도 어렵지 않아서 쉽게 술술 읽을 수 있어요

“한빛미디어의 도서 지원을 받아 작성한 리뷰입니다.”

우선 책이 얇아서 쉽게 잘 읽히는 것 같습니다.

 

책에서 코드 정리와 관련하여 언제, 어떻게 해야 하는지 등을 설명해주고 있으며, 이를 통해 본인 스스로 답을 내릴 것을 자문하고 있습니다.

 

그동안 언제, 어느정도로 코드 정리를 해야하는지가 스스로 의문이었는데, 책을 읽으며 어느정도 해답을 찾은 것 같습니다.

추천합니다!!

익스트림 프로그래밍 XP 의 창시자이자 애자일 개발론, TDD 를 주장하는 켄트 벡의 새로운 책이다. Tidy First? 는 방법론이나 기술적인 맥락 보다는 리팩토링에 어떻게 손을 대고 무엇부터 시작하면 좋을지에 대한 길라잡이가 될 수 있을 것이다.  책은 앞뒤 사족 떼고 본편만 봤을때 p100 정도의 매우 얇은 책이다. 그래서 아무 생각 없이, 부담 없이, 머리를 비우고 볼 수 있는 책이다.
 

책은 크게 전반부와 후반부로 나뉜다. 초반에는 코드를 정리하기 위한 기본적인 스킬들을 나열한다. 뒤에는 코드를 정리하기 위해 저자가 주장하는 원칙들에 대해 근거와 함께 쉽게 설명하고 있다. 다만 내가 느끼기엔 전반부와 후반부 사이의 문턱 높이가 조금 있는 편이였고 이 책을 온전히 느끼기엔 함축된 설명들이 많다고 생각했다.
 

그래서 옮긴이는 번역을 하면서 저자와 직접 소통했던 기록들과 켄트 벡의 앞서 주장한 익스트림 프로그래밍 XP나 TDD 같은 개발론들에 대해 자신이 생각하는 점에 대해 별책으로 남기고 있다. 부록까지 읽는다면 초심자더라도 이해하는데 무리가 없을것이다.


이 책에서 가장 도움이 많이 됐던 부분은 개발을 하는 중 어느 시점에 코드를 정리하면 좋을지, 코드를 어떻게 정리하면 좋을지 기준을 제시해 준다는 점이다. 크게 두가지로 나뉜다
 

- 동작 변경 후에 코드 정리
- 코드 정리 후에 동작 변경
 

이 딜레마는 기존 프로젝트를 유지보수하는 입장이라면 정말 많은 고민을 안겨주는 선택지다. 물론 정답은 없지만 저자는 동작을 변경하는 이유를 기준으로 코드를 정리하라고 한다. 동작 변경 전에 코드를 정리해서 이해가 될것 같은 판단이면 코드를 먼저 정리하고, 코드 정리 전까지 기다렸을때 비용 (코드 이해, 구조 파악 등)이 더 들어간다면 동작을 먼저 변경하라고 한다.
 

개인적으로 코드 정리에 대해 당연히 알고있다고 생각했지만 말로 설명하기는 근거나 설득력이 떨어진다고 스스로 생각했는데, 이 책은 그에 대한 이유를 명확하게 글로 풀어낸 유일한 책이 아닐까 싶다.

켄트 벡의 “Tidy First?“는 소프트웨어 개발자라면 한 번쯤 읽어봐야 할 책입니다. 이 책은 코드 정리의 중요성을 강조하며, 깨끗하고 유지보수하기 쉬운 코드를 작성하는 방법에 대해 깊이 있는 통찰을 제공합니다.

 

 

켄트 벡의 “Tidy First?“는 소프트웨어 개발자라면 한 번쯤 읽어봐야 할 책입니다. 이 책은 코드 정리의 중요성을 강조하며, 깨끗하고 유지보수하기 쉬운 코드를 작성하는 방법에 대해 깊이 있는 통찰을 제공합니다.

 

 

책 소개: 코드 정리, 관리, 그리고 이론

 

1부: 코드 정리법
이 책의 첫 번째 부분은 코드 정리에 관한 내용을 다룹니다. 저자는 코드 정리를 작은 리팩토링 작업으로 설명하며, 각각의 짧은 장마다 다양한 코드 정리 방법을 소개합니다. 예제 코드를 통해 코드 정리 전과 후의 차이를 명확하게 보여주며, 독자들이 실질적으로 적용할 수 있는 팁을 제공합니다. 코드를 깔끔하게 유지하는 것은 소프트웨어 개발의 기본이며, 이 책은 그 기본을 탄탄히 다질 수 있도록 돕습니다.

 

2부: 관리
두 번째 부분에서는 코드 정리 절차의 관리를 다룹니다. 저자의 철학은 코드 정리가 결코 큰일이 아니어야 한다는 것입니다. 코드를 정리하는 일은 보고, 추적, 계획, 일정 잡기 등의 복잡한 절차를 거칠 필요가 없습니다. 특정 코드를 변경해야 하는데 코드가 지저분해서 어려움을 겪는다면, 먼저 코드를 정리하는 것이 좋습니다. 이는 일상적인 업무의 일부로, 생각하면서 개선해 나가는 절차입니다. 저자는 이러한 철학을 통해 코드 정리가 자연스럽고 지속적으로 이루어질 수 있도록 독려합니다.

 

3부: 이론
마지막 부분에서는 소프트웨어 설계의 이론적 배경을 깊이 있게 탐구합니다. “소프트웨어 설계는 인간관계 속에서 벌어지는 활동이다”라는 저자의 말은 무엇을 의미할까요? 이 부분에서는 소프트웨어 설계에서 중요한 인간 요소와 이들의 요구를 더 잘 충족시키기 위한 방법을 다룹니다. 또한, 소프트웨어 개발 비용의 상승 원인과 이를 해결하기 위한 방안, 그리고 결합도, 응집도, 멱법칙 등의 개념을 설명하며, 이 개념들이 소프트웨어 설계에 어떻게 적용되는지 다룹니다. 저자는 독자들이 이론을 이해하고 나면, 실제로 더 나은 설계를 할 수 있도록 돕는 것을 목표로 합니다. 궁극적으로, 소프트웨어 설계가 더 이상 가장 약한 고리가 되지 않도록 하는 것이 이 책의 의도입니다.

 

이 책은 프로그래밍 경험이 있는 독자들을 대상으로 하여, 코드 정리의 실용적인 방법부터 이론적 배경까지 폭넓게 다루고 있어 매일 조금씩 성장하는 더 나은 개발자가 되도록 도움을 줄겁니다.

 

 

책의 장점과 단점
“Tidy First?“의 가장 큰 장점은 코드 정리에 대한 실질적이고 구체적인 방법들을 제시한다는 점입니다. 켄트 벡의 풍부한 경험과 지혜가 담긴 이 책은, 특히 코드의 가독성과 유지보수성을 높이고자 하는 개발자들에게 큰 도움이 될 것입니다.

 

하지만 이 책의 단점으로는 가격이 다소 높다는 점을 들 수 있습니다. 전문적인 내용을 다루고 있는 만큼, 가격이 부담스러울 수 있습니다. 그러나 코드 정리와 소프트웨어 품질 향상에 진지하게 투자하고자 하는 개발자라면 그 가치를 충분히 느낄 수 있을 것입니다.

 

결론
켄트 벡의 “Tidy First?“는 코드 정리와 관련된 지식을 쌓고 싶은 모든 개발자에게 추천할 만한 책입니다. 번역자의 경험이 반영된 풍부한 추가 내용과, 켄트 벡의 깊이 있는 통찰이 담겨 있어 더욱 흥미롭고 유익합니다. 비록 가격이 다소 부담스러울 수 있지만, 그만큼의 가치를 충분히 제공하는 책이라 생각됩니다. 코드 정리에 대한 새로운 관점과 방법을 배우고자 한다면, 이 책을 통해 많은 것을 얻어갈 수 있을 것입니다.

 

 

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 

이 책은 단순히 코드를 깨끗하게 유지하는 방법을 넘어서, 효과적인 소프트웨어 개발 프로세스를 구축하는 데 필요한 철학과 기법을 제시한다. 켄트 벡의 풍부한 경험과 실질적인 조언은 개발자가 자신의 작업 방식을 재고하고, 더 나은 코드와 더 나은 개발 문화를 만드는 데 큰 도움이 될 것이다. "Tidy First?"는 개발자가 처음부터 올바르게 시작하여 지속 가능한 개발을 실천하도록 독려하는, 가치 있는 지침서다.

내용이 장황하지 않고, 요점만 딱딱 찝어줘서 좋아요. 소소한(?) 실천방법들이 들어있어서 하나씩 적용해볼 마음도 생기고요. 코드를 예쁘게 가꾸고 싶은 개발자들에게 권합니다. 

켄트 벡은 정말 유명한 사람입니다.

애자일 관련 서적을 읽어본 경험이 있는 사람이라면, 적어도 한번은 들어봤을 이름이거든요. 저는 제가 읽은 책의 내용을 정리하는 습관을 가지고 있는데요. 제가 책을 읽고 정리한 내용을 검색해보니 켄트 벡의 이름을 직접 언급한 책이 22권이 있었습니다. ( 물론, 제가 정리만 하지 않았지, 다른 책에서도 상당수 켄트 벡의 이름을 언급했을거라 짐작합니다. )

켄트 벡은 선구자적인 사람입니다.

<클린 코드> 시리즈의 저자인 로버트 C 마틴은 켄트 벡에 대해서 다양한 이야기를 했는데요. <클린 코더>라는 책에서는 "테스트 주도 개발"을 설명하면서 이런 말을 하고 있습니다.

세상 물정을 알게 되자 어떤 것이든 곧장 내팽개치면 안 된다는 사실을 알게 됐으며 특히 켄트 벡 같은 사람이 말할 때는 절대 그래선 안 된다는 사실도 알게 됐다.

로버트 C 마틴 <클린 코더>

특히 1996년 클라이슬러 사의 프로젝트를 수행하던 중 고안해 완성했다는 "익스트림 프로그래밍"이라는 애자일 개발 방식은 지금까지 많은 사람들이 전혀 생각하지 못했던 기발한 아이디어와 실천법으로 가득찬 방식이었습니다. 저는 켄트 벡이 쓴 <익스트림프로그래밍>을 오래전에 읽었는데요. 책을 읽는 내내 충격에서 벗어나오지 못했습니다. 제 머리로는 상상도 할 수 없는 방법을 고안해 내서 실천법으로 만들어서 책을 쓸 수 있다니요.

<프로그래머의 길 멘토에게 묻다>의 저자들은 "프레드릭 브룩스", "스티브 맥코넬", 그리고 "켄트 벡"을 동일 선상에 놓고 다음과 같이 말합니다.

이들이 쓴 책에서 얻을 수 있는 방대한 지혜는 대역폭이 더 큰 정보로도 대신할 수 없다.

개발자라면, 반드시 귀기울여 그 이야기를 들어야 할 사람이 바로 이 세 인물들이라는 말이죠.

켄트 벡은 "테스트 주도 개발"의 창시자입니다.

저는 <테스트 주도 개발>이라는 책을 두 번 읽어봤습니다. 거의 십년을 간격으로 읽었는데요. 처음 읽을 때 보다 두번째 읽을 때 더 많은 것을 이해할 수 있었습니다. 전혀 지루하지 않았고, 두번째 읽으면서도 많은 것을 깨달을 수 있었습니다. 이렇게 여러 차례 읽을 때마다 깨달음을 진보하게 하는 책을 "고전"이라고 부르는데요. 켄트 벡의 책은 소프트웨어 개발 분야의 "고전"이라 불려도 손상 없을 만큼 귀중한 깨달음을 전하고 있습니다.

<테스트 주도 개발>은 소프트웨어 코드를 작업할 때 테스트를 먼저 작성하고 코드를 작성하는 방식 즉 순서를 뒤 바꿔서 하는 것인데요. 이건, 단순히 순서를 바꾸는게 아니라 소프트웨어 개발자가 코드에 대해 어떤 사고 방식을 가지고 작업을 해야 하는지를 깨닫게 해주는 것입니다. 그래서 <테스트 주도 개발> 뒷쪽에 별첨으로 글을 쓴 마틴 파울러는 다음과 같이 이야기 했습니다.

우리가 가진 화려한 도구들에도 불구하고, 프로그래밍은 여전히 어렵다. 동시에 여러 개의 공을 공중에 띄워놓고 저글링할 때처럼 프로그래밍 할 때도 잠시만 집중을 놓치면 모든 게 무너져 버릴 것 같은 느낌을 받은 적이 많다. 테스트 주도 개발은 이런 느낌을 감소시키는 데 도움이 되고 그 결과로 신속한 느긋함을 얻게 된다.

다시 말해 공 한개로 저글링 하는 상태를 만들어 주는 방법이라는 겁니다. 우리의 사고의 복잡함을 극복하게 해주는 아주 근본적인 해결책인 것이죠.

켄트 벡을 인용하는 책들에서 켄트 벡의 말을 인용할 때 드는 느낌은, 마치 교주의 말을 인용하는 신도들의 모습같습니다. 켄트 벡은 XP 개발방식과 다수의 극단적(extream)으로 뛰어난 실천법을 이 세상에 전파한 IT업계의 선지자 인것입니다.

켄트 벡의 가르침은 깨달음을 선사합니다.

마지막으로 켄트 벡의 가르침은 깨달음을 선사합니다. 저는 켄트벡의 책 중 <테스트 주도 개발>, <켄트 벡의 구현 패턴> 그리고 <익스트림 프로그래밍>을 읽었습니다. 책마다 깨달음의 경구가 아주 쉬운 단어들로 나열되어 있었는데요. 읽을 때마다 놀라운 깨달음을 주는 이야기들입니다.

그리고, <켄트 벡의 Tidy First>역시 그런 깨달음을 제공해주는 책이더군요. 비록 다른 책들에 비해 상당히 짧은 분량이긴 하지만, 깨달음의 분량은 다른 책 50권 100권에 맞먹지 않을까 싶습니다. 정말 가장 중요한 걸, 너무 평범한 이야기로 풀어내고 있어서, 당황스럽습니다.

저는 책을 읽으면 표시를 해 뒀다가 블로그에 표시한 내용을 타이핑 한다음 책에 대한 리뷰를 쓰는 루틴을 가지고 있습니다. 하지만 아주 가끔 책을 아주 천천히 읽고, 타이핑도 아주 천천히 할 때가 있습니다. 너무 빨리 읽어버리면, 그 책에서 전달해주는 고결한 깨달음을 많이 놓칠것 같고, 너무 빨리 정리하고 넘어가면, 뇌리에서 그 책의 가르침의 여운이 빨리 사라지게 될 것 같아서 입니다. <켄트 벡의 Tidy First>가 바로 그런 책이었습니다. 분량이 너무 아쉬운 정도라서, 읽기는 금방 읽어버렸지만, 정리하는 건 좀 오래 가끔 책을 열고 타이핑 해보려 합니다.

그래서, 이번만큼은 루틴을 깨고, 책을 읽은 다음 정리를 몇장 하지 않고, 바로 리뷰를 쓰기 시작했습니다.

그만큼 이 책은 중요한 책이라 생각합니다. 개발자라면 꼭, 읽어보고 켄트 벡의 깨달음을 전달 받으면 좋겠습니다.

"한빛미디어의 도서 지원을 받아 작성한 리뷰입니다"

켄트벡이니 내용은 좋겠지요.

하지만 두께에 비해서 좀 비싼감이 있네요 (그래서 별 세개입니디)

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원 무료배송
닫기

리뷰쓰기

닫기
* 상품명 :
켄트 벡의 Tidy First?
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
켄트 벡의 Tidy First?
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
켄트 벡의 Tidy First?
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1