쉬운 단어와 영 낯선 주장들. 근원부터 질문하라.
복잡성(Complexity)이라는 측면에서, 어떻게 코드를 짜야하는지를 설명하는 책. 대학교에서 학생들을 괴롭...아니, 가르치면서 배운 내용을 집대성했다고 한다.
상당히 쉬운 영어로 쓰여있다.
이 책은 "코딩에 뭐가 더 있지? 그냥 '짜면' 되는거잖아?" 라는 나의 생각을 부숴준 고마운 책들 중 하나다. 이렇게 이른 시기에 접하게 되어 너무 다행인듯.
책은 총 22 챕터인데, 크게 보면 4개의 파트로 쪼갤 수 있다 :
복잡성이란 무엇인가 : 복잡성의 정의, 요소. 그리고 Tactical/Strategic 프로그래밍 스타일 >> (1장은 인트로) 2~3 장
모듈은 딥(deep)해야 한다 : Information Hiding/Leakage, General-purpose 모듈, 레이어, Interface vs Implementation, 합쳐라, 예러 핸들링 >> 4~11장
주석 달아라 : 주석을 피하는 변명, 주석이 필요한 이유, 선주석 후코딩 >> 12~13, 15장
잡팁 : 이름 잘짓는 법, 기존 코드 수정 방법, 일관성에 관하여, 명확한 코드를 만드는 법, 소프트웨어 트렌드들에 대한 논평, 퍼포먼스를 복잡하지 않도록 디자인하는 법, 중요한 것을 판단하는 법 >> 14, 16~21 (22장은 아웃트로)
파트 3이 제일 인상깊다.
"주석을 적으셔야 합니다."
보통 주석을 "내 코드가 구려서 죄송합니다" 와 동치로 여기는 것을 상식으로 알고 있으니까. 그런데... 실제로 그게 상식이던 아니던, 일반적으로 너무나도 당연하게 상식으로 받아들이고 있던 부분에 대해서 차분하게 이견을 제시하는 저자의 모습은 대단히 인상적이었다. 책을 다 읽은 지금도 솔직히 주석을 (그래도 꽤 적긴 하는데) 자연스러운 프로그래밍의 일부로 받아들이기가 너무너무너무너무너무 어렵다. 한글 코딩과 비슷한 수준으로. 개인적으로 한글 코딩을 좋아하긴 하지만.
아무튼, 자세한 내용을 다 적지는 않겠지만, 근본의 근본까지 부정해버리는 그의 논리는 책의 주장에 동의하지 않아도 한 번쯤 맛볼 가치가 충분하다고 본다. 그리고 전반적으로 말이 너무 평온해서 그것도 참 좋음. 자극적이지 않다고 해야되나 << 영어를 잘 못해서 뉘앙스를 못 읽었을 수도 있음.
p.s. 마음이 흔들릴(?) 땐 이 영상을 : https://youtu.be/h0LMEVDXCxE?t=1397
책 정말 빡세게 읽으시네요. 주석 파트는 특히 더 공감이 됩니다.