Martin Fowler가 간헐적으로 올리는 Fragments 시리즈는 최근 읽은 글들에 대한 짧은 주석 모음입니다. 2026년 4월 2일자는 유독 밀도가 높습니다 — 부채의 재정의, 사고 시스템의 확장, 검증의 경제학, 그리고 언어와 이름 짓기에 관한 다섯 개의 조각이 한 페이지에 놓여 있습니다. LLM이 코드를 생성하는 시대에 인간이 무엇에 집중해야 하는지에 대한 하나의 일관된 그림이 드러납니다.
원문: Fragments: April 2 — Martin Fowler (2026)
조각 1. 시스템 건강의 세 층위 — Technical / Cognitive / Intent Debt
Margaret-Anne Storey의 논문이 제시하는 프레임은 기술 부채(technical debt) 개념의 한계를 정면으로 겨냥합니다.
| 부채 유형 | 어디에 사는가 | 언제 쌓이는가 |
|---|---|---|
| Technical Debt | 코드 안에 | 구현 결정이 향후 변경 가능성을 희생시킬 때 |
| Cognitive Debt | 사람 안에 | 공유된 이해가 재보충되는 속도보다 빠르게 침식될 때 |
| Intent Debt | 산출물(artifacts) 안에 | 목표와 제약이 제대로 포착·유지되지 않을 때 |
“Cognitive debt accumulates when shared understanding erodes faster than it is replenished.”
LLM이 대량의 코드를 만들어내면 technical debt는 오히려 줄어 보일 수 있다 — 리팩터링 비용이 내려가기 때문. 그러나 그 코드를 누가 이해하고 있는가, 무엇을 위해 만들어진 것인가는 함께 줄어들지 않습니다. 오히려 가속화된 생성이 cognitive/intent 두 층위를 먼저 고갈시킵니다.
이 프레임의 힘은 “기술 부채를 줄였다"는 지표가 시스템 건강의 착시일 수 있음을 드러낸다는 데 있습니다.
조각 2. Tri-System Cognition — 칸네만을 넘어서는 ‘System 3’
Wharton의 Shaw & Nave는 Kahneman의 두-시스템 모델에 LLM을 System 3로 추가합니다.
- System 1 — 빠르고 직관적인 판단
- System 2 — 느리고 의식적인 숙고
- System 3 — 외부 인공 추론(artificial reasoning)
그리고 이 확장에서 가장 중요한 구분은 두 가지 사용 방식입니다.
| 모드 | 정의 | 성격 |
|---|---|---|
| Cognitive Offloading | 숙고 과정에서 인지를 전략적으로 위임 | 의도적 — System 2가 여전히 작동 |
| Cognitive Surrender | 외부 생성 추론에 무비판적으로 의존, System 2를 우회 | 수동적 — 숙고 자체가 삭제됨 |
“Cognitive surrender is uncritical reliance on externally generated artificial reasoning, bypassing System 2.”
중요한 차이: 결과물은 같아 보여도 위임과 항복은 다릅니다. 같은 Copilot 제안을 받아들이는 두 엔지니어 — 한 명은 검토 후 통합했고, 다른 한 명은 읽지 않고 승인했다면, 후자는 cognitive debt를 만들고 있습니다(조각 1과 직접 연결됩니다).
실무적 함의: 팀 문화를 평가할 때 “AI를 얼마나 쓰는가"가 아니라 “System 2가 어디서 유지되는가” 를 물어야 합니다.
조각 3. <> 아이콘의 이상함 — 작은 문화 관찰
Fowler의 짧은 관찰. 코드나 개발자를 상징하는 아이콘에 왜 <> 기호가 쓰이는가? 어떤 주류 프로그래밍 언어도 이 기호로 프로그램 요소를 감싸지 않습니다. 이것은 HTML/XML의 유산이며, 프로그래머는 실제로 HTML로 코딩하지 않는다.
사소해 보이지만 시사점이 있습니다 — 표현이 상징을 만든다. 우리가 도구를 기술하는 언어는 결국 도구가 무엇인지에 대한 집단 이미지를 결정합니다(조각 6의 이름 짓기 주제와 호응합니다).
조각 4. 검증이 비싸졌다 — Ajey Gore의 경제학
Ajey Gore의 “The Expensive Thing”. 코딩 에이전트가 실행을 담당하게 되면서 비용의 중심이 생산에서 검증으로 이동한다는 주장.
“자카르타 교통에서의 ETA 알고리즘이 ‘정확(correct)‘하다는 것과 호찌민시에서의 그것은 같은 의미인가?”
Gore의 테제:
- 정답(correct)은 하나의 정의가 아니라 수천 개의 맥락-의존적 정의
- 맥락적 올바름을 정의하는 일은 “에이전트가 당신을 대신할 수 없는 판단의 영역”
- 따라서 조직은 아래 질문의 축을 바꿔야 한다
| 이전 조직의 질문 | 새로운 조직의 질문 |
|---|---|
| “우리가 무엇을 출하했는가?” | “우리가 무엇을 검증했는가?” |
팀 구성의 재편
Gore의 도발적 제안:
“10명의 엔지니어가 기능을 만들던 팀은, 이제 3명의 엔지니어와 7명의 수락 기준(acceptance criteria)을 정의하는 사람들로 바뀐다.”
이는 “엔지니어의 역할이 상향 이동한다"는 흔한 서사를 조직도(org chart) 수준으로 끌어내립니다.
Fowler의 이견
Fowler는 한 가지에서 정중하게 반대합니다 — Gore가 레거시 현대화(legacy modernization) 의 가치를 낮게 본 부분. Fowler의 근거: LLM은 레거시 코드의 재작성 보다 이해 에서 탁월하다는 증거가 쌓이고 있다. 즉 레거시는 버리는 대상이 아니라, 처음으로 대규모로 해독될 수 있는 자산이 됐습니다.
조각 5. 소스 코드의 미래 — LLM-친화 언어
David Cassel(The New Stack)의 개관 기사에 대한 주석. 두 흐름이 대립합니다.
- 새로운 LLM-전용 언어를 설계해야 한다는 입장
- 이미 존재하는 엄격한 타입 언어(TypeScript, Rust)가 최적이라는 입장
Fowler는 결론을 내리지 않지만, 이 질문의 틀 자체가 흥미롭습니다 — “프로그래밍 언어는 누구를 위해 설계되는가"라는 근본 질문을 다시 열기 때문입니다. 인간 가독성, 컴파일러 친화성, 그리고 이제 LLM 생성·검증 친화성까지 세 축의 트레이드오프가 설계 공간을 규정합니다.
조각 6. 언어와 함께 자라는 코드 — Unmesh의 Ubiquitous Language
마지막 조각은 Fowler 본인이 Unmesh Joshi와 공저한 “Growing a Language with LLMs” 의 핵심을 인용하는 형태입니다. DDD의 Ubiquitous Language 개념을 LLM 시대로 확장합니다.
*“프로그래밍은 구문을 타이핑하는 일이 아니라 해법을 조형(shaping a solution)하는 일이다. 이름은 의도를 드러내도록 선택되어야 한다. 좋은 이름은 복잡성을 관통한다. 가장 창의적 행위는 **해법의 구조가 문제와 대응되도록 드러내는 이름의 직조(weaving)*다.”
LLM 시대의 함의:
- 코드의 양이 아니라 이름과 추상의 질이 인간이 시스템을 붙잡는 손잡이가 된다
- LLM은 구문을 생성할 수 있지만, 무엇을 무엇이라 부를지는 여전히 사람이 정한다
- 조각 1의 intent debt에 대한 직접적 처방 — 의도를 드러내는 이름이 바로 intent의 포착 수단
여섯 조각이 그리는 하나의 그림
Fowler는 명시적으로 연결 짓지 않지만, 조각들은 한 방향을 가리킵니다.
- 문제 진단 (조각 1) — 기술 부채만 보던 시야를 cognitive/intent까지 확장
- 인지 모델 (조각 2) — LLM을 System 3로 두되, 항복이 아니라 위임으로 다룰 것
- 문화적 관찰 (조각 3) — 도구를 부르는 언어가 우리의 상상을 결정
- 경제학적 귀결 (조각 4) — 비용은 생산에서 검증으로 이동, 조직도까지 바뀐다
- 재료의 선택 (조각 5) — 어떤 언어가 인간-LLM 공동 작업에 적합한가
- 실천의 핵심 (조각 6) — 이름과 추상이 intent를 담는 그릇
: 코드는 싸지고, 이해와 의도와 검증이 비싸졌다. 그리고 이 세 가지는 전부 사람 쪽에 남아 있는 일이다.
인용 모음
“Cognitive debt accumulates when shared understanding erodes faster than it is replenished.” — Storey
“Cognitive surrender is uncritical reliance on externally generated artificial reasoning, bypassing System 2.” — Shaw & Nave
“Correct isn’t one definition — it’s thousands of definitions, all shifting, all context-dependent.” — Gore
“Programming is shaping a solution. The most creative act is the continual weaving of names that reveal the solution structure.” — Unmesh
실행 체크리스트
- 팀 회고에 “우리가 이번 스프린트에 무엇을 검증했는가?” 를 질문으로 추가
- AI 제안 수용 플로우에 cognitive surrender 방지용 최소 체크포인트 삽입(단 5분이라도 System 2를 강제)
- 핵심 도메인 용어의 ubiquitous language 사전을 LLM 프롬프트와 코드 주석 양쪽에 동기화
- 레거시 자산을 “교체 후보"가 아니라 “LLM으로 해독할 자산” 으로 재분류
- 리팩터링 보고서에 intent debt 지표(문서-코드 정렬, 명칭 일관성)를 기술 부채와 분리해 기록
왜 이 Fragments가 중요한가
Fowler는 주장을 펼치지 않고 배치만 합니다. 그러나 배치의 순서가 논지입니다 — 부채의 재정의 → 사고 시스템의 확장 → 검증의 경제학 → 이름 짓기. AI 엔지니어링 담론이 “생산성 몇 배"에서 맴도는 사이, 이 조각들은 사람 쪽에 남는 일의 목록을 조용히 완성합니다.
코드가 싸진 시대에 당신의 조직은 무엇을 검증했는지 말할 수 있는가 — 그리고 그것을 부르는 이름을 가지고 있는가.