Spec-First Development란 무엇인가? (완전 가이드)
Source: Dev.to
1. 팀이 보통 이것을 놓치는 이유
답변에 두 개 이상의 역할이 의존하게 되는 순간 문제가 발생합니다.
제품 팀은 속도를 원하고, 엔지니어링은 경계를 원하며, QA는 테스트 가능성을 원하고, 운영팀은 즉흥적인 조치 없이 롤백할 수 있는 무언가를 원합니다. 사양이 이러한 긴장을 해결하지 못하면 작업은 재작업이라는 형태로 하류로 흐르게 됩니다.
사양‑우선 접근 방식 뒤에 숨은 실제 결정 요인은 소유권입니다. 경계를 누가 승인하나요? 수용 기준을 누가 검증하나요? 롤아웃을 누가 중단할 수 있나요? 이러한 답변이 서면으로 존재하지 않으면, 팀은 책임이 흐릿한 상태로 배포하게 됩니다.
2. 구체적인 전달 상황
실제적인 전달 경로 하나에 대해 사양을 테스트해 보세요. 다음을 물어보세요:
- 검토자가 거부할 수 있는 것은 무엇인가?
- 테스터가 검증할 수 있는 것은 무엇인가?
- 운영자가 롤백할 수 있는 것은 무엇인가?
문서가 이 세 가지 관점을 답하지 못한다면 아직 준비되지 않은 것입니다. 팀이 “아이디어를 이해한다”는 질문을 그만하고, 작성된 사양이 인수인계 과정을 견딜 수 있는지 묻는 것으로 전환하세요.
3. 사양이 크게 외쳐야 할 내용
강력한 사양이 우연히 길어지는 것이 아니라, 프로젝트가 흔히 흐트러지는 지점을 더 명확히 하기 때문입니다. 최소한 다음을 포함해야 합니다:
- 의도된 결과, 명시적인 비목표(non‑goals), 그리고 범위 변경에 대한 결정 소유자
- 부수적인 지식 없이 통과 또는 실패를 판단할 수 있는 수용 기준
- 실패 동작, 대체 경로, 그리고 릴리즈 후 이를 드러낼 로그나 메트릭
4. 추측을 없애는 수용 기준
Given the approved scope and dependencies
When the team executes the primary flow
Then success can be verified with a concrete result and observable evidence
Given an exception, retry, or permission boundary is hit
When the system takes the fallback path
Then the user‑facing behavior and operational response remain explicit목표는 모든 팀에게 동일한 문구를 강요하는 것이 아니라, 입력, 트리거, 기대 동작에 대한 결정을 내리게 하는 것입니다. 아직 비용이 적게 드는 시점에 방향을 바꿀 수 있도록 말이죠.
5. 구현 시작 전 검토 질문
- 처음으로 변경을 보는 검토자에게 여전히 모호하게 보일 결정은 무엇인가?
- QA가 저자를 인터뷰하지 않고도 주요 흐름, 실패 경로, 회귀 사례를 도출할 수 있는가?
- 릴리즈가 실패했을 때, 문서가 운영팀에 무엇을 감시하고 언제 중단해야 하는지를 알려주는가?
이 질문에 사이드 대화 없이 답할 수 없다면, 초안에는 아직 가격이 매겨지지 않은 불확실성이 남아 있는 것입니다.
6. 롤아웃, 모니터링, 롤백
좋은 사양은 병합 준비 단계에서 멈추지 않습니다. 안전하게 릴리즈하는 방법을 팀에 알려줍니다:
- 가장 작은 유용한 대상에게 먼저 단계적으로 배포 — 리뷰 승인만을 런타임 증거의 대체물로 여기지 말 것
- 릴리즈 전 손절(stop‑loss) 임계값을 명시: 오류율, 지연 시간, 데이터 불일치, 혹은 오버라이드 양
- 롤백이 실제로 의미하는 바를 기록: 코드 복구, 설정 전환, 작업 일시 중지, 혹은 데이터 복구
7. 흔히 저지르는 실수
- 범위를 당연하게 여기고 실제 정책 결정을 구현 검토에 넘겨버림
- reasonable, friendly, handled elsewhere 와 같은 모호한 표현 뒤에 위험한 엣지 동작을 숨김
- 성공이나 롤백을 어떻게 판단할지 전혀 언급하지 않은, 완전해 보이는 문서를 공개함
8. 깊게 파고들 때와 가볍게 유지할 때
적절한 상세 수준은 나중에 비용이 많이 드는 발명을 방지할 만큼 충분한 양입니다. 엔지니어링, QA, 운영팀이 추측해야 하는 문장이 하나라도 빠져 있다면, 그 문장은 사양에 포함되어야 합니다.
중요한 것은 문서 길이가 아니라, 구현, 테스트, 릴리즈 검토 단계에서 팀이 같은 결정을 다시 고민하지 않도록 막는가 여부입니다.
9. 최종 정리
사양‑우선 개발은 사양이 위험한 결정을 충분히 일찍 명시해 누군가가 도전할 수 있게 될 때 비로소 쉬워집니다. 이것이 실질적인 가치이며, 즉흥성을 줄이고, 검토 시 놀라움을 감소시키며, 배포 시 더 깔끔한 증거를 제공하게 됩니다.