A Philosophy of Software Design 8장 - 유지보수는 코드를 쓰기 전부터 시작된다
A Philosophy of Software Design는 설계를 거창한 아키텍처 선언보다 일상적인 복잡성 관리로 읽게 만든다. 이 8회차의 범위는 Chapter 15 Write The Comments First, Chapter 16 Modifying Existing Code, Chapter 17 Consistency이다. 원문을 길게 옮기기보다, 공개 글에서는 핵심 개념을 짧은 문구와 내 언어의 요약으로만 다룬다.
이번 글의 질문은 이것이다. 코드는 어떻게 시간이 지나도 같은 방향을 유지하는가?
이 글은 10회로 읽는 A Philosophy of Software Design 시리즈의 8회차다. 범위는 Chapter 15 Write The Comments First, Chapter 16 Modifying Existing Code, Chapter 17 Consistency이다.
포착 -> 증류 -> 연결 -> 표현 4단계 깔때기로 기술서를 흘려보낸다. 핵심 원칙은 같다. 책 노트는 창고, 인사이트 카드는 화폐.
L0 · 서지 & 진입
- 한 문장 핵심: 유지보수성은 나중에 덧붙이는 품질이 아니라 설계와 주석, 수정 습관, 일관성이 함께 만드는 시간의 구조다.
- 이 책을 든 이유 / 기대한 질문: AI 도구와 자동화가 코드를 더 빨리 만들수록, 어떤 코드가 오래 이해되고 수정될 수 있는지 묻고 싶다.
- 읽기 전 가설: 유지보수는 이미 만들어진 코드를 고치는 일로 보인다. 이 범위는 유지보수를 코드 작성 전의 설계 습관까지 확장한다.
- 저자 한 줄 컨텍스트: John Ousterhout는 운영체제와 분산 시스템 연구, Tcl/Tk 개발, Stanford 강의를 통해 소프트웨어 설계 교육을 이어온 컴퓨터 과학자다.
- 이번 회차 범위: Chapter 15 Write The Comments First, Chapter 16 Modifying Existing Code, Chapter 17 Consistency
- 관련 도서 / 계보: The Pragmatic Programmer · Refactoring · Clean Code · Software Architecture
L1 · 포착함
“write the comments first”
- 왜 표시했나: 주석을 사후 설명이 아니라 설계 스케치로 쓴다. ^q01
- 내 반응: 먼저 설명하지 못하는 인터페이스는 아직 설계가 덜 된 것일 수 있다.
“stay strategic”
- 왜 표시했나: 수정 작업에서도 전술적 패치를 경계한다. ^q02
- 내 반응: 작은 변경일수록 설계 원칙이 무너지기 쉽다.
“consistency”
- 왜 표시했나: 비슷한 문제를 비슷한 방식으로 다루는 힘이다. ^q03
- 내 반응: 일관성은 기억 비용을 줄이는 공동 인프라다.
이 공개 노트는 책의 장문 문장을 재현하지 않는다. 장 제목과 짧은 핵심어만 단서로 삼고, 내용은 요약·해석·적용 중심으로 재구성한다.
L2 · 챕터 지도
| # | 범위 | 한 줄 요약 | 핵심 주장 1개 | 기억할 위치 |
|---|---|---|---|---|
| 1 | 주석 먼저 | 인터페이스와 의도를 먼저 말로 세운다 | 설명 가능성이 설계 검증이 된다 | ^q01 |
| 2 | 주석은 설계 도구 | 모호한 생각을 글로 드러낸다 | 글이 막히면 설계도 막힌 것이다 | ^q02 |
| 3 | 기존 코드 수정 | 변경 중에도 전략적 설계를 유지한다 | 작은 패치가 구조를 무너뜨리지 않게 한다 | ^q03 |
| 4 | 주석 유지 | 주석은 코드 가까이에 두고 diff에서 확인한다 | 문서와 코드의 거리를 줄인다 | |
| 5 | 일관성 | 관례, 이름, 구조, 오류 처리 방식을 맞춘다 | 반복되는 패턴은 독자의 예측을 돕는다 |
이번 회차 논증 한 단락:
유지보수성은 나중에 덧붙이는 품질이 아니라 설계와 주석, 수정 습관, 일관성이 함께 만드는 시간의 구조다. 유지보수는 이미 만들어진 코드를 고치는 일로 보인다. 이 범위는 유지보수를 코드 작성 전의 설계 습관까지 확장한다. 이 범위를 설계 실무에 적용하면, 코드 리뷰의 질문이 “작동하는가”에서 “다음 변경자가 무엇을 알아야 하는가”로 이동한다. 설계는 별도의 의식이 아니라 매일의 이름, 경계, 예외, 주석, 계층 선택 속에 들어 있다.
L3 · 인사이트 카드 색인
- A Philosophy of Software Design - I8.1 주석 먼저 쓰기는 문서화 기법이 아니라 설계 검증 기법이다
- A Philosophy of Software Design - I8.2 기존 코드 수정의 위험은 변경량보다 원칙이 깨지는 방향에 있다
- A Philosophy of Software Design - I8.3 일관성은 창의성의 반대가 아니라 협업을 위한 기억 압축이다
L4 · 생산 보드
- 블로그 초안: 8회차를 “유지보수는 코드를 쓰기 전부터 시작된다” 관점으로 정리
- 코드 리뷰 질문: 코드는 어떻게 시간이 지나도 같은 방향을 유지하는가?
- 인사이트 카드: 주석 먼저 쓰기는 문서화 기법이 아니라 설계 검증 기법이다
- 적용 실험: 최근 수정한 모듈 하나에 이 회차의 기준을 적용해 보기
L5 · 연결 & 복습
- 다른 책/아이디어와의 연결: 리팩터링과 연결된다. 리팩터링은 코드 모양을 바꾸는 일이 아니라 일관된 설계 언어를 회복하는 일이기도 하다.
- 미해결 질문:
- 지금 내 코드베이스에서 이 회차의 레드플래그는 어디에 가장 뚜렷하게 보이는가?
- AI 에이전트가 코드를 작성할 때 이 원칙을 검증 루프로 넣으려면 어떤 체크가 필요할까?
- 복습 일정: 1주 □ / 1개월 □ / 3개월 □
- 한 문장 최종 정리: 유지보수는 나중에 버티는 능력이 아니라 처음부터 시간을 견디도록 쓰는 습관이다.
댓글
GitHub 계정으로 의견을 남길 수 있습니다. 댓글은 GitHub Discussions에 저장됩니다.