Search

추상화 교과서 v4 - 목차

서문

복잡한 코드 앞에서 코드 분리 외에는 취할 수 있는 행동이 없다면, 추상화하려고 손을 댈수록 자꾸 복잡해지기만 한다면 이 책이 도움이 될 거예요.
추상화는 기술이에요. 이 책을 읽으며 충실히 훈련하면 누구든 역량을 개선할 수 있어요. "이 코드는 뭐 때문에 있는 거지?"라고 묻고, 답을 발견하고, 이름을 붙이고, 구조를 만들어낼 수 있게 돼요.

Part 1. 추상화란 무엇인가

추상화에 대한 오해를 깨고, 새로운 정의를 심어요.
1-1. 흔한 오해들 분리하는 것, 숨기는 것, 일반화하는 것 — 우리가 추상화라고 믿었던 것들이 왜 추상화가 아닌지. 분리하지 않으면 불안해지는 이유, 숨기는 것이 미래의 나를 놀라게 하고 고통스럽게 하는 코드로 돌아오는 이유.
1-2. 재정의: 본질을 드러내는 행위 추상화란 번잡한 세부사항(How)에 가려진 본질(What)을 드러내는 행위예요. 본질은 대체할 수 없는 것이고, 세부사항은 대체해도 목적이 달성되는 것이에요. 추상화가 왜 꼭 필요한지도 함께 다뤄요.
1-3. 이미 가진 능력이다 추상화는 새로 배우는 게 아니에요. 우리는 이미 일상에서 이름 붙이기를 통해 세계를 다루고 있어요. 문제는 코드 앞에서 이 능력을 발휘하지 못한다는 것. 새로 배울 게 아니라 전이시키면 돼요.

Part 2. 추상화 멘탈 모델

전문가가 추상화할 때 머릿속에서 돌아가는 모델을 옮겨왔어요. 이 파트를 읽으면 "어떻게 하는가"가 보여요.
2-1. 분리 관점 vs 발견 관점 "어떻게 나눌까?"로 시작하면 기계적으로 쪼개게 돼요. "이건 뭐 때문에 있는 거지?"로 시작하면 구조가 보여요. 같은 코드를 두 관점으로 보면 어떻게 다른지, 전문가의 머릿속을 들여다봐요.
2-2. 추상화 멘탈 모델 개요 전문가의 추상화 모델은 크게 입력값, 연산, 결과값 세 부분이에요. 그리고 연산 중에 만질 수 있는 세 가지 파라미터가 있어요: 이름, 경계, 축척.
2-3. 입력값 추상화 대상과 이미 그어진 경계들. 프론트엔드에서는 코드뿐 아니라 요구사항과 디자인을 함께 봐야 해요.
2-4. 파라미터 이름은 의미를 창발시키는 손잡이. 경계는 선을 지우거나 새로 긋는 것. 축척은 얼마나 높이서 보는가. 이 세 가지를 조작해서 본질을 드러내요.
2-5. 연산: 3단계 + 오작교 방법론 해체(기존 경계 제거), 모음(사용처 근처로 이동), 발견(오작교 방법론 — 위에서 내려오기, 아래에서 올라가기, 만남). 매 결합부마다 점검하고, 안 맞으면 돌아와요.
2-6. 점검 렌즈 이름 점검(언어적 계약), 경계 점검(응집/결합), 축척 점검(같은 층 이웃들이 비슷하게 말하는가). 수다스러움 신호와 침투 구멍.
2-7. 출력값 머릿속에서 대상이 두 파티션으로 나뉜 상태. 본질(What) 파티션은 안정적이고, 세부사항(How) 파티션은 변경이 와도 본질을 흔들지 않아요.
2-8. 추상화가 아닌 것 지식 나열, 경험 누적, 거대한 설계, 시간 핑계 — 모델을 받은 사람이 흔히 빠지는 나머지 함정들.

Part 3. 추상화 역량 훈련

아는 것과 할 수 있는 것은 달라요. 지식을 몸에 익혀요.
3-1. 트리거: 언제 꺼내는가 "이게 뭔소리야?" 또는 "아 머리아파" — 이 감각이 신호예요. 초보자와 전문가의 차이는 이 신호에 반응하는 타이밍과 단위예요.
3-2. 코드 밖에서 먼저 연습 코드에서 연습하면 핑계가 많아지고 난이도가 높아요. 회의 안건, 커리어 선택지 같은 일상에서 먼저 연습해요. 이미 하고 있는 것을 의식화해요.
3-3. 코드에 적용 이제 코드로 옮겨와요. 프론트엔드에서의 특수 가이드: 요구사항이 SSOT, UI와 코드 1:1, 합의된 이름(Form, List, Input) 매칭.
3-4. 의도적 연습 80살 노인의 칫솔질은 치과의사보다 낫지 않아요. 반복만으로는 안 늘고, 피드백이 필요해요. 연습 문제와 셀프 체크를 제공해요.

마무리

추상화는 코드 기법으로 시작하지만 거기서 끝나지 않아요. 애자일이 삶의 태도가 될 수 있듯, 추상화도 그래요. 본질이 유지되면 세부사항은 갈아끼울 수 있어요. 변화 앞에서 흔들리지 않는 심리적 민첩성이에요. 지금 당장, 작게, 자주 시작해요.