최근 AI 에이전트를 활용해 명세서(Specification)로부터 코드를 자동 생성하려는 시도가 늘고 있으나, 이는 두 가지 치명적인 오해에 기반하고 있음. 첫째는 명세서가 코드보다 작성하기 쉽다는 생각이며, 둘째는 명세서 작성이 코딩보다 더 깊은 고민을 유도한다는 생각임.
상세한 명세의 실체: 위장된 코드
OpenAI의 Symphony 프로젝트는 명세서로부터 생성된 모범 사례로 홍보되지만, 실제 SPEC.md 파일을 들여다보면 데이터베이스 스키마의 텍스트 덤프, 동시성 제어 로직, 심지어 실제 알고리즘의 의사코드가 가득함. 이는 명세서라기보다 마크다운 형식으로 작성된 코드에 가까움. 명세가 코드를 대체할 만큼 상세해지려면, 결국 코드와 동일한 정밀도를 요구하게 됨.
다익스트라의 통찰과 현대적 실패
에드스허르 다익스트라는 인간의 언어로 기계와 소통하는 것이 삶을 단순화할 것이라는 가정을 경계했음. 수학의 역사에서도 서술적 방식은 상징적 기호(코드의 전신)에 밀려 도태되었음. 저자가 실제로 OpenAI의 명세를 바탕으로 클로드(Claude)를 이용해 하스켈(Haskell) 코드를 생성해본 결과, 수많은 버그가 발생하거나 실행 중 무한 루프에 빠지는 등 신뢰할 수 없는 결과물이 나옴.
명세서의 타락: '슬롭(Slop)'의 등장
전통적으로 명세는 신중한 설계를 위한 도구였으나, 현재의 에이전트 코딩 열풍은 배포 속도만을 최적화하며 맥락 없는 문장의 나열인 '슬롭'을 양산하고 있음. 명세서가 시간 단축을 위한 도구로 전락하는 순간, 설계의 정밀함은 사라지고 AI가 이해하기 쉬운 형태의 중복된 텍스트만 남게 됨. 결국 명확하지 않은 입력(명세)은 신뢰할 수 없는 출력(코드)으로 이어질 뿐임.
검열관 메모 (1)
개인적으로는 AI는 툴로서 너무 잘 쓰고 있지만..
AI 만능설 함정에 빠지는 건 주의해야 할것 같습니다.