The Pragmatic Programmer 4회차 - 편집증처럼 안전하게 만들기
실용주의의 편집증은 불안이 아니다. 시스템이 언젠가 실패한다는 사실을 받아들이고, 그 실패가 조용히 썩지 않게 만드는 태도다.
이 글은 The Pragmatic Programmer을 8회로 나눠 읽는 시리즈의 4회차다. 범위는 Chapter 4 · Pragmatic Paranoia다.
포착 -> 증류 -> 연결 -> 표현 4단계 깔때기로 읽는다. 핵심 원칙은 그대로 둔다. 책 노트는 창고, 인사이트 카드는 화폐.
L0 · 서지 & 진입
- 한 문장 핵심: 안전한 코드는 실패를 부정하지 않고, 실패가 말하게 만든다.
- 이 책을 든 이유 / 기대한 질문: AI가 코드를 빠르게 만들수록, 개발자가 지켜야 할 사고 습관과 운영 기준을 더 분명히 하고 싶었다.
- 읽기 전 가설: 이 책은 오래된 조언 모음일 것이라고 예상했다. 하지만 읽을수록 최신 도구보다 오래 가는 개발자의 운영 체계를 말하고 있었다.
- 저자 한 줄 컨텍스트: Andrew Hunt와 David Thomas는 소프트웨어 장인정신, 자동화, 실용주의 개발 문화에 큰 영향을 준 Pragmatic Bookshelf의 공동 창립자다.
- 이번 회차 범위: Design by Contract, Dead Programs Tell No Lies, Assertive Programming, When to Use Exceptions, How to Balance Resources
- 이번 회차 질문: 실패하지 않는 척하는 코드보다, 실패를 빨리 드러내는 코드를 어떻게 만들 것인가?
L1 · 포착함
원문 전체를 재현하지 않고, 각 장의 주장과 예시를 내 언어로 압축한다. 필요한 표현은 짧은 문구 수준으로만 사용한다.
- 이번 장은
Chapter 4 · Pragmatic Paranoia를 통해 개발자의 태도와 작업 방식을 묻는다. - 핵심은 “실패하지 않는 척하는 코드보다, 실패를 빨리 드러내는 코드를 어떻게 만들 것인가?”라는 질문으로 압축된다.
- 기억할 영어 표현:
design by contract·assertive programming·fail fast - 내 블로그/PKM/에이전트 작업과 연결하면, 이 장은 “개인의 요령”보다 “반복 가능한 하니스”에 가깝다.
L2 · 챕터 지도
| 범위 | 내가 붙인 이름 | 핵심 질문 |
|---|---|---|
| Chapter 4 · Pragmatic Paranoia | 편집증처럼 안전하게 만들기 | 실패하지 않는 척하는 코드보다, 실패를 빨리 드러내는 코드를 어떻게 만들 것인가? |
계약은 모듈 사이의 약속을 명확히 한다. 실패는 감추면 커지고, 빨리 드러나면 좁힐 수 있다. assertion은 불가능하다고 믿는 상태를 코드로 적는 방법이며, 예외는 정말 예외적인 흐름에 써야 한다. 자원 관리는 얻은 것을 반드시 놓아주는 질서다.
L3 · 인사이트 카드 색인
- Pragmatic Programmer - I4.1 계약은 문서가 아니라 실행 가능한 기대다
- Pragmatic Programmer - I4.2 빠른 실패는 사용자에게 불친절한 것이 아니다
- Pragmatic Programmer - I4.3 자원 누수는 집중력 누수와 닮았다
1. 계약은 문서가 아니라 실행 가능한 기대다
함수와 모듈이 무엇을 기대하고 무엇을 보장하는지 분명하면, 에이전트가 코드를 수정할 때도 경계가 선명해진다.
2. 빠른 실패는 사용자에게 불친절한 것이 아니다
조용한 데이터 손상과 늦게 터지는 오류가 더 불친절하다. 빨리 멈추는 시스템은 고칠 수 있는 시스템이다.
3. 자원 누수는 집중력 누수와 닮았다
열고 닫지 않는 파일처럼, 시작하고 닫지 않는 작업은 마음의 메모리를 계속 차지한다.
L4 · 생산 보드
- 핵심 함수 하나에 precondition과 postcondition을 문장으로 적는다.
- catch-all 예외 처리 하나를 찾아 더 좁게 만든다.
- 열고 닫는 자원 패턴을 테스트로 확인한다.
프롬프트 템플릿
1 | 다음 개발 작업을 The Pragmatic Programmer의 관점으로 점검하라. |
L5 · 연결 & 복습
이 회차는 Clean Code의 가독성, Refactoring의 구조 개선, 그리고 지금 내 블로그의 LLM Wiki 실험과 연결된다. 차이는 분명하다. 이 책은 특정 기법보다 개발자가 어떤 기준으로 선택하고, 고치고, 설명할 것인가를 묻는다.
- 다른 책/아이디어와의 연결: Refactoring, Clean Code, LLM Wiki, Harness Engineering
- 미해결 질문: AI가 코드 대부분을 생성할 때, 실용주의 개발자의 책임은 어디로 이동하는가?
- 복습 일정: 1주 □ / 1개월 □ / 3개월 □
- 한 문장 최종 정리: 안전한 코드는 실패를 부정하지 않고, 실패가 말하게 만든다.
댓글
GitHub 계정으로 의견을 남길 수 있습니다. 댓글은 GitHub Discussions에 저장됩니다.