- Spec-Driven Development(SDD) 는 코딩 전 방대한 문서를 작성하는 워터폴식 접근을 부활시킨 방식으로, AI 코딩 보조 도구를 위한 구조화를 목표로 하지만 민첩성을 저해할 위험이 있음
- 오픈소스 커뮤니티는 초기 프롬프트와 지침을 기반으로 명세서·구현 계획·작업 목록을 자동 생성하는 도구들을 개발했으며, 대표적으로 Spec-Kit, Kiro, Tessl, BMad Method가 있음
- 그러나 실제 사용 시 맥락 인식 부족, 과도한 문서화, 이중 코드 리뷰, 허위 안정감 등 여러 한계가 드러나며, 대규모 코드베이스에서는 효율이 급감함
- 글은 SDD가 개발자를 대체하려는 시도로서 워터폴 모델의 실패를 반복한다고 지적하고, 대신 자연어 기반의 반복적 개발 방식을 제안함
- Agile과 Lean Startup 원칙을 결합한 접근이 코딩 에이전트를 활용한 현대 개발에 더 적합하며, 시각적 상호작용 도구의 발전이 다음 과제임
스펙 주도 개발(SDD)의 등장
-
Spec-Driven Development(SDD) 는 AI 코딩 보조 도구를 위한 구조적 개발 방식을 제공하기 위해, 코딩 전 명세 문서를 작성하는 절차를 도입
- 초기 프롬프트와 지침을 바탕으로 LLM이 제품 명세서, 구현 계획, 작업 목록을 생성
- 각 문서는 이전 단계에 의존하며, 사용자가 수정해 명세를 정제
- 완성된 문서는 Claude Code, Cursor, Copilot 등 코딩 에이전트에 전달되어 코드 작성에 활용
- 대표 도구로 GitHub의 Spec-Kit, AWS의 Kiro, Tessl, BMad Method(BMM) 등이 있음
- 관련 비교 분석으로 Birgitta Böckeler의 Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl이 언급됨
마크다운 문서화의 문제
- SDD 명세는 대부분 Markdown 파일 형태로 구성되며, 예시로 GitHub Spec-Kit을 사용한 간단한 기능 구현이 8개 파일, 1,300줄에 달함
- Kiro를 이용한 Atomic CRM의 “referred by” 필드 추가 사례도 다수의 문서로 분리됨
- 실제 사용 시 다음과 같은 단점이 드러남
- 맥락 인식 부족(Context Blindness) : 기존 함수나 코드 맥락을 놓쳐 전문가 검토가 여전히 필요
- 과도한 문서화(Markdown Madness) : 긴 문서로 인해 단순 오류 탐색에 많은 시간 소모
- 체계적 관료주의(Systematic Bureaucracy) : 불필요한 반복과 과도한 세부화로 비효율 발생
- 가짜 애자일(Faux Agile) : “User Story” 개념을 오용해 산만함 초래
- 이중 코드 리뷰(Double Code Review) : 명세 내 코드와 실제 구현을 각각 검토해야 함
- 허위 안정감(False Sense of Security) : 에이전트가 명세를 완전히 따르지 않음
- 효용 감소(Diminishing Returns) : 초기 프로젝트에는 유용하지만, 규모가 커질수록 속도 저하
- 대부분의 코딩 에이전트가 이미 plan mode와 task list 기능을 제공하므로, SDD의 추가 이점은 제한적이며 오히려 개발 비용을 증가시킬 수 있음
프로젝트 매니저의 복수
- SDD의 한계는 도구의 미성숙 때문일 수 있으나, 근본적으로 잘못된 문제 설정에서 비롯됨
- “개발자를 소프트웨어 개발에서 제거하는 방법”이라는 목표를 전제로 함
- 개발자를 코딩 에이전트로 대체하고, 이를 세밀한 계획으로 통제하려는 구조
- 이는 워터폴 모델과 유사하며, 방대한 문서화를 통해 개발자가 단순 번역자 역할을 하도록 만드는 방식
- 그러나 소프트웨어 개발은 비결정적(non-deterministic) 과정으로, 계획만으로 불확실성을 제거할 수 없음 (No Silver Bullet 논문 인용)
- SDD는 요구사항 단계에서 비즈니스 분석가, 설계 단계에서 개발자의 전문성이 모두 필요해, 실제로는 두 역할을 모두 수행할 수 있는 소수만 사용 가능
- 결과적으로 No Code 도구와 마찬가지로 “개발자 없는 개발”을 약속하지만, 결국 개발자를 필요로 함
새로운 대안: 자연어 기반 반복 개발
- Agile 방법론은 예측 가능성 대신 적응성을 택해 비결정적 개발 문제를 해결
- 복잡한 요구사항을 여러 단순한 문제로 분할하는 것이 코딩 에이전트 활용의 핵심
-
Lean Startup 원칙을 적용한 간단한 반복 절차 제시
- 제품의 가장 위험한 가정을 식별
- 이를 검증할 최소한의 실험 설계
- 실험 개발 및 결과에 따라 반복
- 예시로, Claude Code를 이용해 약 10시간 만에 3D 조각 도구(sculpt-3D) 를 개발
- 명세 없이 짧은 지시문으로 기능을 점진적으로 추가
- 잘못된 구현은 즉시 수정하며 빠른 반복 수행
- 이 방식은 워터폴식 문서화 없이도 빠른 수렴이 가능하며, Agile과 코딩 에이전트의 결합으로 실시간 제품 구축이 가능
- 다만 코딩 에이전트가 텍스트 중심이라 시각적 상호작용이 부족하며, 향후 시각적 인터페이스 강화 도구 개발이 필요
결론
- Agile 방법론은 이미 명세 문서를 불필요하게 만들었으며, SDD는 이를 되살리려는 시도로 평가됨
- SDD는 개발자를 배제하려는 이론 중심적 접근으로, 코딩 에이전트를 통한 새로운 개발자 세대의 역량 강화 기회를 놓침
- 코딩 에이전트를 내연기관에 비유하며, SDD가 이를 기관차에만 묶어두는 반면 우리는 자동차·비행기 등 다양한 형태로 확장해야 함
- 마지막으로, 환경을 고려한다면 코딩 에이전트의 절제된 사용이 필요함