핵심 개념
의도 공학이 왜 존재하는지, 무엇을 거부하는지, 의도가 희소 자원이 되면 무엇이 달라지는지.
병목이 이동했다
소프트웨어 공학은 수십 년간 하나의 제약을 최적화했습니다: 인간이 작성하는 코드는 비쌌습니다. 패턴, 코드 리뷰, CI/CD, 마이크로서비스, 애자일: 모두 희소한 코드를 관리하기 위한 시스템이었습니다.
그 제약이 무너졌습니다. AI 에이전트는 이제 코드를 기계 속도로 생성, 리뷰, 테스트, 배포할 수 있습니다.
새로운 병목은 의도입니다. 코드가 저렴해지면, 희소 자원은 무엇을 만들지, 왜 중요한지, 무엇을 배제할지 결정하는 것입니다. 그것 없이 AI는 세련된 쓰레기를 만들어냅니다.
의도 공학은 이 전환을 받아들입니다: 의도를 제외한 모든 것은 선택입니다. 기술 스택, 아키텍처, 일정. 인간의 역할은 Why, What, Not, Learnings입니다. 나머지는 AI가 처리합니다.
의도 공학이 아닌 것
프롬프트 엔지니어링이 아닙니다: 프롬프트 엔지니어링은 하나의 대화를 조율하지만, 의도 공학은 모든 대화가 상속하는 영속적 문서를 정의합니다.
설계 문서가 아닙니다: 설계 문서는 How를 규정하지만, 의도 문서는 How를 거부합니다. 기술 스택, 아키텍처, 일정은 구현 선택이기 때문입니다.
PRD가 아닙니다: PRD는 포괄적이고 고정적이지만, 의도 문서는 최소한으로 유지하고, 탐색을 통해 진화하며, 폐기될 수 있습니다.
프레임워크나 도구가 아닙니다: 마크다운 파일 하나와 규율입니다.
세 개의 레이어
의도 문서에는 정확히 세 개의 레이어가 있습니다. 인간이 소유하는 것은 Why, What, Not 세 가지뿐이기 때문입니다. 나머지는 모두 구현 선택입니다.
Why -- 이것이 존재하는 이유
Why는 가치에 대한 주장입니다: 누구의 고통이 중요한지, 어떤 결과가 성공인지, 어떤 증거가 마음을 바꿀 수 있는지. seed와 exploring에서는 내기이고, clarified에서는 약속입니다.
What -- 만들고 있는 것
What은 약속의 표면적입니다: 기능, 사용자 흐름, 엣지 케이스. AI가 작업을 도출할 수 있을 만큼 구체적이어야 하지만, How에 대해서는 침묵해야 합니다. "사용자가 보고서를 PDF로 내보낼 수 있다"는 여기에 속하고, "puppeteer를 사용하라"는 속하지 않습니다.
Not -- 넘어서는 안 되는 경계
Not은 진지함이 드러나는 곳입니다: 보안 제약, 범위 제한, 품질 기준, 금지 패턴. Not이 없으면 AI는 당신이 쓰지 않은 가정에 대해 최적화합니다.
Learnings -- 진화의 엔진
명확함은 보통 늦게 옵니다. 아이디어는 seed로 시작합니다: 모호하고, 취약하고, 흥미로운 방식으로 틀린 상태. 앞으로 나아가는 방법은 탐색입니다.
Learnings는 무엇을 시도했는지, 현실이 무엇을 말했는지, 무엇이 바뀌었는지에 대한 타임스탬프 기록입니다.
인간에게: 수정주의적 역사를 차단합니다. 프로젝트가 방향을 전환할 때, 이유는 기억이 아닌 Learnings에 있습니다.
AI에게: 코드가 절대 담을 수 없는 컨텍스트를 전달합니다. 에이전트는 현재의 형태뿐만 아니라 그것을 만들어낸 경로도 봅니다.
생명주기
의도는 네 가지 상태를 거칩니다:
| 상태 | 설명 | 해야 할 일 |
|---|---|---|
| seed | 아이디어만 있는 상태. Why는 추측이고, What과 Not은 비어 있거나 모호합니다. | 가설을 작성합니다. 첫 번째 테스트를 실행합니다. |
| exploring | 프로토타입, 리서치, 인터뷰를 통해 가설이 압박받는 상태. | 실험을 실행합니다. Learnings를 기록합니다. 필요에 따라 Why/What/Not을 재작성합니다. |
| clarified | Why, What, Not이 명시적인 상태. 불확실성 표시가 사라졌습니다. | AI에 넘깁니다. 빌드하게 합니다. |
| killed | 증거가 만들지 말라고 말하거나, 기존 솔루션이 이미 이기고 있는 상태. | 이유를 기록합니다. 멈춥니다. 이것은 좋은 결과입니다. |
가장 어려운 전환은 어떤 상태 → killed입니다. 프로젝트를 시작하는 것은 저렴합니다. 나쁜 프로젝트를 멈추는 것이 판단력입니다.
기존 개념과의 관계
| 개념 | 범위 | 의도 공학과의 관계 |
|---|---|---|
| Context Engineering | 작업별, 일시적 | 의도 문서는 모든 작업 위에 존재하는 영속적 컨텍스트입니다. |
| Harness Engineering | 도구 및 환경 설정 | Not 레이어는 하네스 규칙으로 컴파일되어야 합니다: CLAUDE.md, 린터, CI. |
| Spec-driven Development | 기능 명세 | 명세는 What에서 도출됩니다. 인간이 직접 작성하는 것을 멈춥니다. |
| Vibe Coding | 코드 생성 | 바이브 코딩은 의도가 날카로울 때만 레버리지를 얻습니다. |
자동화 파이프라인
성숙한 파이프라인에서 인간이 관여하는 지점은 두 곳입니다: 위쪽의 의도와 아래쪽의 판단.
[Intent Document] ← Human writes and maintains
↓
[Spec Generation] ← AI derives task list from Why/What/Not
↓
[Implementation] ← AI agents write code in parallel
↓
[Verification] ← AI cross-reviews, tests, lints
↓
[Deployment] ← CI/CD automates release
↓
[Feedback] ← User data flows back
↓
[Learn & Decide] ← Human evaluates, updates intent or kills
의도와 피드백 사이의 모든 것은 이제 자동화 가능합니다. 기술 스택, 아키텍처, 작업 분해, 검증 흐름, 배포 주기: 모두 선택입니다. 환원 불가능한 인간의 역할은 Why, What, Not, Learnings입니다.
왜 효과가 있는가
제약이 명확함을 낳습니다. Why/What/Not은 사람들이 숨는 장소를 제거합니다: 로드맵 연극, 아키텍처 코스프레, 거짓 정밀도. 의도를 깔끔하게 말할 수 없다면, 아직 만들 준비가 되지 않은 것입니다.
AI가 당신보다 How를 잘합니다. AI는 어떤 개별 엔지니어보다 더 넓은 구현 기억을 가지고 있습니다. How를 과도하게 지정하면 솔루션이 당신의 국소 최적에 갇힙니다.
폐기는 생산적입니다. 기록된 폐기는 낭비가 아니라 불확실성의 상환입니다. 죽은 프로젝트의 Learnings는 출시된 프로젝트의 코드보다 오래 살아남는 경우가 많습니다.
의도의 정밀도가 확장됩니다. Why의 날카로운 한 문장이 작업 생성, 리뷰, 테스트, 배포 전반에 전파됩니다. 모호한 의도는 모호함을 증폭하고, 날카로운 의도는 일관성을 증폭합니다.
시작하기
프로젝트 루트에 INTENT.md를 만들고 Why, What, Not, Learnings만 작성하세요. 증거가 제거할 때까지 불확실성은 (?)로 표시하세요.
구체적인 절차는 빠른 시작 가이드에 있습니다. 규율은 How를 문서에 밀반입하지 않는 것입니다.