이 노트에 대하여
로버트 마틴은 클린 코드와 소프트웨어 장인 정신을 전면에 세운 개발 구루로, 설계 원칙과 직업 윤리를 함께 강조한다.
히스토리
- agent-config 담당자(terra 교차검수 포함)의 브리핑 반영 — interrogation의 주어는 도구가 아니라 에이전트(27:55)라고 정정, uml-viewer는 그 방식을 보조하는 도구(1차 출처 Matt Pocock 26:06)로 재배치. 20배 토큰 수치에 단서 추가 — 통제된 비교 아닌 본인 경험담, 비판대상 하네스 자체가 constrained+discipline으로 묘사됨(34:11/34:45)이라 constraint/tooling과 오케스트레이션이 깔끔히 안 갈린다는 점 명시.
- youtube-transcript 스킬로 Matt Pocock 대담도 원본 확보(transcript+다이제스트, [denote:20260918T170303]). Book Overflow보다 시점상 앞서는 것으로 보이는 SwarmForge 전성기 상태 확인 — steering 거부 근거(lost in the middle), 5단계 파이프라인, uml-viewer 1차 출처, discipline/values 구분을 노트에 반영.
- 새 서지 2건 반영 — web-unclebobrethinkingharnesses26(X 포스트, 정정된 링크를 정식 인용으로 교체), UncleBobSoftwareFundamentalsAIMattPocock26(Matt Pocock 대담, deep modules/mutation testing 품질게이트). #+reference 갱신, 앞으로 마틴 선생님 노트 계속 신경 쓰기로 함.
- youtube-transcript 스킬로 Book Overflow 대담을 실제로 받아와(transcript+시간축 다이제스트, [denote:20260918T161915]) 재청취. 유보했던 token consumption 문장을 34:11 본인 발화(harness가 20x tokens)로 확정, CRAP 4→6→12 완화 궤적과 SwarmForge 자기부정 선언도 원문으로 재확인.
- agent-config 담당자(claude-opus-5)의 인용 정정 전달받아 반영. Rethinking Harnesses는 Clean Coder 블로그 글이 아니라 X 포스트(ubc-website Morning Bathrobe Rants 목록 링크, 커밋 5283a1a) — blog.cleancoder.com 인덱스 최신글 2023-01-19, 해당 URL 404로 확인. harness 끄자 token consumption 줄었다는 문장은 미확인 표시. uml-viewer 실물 사례 보강.
- Book Overflow 대담((Book Overflow 2026)) 청취 후 ChatGPT와 함께 마틴의 최근 에이전트 궤적(empire-2025 → SwarmForge → Rethinking Harnesses)을 정리, entwurf 관점 절 추가.
- 밥선생님 노트 업데이트 좀 해야겠다. (Book Overflow 2026) 들으면서 최근 이분의 고민을 본다.
- 아키텍트
- 구루들을 사랑합니다.
관련메타
BIBLIOGRAPHY
로버트 C. 마틴. 2014. 클린코드 : 애자일 소프트웨어 장인 정신. Translated by 박재호 and 이해영. http://www.yes24.com/Product/Goods/11681152.
———. 2023. 소프트웨어 장인 정신 이야기. Translated by 정지용. 인사이트. https://www.yes24.com/Product/Goods/117713965.
———. 2024. 우리, 프로그래머들 We, Programmers. 길벗. https://www.yes24.com/product/goods/175232277.
———. n.d. “Clean Coder Blog.” Accessed January 28, 2026. https://blog.cleancoder.com/uncle-bob/2018/03/29/WeProgrammers.html.
Matt Pocock. 2026. “Live: Uncle Bob on Software Fundamentals in the Age of Ai.” 2026. https://www.youtube.com/live/zcLPGC-tvgk.
Robert C. Martin (@unclebobmartin). 2026. “Morning Bathrobe Rant: Rethinking Harnesses.” September 12, 2026. https://x.com/unclebobmartin/status/2098744156709441896.
관련노트
- ..
- [Book Overflow 대담 시간축 다이제스트 — 하네스 흥망 12분(1월 시작 → CRAP 4→6→12 완화 → SwarmForge 자기부정 → 단일 에이전트가 토큰 20배 절약)]
- [Matt Pocock 대담 시간축 다이제스트 — steering 대신 deterministic 도구(lost in the middle), specifier→coder→cleaner→hardener→QA 파이프라인, uml-viewer 1차 출처, discipline vs values 구분]
2026 에이전트 오케스트레이션 궤적 — empire-2025 → SwarmForge → Rethinking Harnesses
Book Overflow 대담((Book Overflow 2026))을 들으며 마틴 선생님이 올해 초부터 실제로 에이전트 코딩을 깊게 해온 궤적을 ChatGPT(gpt-5-6-thinking)와 함께 정리했다. entwurf#114/#116 판단축과 나란히 놓아본 결과다.
- 출발점은 empire-2025 — 옛 전략게임 Empire를 Clojure로 재구현하며 1,300+ 커밋을 에이전트와 함께 쌓음. 2026년 1월 이미 planning/review ↔ implementation/debugging 두 에이전트 분업, sub-agent 조율비용 경험도 기록.
- 뒤이어 SwarmForge — tmux + git worktree로 에이전트를 분리하고, 커밋된 작업을 durable handoff로 넘기는 시스템. two-pack(coder→cleaner)/four-pack(specifier→coder→refactorer→architect)/six-pack 토폴로지, 그 위에 project-manager·lieutenant까지. 통신은 서브에이전트 호출이 아니라 commit SHA가 들어간 구조화된 git_handoff.
- 품질 게이트는 프롬프트가 아니라 외부 deterministic 도구로 검증: crap4clj/crap4go/crap4java(CRAP metric — Java판은 CRAP>8이면 exit 2), clj-mutate/mutate4go(mutation testing), Acceptance-Pipeline-Specification(Gherkin→parser→JSON IR→acceptance entrypoint→example mutation).
- 그런데 9월 12일 「Rethinking Harnesses」(Robert C. Martin (@unclebobmartin) 2026)에서 방향을 한 번 꺾음 — 이건 Clean Coder 블로그 글이 아니라 본인 사이트 ubc-website의 “Morning Bathrobe Rants” 목록에 링크된 X 포스트 다(정정 2026-09-18, agent-config 담당자 실측 — blog.cleancoder.com 인덱스 최신 글은 2023-01-19, 해당 URL은 404, `ubc-website` 커밋 `5283a1a`가 목록에 트윗 링크 한 줄만 추가). 모델이 좋아지면서 강한 harness(gates/tests/tools/protocols)의 필요가 줄었다고 보고, orchestration harness 없이 여러 에이전트를 직접 지휘 + 코드를 깊이 읽지 않고 에이전트에게 직접 질문해(interrogate) 구조를 파악 하는 쪽으로 관심 이동(대담 27:55 “you can interrogate it. You can ask it, how did you do this one?” — 주어는 도구가 아니라 에이전트다, 정정 2026-09-18 agent-config 담당자/terra 교차검수) — 이 방식을 보조하는 실물 도구가 uml-viewer(crap4clj/clj-mutate 스냅샷을 CRAP-colored UML로 오버레이하는 tmux+Grok 도구, 1차 출처는 Matt Pocock 대담 26:06, 2026-09-17 push). unit test·CRAP·mutation 같은 constraint/tooling은 여전히 유효하다고 분명히 구분. “harness를 끄자 token consumption도 줄었다”는 대목은 Book Overflow 대담 본인 발화로 확인됨*(34:11, [대담 다이제스트]) — “harness를 거치면 결과도 못하고 토큰을 20배 태운다(20 times as many tokens)“고 직접 말함. 같은 대담에서 CRAP 임계값을 4→6→12로 완화해온 궤적과 SwarmForge를 몇 달째 튜닝하다 “harness 개념 자체가 틀렸다”고 실시간으로 뒤집는 대목도 함께 확인됨. *단서(정정 2026-09-18, agent-config 담당자/terra): 이 20배는 통제된 비교가 아니라 본인 경험담이고(반복·측정 방법 언급 없음), 비판 대상 그 하네스 자체가 “deeply constrained and lots of discipline”으로 묘사돼(34:11) constraint/tooling과 오케스트레이션 레이어가 그 발언 안에서 깔끔히 분리되지는 않는다 — 34:45 “we still need some kind of discipline in there”까지 같이 읽어야 균형이 맞다.
- Matt Pocock과의 대담 (Matt Pocock 2026)([대담 다이제스트])도 원본을 받아 깊게 봤다 — Book Overflow보다 *더 실무적이고, 이때는 아직 harness에 대한 회의가 전혀 없다*(정황상 Book Overflow보다 시점상 앞서는 것으로 보임, 대담 자체엔 날짜 없음):
- CRAP·mutation testing의 기원담: 2000년대 초 만든 도구인데 사람에겐 너무 지루해 묵혀뒀다가, “얘들은 지루함을 신경 안 쓴다”는 깨달음으로 에이전트에 되살림.
- *steering(CLAUDE.md류 지침)을 버리고 deterministic 도구를 택한 기술적 근거 — “lost in the middle”*(컨텍스트 중간부는 모델이 무시하지만 deterministic 체커는 사라지지 않는다).
- specifier→coder→cleaner→hardener→QA 5단계 파이프라인 을 시간까지 붙여 상세 공개(단일 에이전트 5분 작업이 파이프라인 거치면 1시간, 그래도 사람 반나절보다 빠름) — SwarmForge의 내부 골격이 이 대담에서 가장 구체적으로 드러남.
- 아키텍처 뷰어(UML 드릴다운) 제작기 — uml-viewer의 1차 출처, John Ousterhout의 deep modules 개념에 동의.
- CRAP 임계값: 인간 =4, 에이전트=6(8 고려 중) — Book Overflow의 “4→6→12”보다 낮은 스냅샷.
- “인간의 discipline(TDD 한 줄씩 강제)은 에이전트에게 강요 안 하되, human values(품질이 중요하다는 것)는 강요한다” 는 구분.
- spec-driven development 비판 — “명세는 사라진다, 결과물 자체가 명세다.”
- John Ousterhout의 tactical/strategic 구분, 신입은 “에이전트처럼 다뤄야 한다”는 훈련론(어셈블리 주말 과제, DeMarco·Yordan·Pragmatic Programmer 추천).
entwurf 관점 메모
강한 constitution + 역할분담 + pipeline + handoff + worktree + deterministic gates에서 강한 agent + 얇은 coordination + deterministic gates + 좋은 interrogation으로 몇 달 만에 옮겨간 궤적이다. entwurf가 처음부터 잡은 경계 — 형제의 transcript/auth/runtime을 소유하지 않고 transport/addressability만 소유한다 — 와 다른 길로 거의 같은 결론에 도달한 사례로 보인다. SwarmForge·Acceptance-Pipeline-Specification은 로컬 에이전트들과 더 논의할 예정.
우리, 프로그래머들 We, Programmers
Tldr
소프트웨어 개발 업계의 선도적 인물인 로버트 C. 마틴이 이야기하는 ‘우리, 프로그래머들’의 이야기
생성형 AI가 코드를 만들어 내는 시대, 그럴수록 우리는 자연스럽게 다시 질문하게 된다. 우리는 누구이며, 왜 여전히 프로그래머로서 이 일을 계속하는가. 이 책은 『Clean Code』의 저자이자 소프트웨어 업계의 살아 있는 전설 로버트 C. 마틴(엉클 밥)이 약 60년에 걸쳐 현장에서 직접 겪어 온 경험과 프로그래밍의 역사를 하나의 흐름으로 엮어, 기술 그 자체를 넘어 프로그래머라는 존재의 본질을 다시 바라보게 한다. 컴퓨터의 탄생에서 애자일을 거쳐 AI에 이르기까지 기술은 쉼 없이 변화해 왔지만, 문제를 정의하고 그 결과에 책임지며 세상을 조금 더 나은 방향으로 이끌고자 했던 사람들의 정신만큼은 변하지 않았음을 이야기한다. 프로그래머의 미래를 불안하게 바라보는 이들에게 『우리, 프로그래머들』은 도구는 달라져도 방향을 결정하는 존재는 여전히 사람이며, 그 이름이 바로 우리, 프로그래머들이라는 메시지를 분명하게 전하고 있다.
1부. 서막을 열며
- 1장. 우리는 누구인가?
2부. 거장
- 2장. 배비지, 최초의 컴퓨터 엔지니어
- 3장. 힐베르트, 튜링, 그리고 폰 노이만: 최초의 컴퓨터 아키텍트
- 4장. 그레이스 호퍼: 최초의 소프트웨어 엔지니어
- 5장. 존 배커스: 첫 번째 고수준 언어
- 6장. 에츠허르 다익스트라: 첫 번째 컴퓨터 과학자
- 7장. 니가드와 달: 첫 번째 OOPL
- 8장. 존 케메니: 모두를 위한 첫 번째 언어, BASIC
- 9장. 주디스 앨런
- 10장. 톰프슨, 리치, 커니핸
3부. 급격한 전환점
- 11장. 1960년대
- 12장. 1970년대
- 13장. 1980년대
- 14장. 1990년대
- 15장. 밀레니엄
4부. 미래
- 16장. 프로그래밍 언어
- 17장. AI
- 18장. 하드웨어
- 19장. 월드 와이드 웹
- 20장. 프로그래밍
클린코드 : 애자일 소프트웨어 장인 정신
- 로버트 C. 마틴 박재호 and 이해영
소프트웨어 장인 정신 이야기
- 로버트 C. 마틴 and 정지용
- Clean Craftsmanship: Disciplines, Standards, and Ethics
Tldr
“세상을 떠받치는 장인으로 살고 싶은 개발자를 위해”
첨단 인력이 가득할 것 같은 이미지와는 사뭇 달리 소프트웨어 산업은 ‘숙련자 부족’이라는 문제에 자주 시달려 왔다. 상대적으로 짧은 산업의 역사, 거품 붕괴, 교육 시행착오 등 여러 요인이 지식과 경험이 지속적으로 탄탄하게 축적되는 데 방해가 된 것이다. 사회 전반에서 소프트웨어 의존도가 높아지고 있는 상황에서 소프트웨어 개발자의 숙련도를 높일 수 있는 대안은 무엇일까?
개발자들의 스테디셀러 《클린 코드》의 저자이자 탁월한 개발자 멘토인 로버트 C. 마틴은 그 대안으로 ‘소프트웨어 장인 정신’을 제안한다. 저자는 이 책 《소프트웨어 장인 정신 이야기》에서 장인이 자신의 분야에서 숙련된 경지에 도달하는 데 토대가 되는 여러 기예를 수련하듯이 개발자들도 그에 해당하는 기예를 수련해야 하며 전문성과 책임을 다해야 한다고 주장한다.
오랫동안 애자일 운동에 참여해 온 저자는 개발자가 장인이 되는 데 필요한 훈련 과정으로 주요 애자일 개발 실천법인 테스트 주도 개발, 리팩터링, 단순한 설계 등을 어떻게 업무에 적용해야 할지 설명한다. 또한 단순한 기능인이 아니라 해당 분야에서 책임감과 자부심을 지녀야 할 장인으로서 소프트웨어 개발자가 지녀야 할 기준과 윤리 역시 강조한다.
소프트웨어 장인 정신의 의미
- 장인 정신 수련을 위한 다섯 가지 핵심 실천법: 테스트 주도 개발, 리팩터링, 단순한 설계, 공동 프로그래밍, 인수 테스트
- 개발자 개인과 팀이 생산성, 품질, 용기를 증진하는 방법
- 성실함과 팀워크의 진정한 의미
- 소프트웨어 전문가가 따라야 할 열 가지 선서
1장 장인 정신
1부 규율
- 익스트림 프로그래밍
- 테스트 주도 개발
- 리팩터링
- 단순한 설계
- 공동 프로그래밍
- 인수 테스트
2장 테스트 주도 개발
- 개요
- 테스트 주도 개발 기초
- 결론
3장 고급 테스트 주도 개발
- 정렬 1
- 정렬 2
- 막다른 길
- 준비, 행동, 확인
- 테스트 대역
- 아키텍처
- 결론
4장 테스트 설계
- 데이터베이스 테스트하기
- GUI 테스트하기
- 테스트 패턴
- 테스트 설계
- 어떻게 변환해야 할까?
- 결론
5장 리팩터링
- 리팩터링이란?
- 기본 도구
- 규율
- 결론
6장 단순한 설계
- YAGNI
- 테스트로 검사함
- 표현력 최대화하기
- 중복 최소화하기
- 크기 최소화하기
- 단순한 설계
7장 공동 프로그래밍
8장 인수 테스트
- 규율
- 지속적 빌드
2부 기준
- 내가 여러분의 신임 CTO라면
9장 생산성
- 우리는 절대 똥덩어리를 출시하지 않겠다
- 낮은 수정 비용
- 우리는 언제나 준비되어 있을 것이다
- 안정적인 생산성
10장 품질
- 지속적 개선
- 두려움을 이기는 능력
- 극한의 품질
- 우리는 QA에게 떠넘기지 않을 것이다
- QA는 아무것도 찾지 못할 것이다
- 테스트 자동화
- 자동화 테스트와 사용자 인터페이스
- 사용자 인터페이스 테스트하기
11장 용기
- 우리는 서로를 대신한다
- 정직한 추정
- “아니요”라고 말해야 한다
- 지속적이고 적극적인 학습
- 멘토링
3부 윤리
- 최초의 프로그래머
- 75년
- 괴짜와 구원자
- 롤 모델과 악당
- 우리가 세상을 지배한다
- 재앙들
- 선서
12장 피해
- 우선 해를 끼치지 말라
- 최선의 결과물
- 반복적인 증명
13장 성실함
- 짧은 주기
- 가차 없는 개선
- 높은 생산성 유지하기
14장 팀워크
- 팀으로 일하기
- 정직하고 공정하게 추정하기
- 존중
- 배우기를 멈추지 말라
Comments