research

Software Fundamentals Thesis — 사람과 LLM의 leveling

Software Fundamentals Thesis — 사람과 LLM의 leveling

Matt Pocock의 강연 "It Ain't Broke: Why Software Fundamentals Matter More Than Ever" (AI Engineer Europe)에서 출발한 명제. v1.0 철학에 5 기둥 위에 얹히는 메타 차원으로 추가된다 — "왜 그렇게 만들지"의 답.


한 줄

"AI는 ground-level의 훌륭한 프로그래머다. 그 위에서 strategic하게 사고하는 사람이 필요하고, 그게 당신이다." 둘이 같은 plane에서 만나려면, 사람은 위로 올라가야 하고 LLM은 아래로 깊어져야 한다. harness는 그 leveling을 돕는 substrate.


명제의 핵심

측면Matt의 입장
AI 능력훌륭한 on-the-ground 프로그래머. 구현은 잘함
사람의 역할strategic architect. 위에서 design oversight
"specs → code" 자동화거짓 약속. iteration 1 ok, 2 worse, 3 garbage
코드는 cheap한가❌ 코드는 반복 가능하지만 판단은 cheap하지 않다
fundamentals(고전 software design)의 위치그 어느 때보다 중요해진다
AI 시대 개발자가 늘려야 할 능력architecture, ubiquitous language, deep module, TDD
출처 1A Philosophy of Software Design (Ousterhout)
출처 2The Pragmatic Programmer
출처 3Domain-Driven Design (Evans)

핵심 통찰: AI 시대에 사람이 노릴 자리는 낮은 곳이 아니라 높은 곳. 구현은 AI가, 사람은 architecture·정책·도메인 모델 결정. 이게 가능하려면 사람이 그 layer를 볼 줄 알아야 함 = fundamentals.


사람 ↔ LLM의 관계 — 추상적 구조

핵심: harness는 사람을 strategic level에 머물게 하고 AI를 tactical에 묶는 substrate. AI가 strategic까지 침범하면 garbage가 나오고, 사람이 tactical까지 내려가면 시간 낭비.


사용자 표현과의 정확한 만남

"사람이 해당 사항을 LLM의 수준 또는 LLM이 프로그래머의 생각까지 올라와야 하는 등의 시각"

Matt thesis는 이 양방향 leveling의 방향을 분명하게 정한 답:

사람은 위로 올라가고 (strategic, fundamentals를 익혀서)
LLM은 아래에서 깊어진다 (tactical, 더 정교한 구현으로)

→ 둘이 만나는 plane = harness가 정의하는 layer 경계

따라서 v1.0의 정체성 한 줄: "사용자를 strategic level에 머물게 하는 substrate. AI는 그 substrate 위에서 tactical을 처리한다."


명제와 부딪히는 다른 입장들

이 thesis를 역사적 맥락에 놓으려면 부정 입장들을 보면 됨.

A. "code is cheap" 진영

  • spec 한 번 잘 쓰면 code는 무한히 regenerate 가능
  • 대표 흐름: 일부 vibe coding, no-design specs, "AI가 다 해줄 것"
  • Matt의 반박: iteration 1 ok, 2 worse, 3 garbage. design oversight 없는 regeneration은 누적 부패

B. "specs → code" 자동화 진영

  • DSL/IR로 spec 쓰면 코드 generation
  • 부분적 진실: 좁은 도메인은 가능 (UI, CRUD)
  • 한계: domain 결정·architecture 결정은 spec으로 표현 불가

C. "AI replaces programmers" 진영

  • 프로그래머 자체가 obsolete
  • Matt의 반박: AI는 ground-level. 위가 비면 시스템이 무너진다
  • 시장 데이터: senior architect 수요 증가, junior implementer 수요 감소

D. "fundamentals are obsolete" 진영

  • "AI가 다 알아서 해주니 design pattern·DDD·TDD는 죽었다"
  • Matt의 반박: fundamentals는 AI에게 무엇을 시킬지 결정하는 언어. 그게 없으면 strategic 사고가 안 됨

v1.0의 5 기둥 위에 추가될 메타 차원

paradigm-comparison의 5 기둥은 *어떻게 만들지(how)*에 대한 답. Matt thesis는 *왜 그렇게 만들지(why)*의 답.

5 기둥 (how)+ Matt thesis (why)
1. Layered Libraries, not Products사용자가 각 layer에서 strategic 결정을 할 수 있어야 함. product가 결정을 가둬두면 strategic level이 사라짐
2. Vendor & Segment Neutral Substratesubstrate가 vendor에 묶이면 사용자의 strategic 자유가 좁아짐
3. 차등 확장 비용 from Day 1hooks/skills/plugins/MCP는 사용자가 경제 cost를 보고 strategic하게 선택하기 위함
4. Protocol-first 외부 인터페이스protocol이 strategic 경계. 사용자가 어디서 무엇을 부를지 명시적 결정
5. Segment 진입 장벽 = 결정의 input학내 사용자가 자기 도메인의 strategic architect가 될 수 있게

→ 5 기둥 모두 Matt thesis의 작동 도구. 우연이 아니라 같은 철학의 다른 표현.

