- 처음 Claude Code를 사용할 때 단순히 프롬프트 지시와 수정 반복 방식으로 접근했지만, 복잡한 작업에서는 대화 기록 의존성과 컨텍스트 한계 문제를 겪음
- 이를 해결하기 위해 기능 구현 전에 계획 문서(plan document)를 작성하게 하고, 이를 새로운 세션의 단일 진실의 원천(SSOT) 으로 삼음
- 계획 문서는 요구사항 재정리, 구현 세부 설명, 코드 품질 확인 명령어 등을 포함하며, 구현 중에도 살아있는 문서(living document) 로 지속 업데이트됨
- 이렇게 하면 맥락 손실 문제가 해결되고, 새로운 세션에서도 단일 문서만으로 프로젝트를 이어갈 수 있음
- 결과적으로 AI는 단순한 실행 도구가 아니라, 개발자가 설계를 더 깊이 고민하고 기록하도록 유도하는 협력적 디자인 파트너 역할을 하게 됨
문제의식: 단순 대화 방식의 한계
- Claude Code와 대화형으로 작업을 진행할 때, 간단한 작업에는 적합하지만 복잡한 작업이 커질수록 여러 가지 중대한 한계가 발생함
- 대화가 유일한 진실의 원천이 되어, 새로운 메시지가 이전 지시를 쉽게 덮어쓸 수 있으며, 그 순간을 명확히 인지하기 어려움
- AI의 컨텍스트 크기 한계로 인해, 대화가 길어질수록 앞선 정보가 누락될 수 있음
- Claude Code가 대화 압축 기능을 갖추고 있지만 이 한계를 완전히 해소하지는 못함
플랜 문서 중심 방식 실험
- 이런 문제 해결을 위해 플랜 문서 기반 접근을 시도함
- 시작 시, Claude Code에게 구현할 기능이나 수정해야 할 버그 등에 대해 가능한 상세하게 설명함
- 참조할 수 있는 기존 소스 파일이나 이전에 작성된 플랜 문서도 언급함
- 지나치게 구체적인 구현 지시는 피하며, AI의 설계 제안 역할을 유도함
- 플랜 문서가 충분히 만족스러우면 대화 기록을 지우고 해당 플랜만 맥락으로 새로 시작함
- 플랜에는 기능 요약, 구현 계획, 코드 및 의사코드, 타입/린트/테스트 명령 등이 포함되어 있음
협업적 설계 프로세스
- AI가 제안한 설계가 마음에 들지 않을 때, 구체적 피드백을 제공해 수정된 접근법을 유도함
- 논의 과정에서 AI의 첫 제안이 더 적합했다는 점을 깨닫기도 하며, 자체 설계만으로 코딩을 진행할 때보다 더 효율적임
- 체계적인 대화는 동료 개발자와 플랜을 논의하는 것과 유사한 경험 제공
- AI는 단독으로 전혀 다른 접근법을 제시하진 않으나, 질의하면 다른 대체안을 제안할 수도 있음
살아있는 문서(Living Document) 방식
- 플랜 문서를 한 번 작성하고 끝내지 않고, 기능 구현 도중에도 계속 갱신하게 함
- 구현과정이나 타입 체크, 린트, 테스트 과정에서 드러나는 변경사항을 실시간 반영함
- 코드 커밋할 때마다 플랜의 최신 상태 점검을 요청하는 습관 형성
- 항상 최신의 플랜이 유지됨에 따라, 새 대화 세션에서도 플랜만 첨부하면 맥락 손실 없이 그대로 이어나갈 수 있음
코드 리뷰 및 개발 습관 변화
- 구현이 시작된 후에는 주기적으로 변경사항을 확인하고, 만족스러우면 AI의 작업을 더 신뢰하기도 함
- 최종 코드 검토 시 업데이트된 플랜 문서가 기술적 의사결정 근거를 파악하는 데 도움이 됨
- 사전에 치밀하게 플랜을 세워 문서화함으로써 더 나은 개발자로 성장하는 경험을 얻음
- AI에게 설명해야 하므로 자신의 의사결정 과정을 명확하게 정리하게 됨
혼돈에서 체계로
- 이 방식은 플랜 문서가 진실의 단일 원천이 되게 하고, 맥락 손실 문제를 해소하며, 아키텍처적 사고를 촉진함
- 플랜 문서는 사양과 구현 로그를 모두 포함하며, ‘무엇’뿐만 아니라 ‘왜’, ‘어떻게’까지 기록함
- 끝 결과는 계획적이고, 문서화가 잘 되어 있으며, 신뢰성 높은 개발 프로세스임
- AI는 단순한 구현자가 아니라 협업 설계 파트너로 자리매김함