기둥 6 (메타) — Strategic Substrate: harness는 사용자를 strategic level에 머물게 한다. AI에게 tactical을 위임할 수 있는 경계를 도구로 제공한다.


구체적 영향 — v0.x 단계별 적용

v0.1 (stateless SDK)

  • API 추상화의 경계 자체가 strategic 결정 도구. trait가 두꺼우면 사용자의 strategic 사고 공간이 좁아짐
  • 이게 thin trait + composable 결정의 새 근거

v0.2 (agent loop)

  • agent loop는 tactical. 사용자는 그 loop를 어떻게 설정하고 어디서 끊을지 결정 (strategic)
  • loop 자체를 자동화하지 말고, loop의 모양을 사용자가 선언적으로 표현

v0.3 (memory)

  • memory 전략은 strategic 결정 (compaction 시점, hot/cold 구분)
  • SDK는 backend·전략·budget을 사용자가 명시적으로 선택할 수 있게

v0.4 (sub-agent / action policy)

  • action policy 자체가 strategic. ReAct/Plan/Reflexion 중 무엇을 쓸지 사용자 결정
  • substrate는 모든 policy의 substrate가 되고, 한 가지를 박아두지 않음

v0.5 (skills / plugins)

  • skills 정의는 ubiquitous language. Matt의 ubiquitous language skill 패턴 그대로
  • 학내 segment에서는 학내 도메인 용어로 skills 작성 → AI가 학내 vocabulary로 사고

v0.6 (hooks)

  • hooks는 사용자의 strategic decision을 lifecycle에 박는 도구
  • "이 시점에 항상 commit", "이 시점에 항상 lint" — strategic policy를 mechanism으로

v0.7 (MCP)

  • MCP server 노출 = agent가 다른 사람의 strategic substrate에 tactical로 끼어드는 형태
  • 이게 AI가 ground-level programmer로서 ecosystem에 참여하는 모양

v0.8 (sandbox)

  • 권한·경계는 strategic. capability + 직관 모델 둘 다 = 사용자가 자기 trust 모델을 선택
  • "AI에게 어디까지 맡길지"는 사용자의 fundamentals 위에서 결정

v1.0

  • 모든 layer가 사용자의 strategic 사고를 돕는 도구
  • 학내 사용자가 자기 segment의 architect가 됨

v1.0이 채택할 Matt의 구체 패턴

"grill me" prompt 패턴

  • 사용자가 design 의도를 말하면, AI가 반례·약점·놓친 가정을 묻는 형태
  • v0.5 skills layer에서 표준 skill로 제공
  • "사람이 LLM 수준에 올라가는" 직접 도구

Ubiquitous language skill

  • 도메인 용어집을 skill로 등록 → AI가 그 용어로 일관되게 사고
  • 학내 segment는 학내 vocabulary(과목 코드, 학사 일정, 학칙) 그대로 채택
  • verbosity 감소, 일관성 증가

TDD를 small deliberate steps로

  • AI에게 한 step씩 시키고 사람이 confirm
  • v0.6 hooks로 각 step에서 test 자동 실행 박아둠
  • "specs → code" 자동화의 garbage 누적 회피

Deep module architecture

  • Ousterhout의 deep module = small interface + deep implementation
  • v0.1 SDK 자체가 deep module이 되어야 함 (얇은 trait, 풍부한 동작)
  • 학내 통합 모듈도 같은 원칙 — 학생은 작은 표면만 보고, 학내 통합 동작은 깊게

.claude/skills 같은 declarative skill repo

  • Matt의 mattpocock/skills repo 공개 패턴
  • v1.0은 학내 사용자가 자기 skill을 공유 가능한 repo로 두는 문화 (이미 5 기둥의 OSS sharing과 정렬)

인사이트 — 학내 segment에서 Matt thesis의 의미

학내 segment는 Matt thesis와 특히 잘 맞는다:

  • 학생/연구자/조교는 자기 도메인의 architect가 될 자질 있음 (전공 지식, 도메인 사고)
  • fundamentals를 배우는 단계에 있는 사용자가 많음 — Matt thesis가 강조하는 학습 path와 정렬
  • 학내 LLM 토큰은 tactical 부담을 낮추는 진입 장벽 감소 — 사용자가 strategic 사고에 시간 투자 가능
  • 학내 시스템은 도메인 vocabulary가 분명함 (학사·과목·학과·동아리) → ubiquitous language skill이 자연스럽게 형성

→ v1.0이 학내 사용자에게 주는 약속: "당신을 학내 도메인의 strategic architect로 만든다. tactical 구현은 AI에게, fundamentals 학습은 도구가 돕는다."


메타 통찰 — 이 thesis가 산업에 남기는 것

Claude Code의 "1.6/98.4" 명제는 harness가 차별화라고 했다. Matt의 thesis는 그 위에 한 발 더: harness가 만드는 strategic layer가 사용자의 가치다.

5 reference paradigm은 harness가 무엇을 자동화하는가에 답한다. Matt의 thesis는 harness가 무엇을 사용자에게 남기는가에 답한다.

이 두 답이 만나는 좌표가 v1.0의 자리.


관련


Sources