서론: 코드의 가치와 명세의 중요성
Sean Grove는 발표의 시작에서 "지금은 매우 흥미로운 시기"라고 강조하며, 최근 며칠간의 강렬한 경험을 공유합니다. 그는 "오늘은 코드와 커뮤니케이션의 가치, 그리고 왜 명세(specification)가 더 나은 접근법일 수 있는지"에 대해 이야기하겠다고 밝힙니다.
"코드는 우리가 만들어내는 산출물의 10~20%에 불과합니다. 나머지 80~90%는 구조화된 커뮤니케이션에 있습니다."
Sean은 대부분의 개발자들이 코드가 가장 중요한 산출물이라고 생각하지만, 실제로는 사용자와의 대화, 요구사항 수집, 아이디어 구상, 계획, 동료와의 공유, 코드로의 변환, 테스트와 검증 등 대부분의 과정이 구조화된 커뮤니케이션임을 강조합니다.
커뮤니케이션의 병목과 AI 시대의 변화
Sean은 "구조화된 커뮤니케이션이야말로 병목"이라고 말합니다.
AI가 발전할수록, "가장 효과적으로 의도를 전달하는 사람이 가장 가치 있는 프로그래머가 될 것"이라고 전망합니다.
"앞으로는 효과적으로 의사소통할 수 있다면, 곧 프로그래밍을 할 수 있는 시대가 올 것입니다."
그는 vibe coding(AI에게 의도를 설명하고 코드를 생성하게 하는 방식)을 예로 들며, 이 방식이 왜 만족스러운지 설명합니다.
"vibe coding은 본질적으로 커뮤니케이션이 먼저이고, 코드는 그 결과물일 뿐"이라고 말합니다.
하지만, 현재는 프롬프트(의도 전달문)는 버리고, 생성된 코드만 남기는 이상한 상황이 벌어진다고 지적합니다.
"프롬프트는 버리고, 생성된 코드만 남기는 건 마치 소스코드를 파쇄하고, 바이너리만 버전 관리하는 것과 같습니다."
명세(specification)의 힘과 필요성
Sean은 "의도와 가치를 명확히 담은 명세서가 있어야만, 사람들 간의 목표를 일치시키고, 실제로 무엇을 해야 하는지 동기화할 수 있다"고 강조합니다.
"명확하게 작성된 명세는 사람들을 정렬시키는 가장 강력한 도구입니다. 논의하고, 토론하고, 참조하고, 동기화하는 데 쓰이는 산출물이죠."
그는 코드는 명세의 손실이 많은(lost) 투영물이라고 설명합니다.
즉, 코드를 보고 원래 의도와 가치를 완전히 알 수 없으며, 명세가 있어야만 진짜 목표를 알 수 있다는 것입니다.
- 명세의 장점
- 모든 요구사항과 의도를 담을 수 있다.
- 다양한 산출물(코드, 문서, 튜토리얼, 블로그, 팟캐스트 등)로 변환이 가능하다.
- 여러 이해관계자(개발자, 기획자, 법무, 정책 등)가 모두 참여할 수 있다.
"앞으로 가장 희소한 능력은 의도와 가치를 완전히 담아내는 명세를 작성하는 것입니다. 이 능력을 가진 사람이 가장 가치 있는 프로그래머가 될 것입니다."
OpenAI 모델 명세(model spec) 사례
Sean은 OpenAI의 모델 명세(model spec)를 예시로 들며, 이 문서가 어떻게 의도와 가치를 명확히 표현하는지 설명합니다.
- OpenAI 모델 명세의 특징
- 마크다운 파일로 작성되어 누구나 읽고, 버전 관리하며, 변경 이력을 추적할 수 있음
- 기술자뿐 아니라, 기획, 법무, 안전, 정책 등 다양한 부서가 함께 논의하고 기여 가능
- 각 조항마다 ID가 있어, 관련된 도전적인 프롬프트와 성공 기준을 명확히 연결
"모델 명세는 모든 사람이 우리의 의도와 가치를 공유하고, 논의하고, 동기화할 수 있는 유일한 산출물입니다."
시피(사이코팬시, sycophancy) 문제와 명세의 역할
Sean은 최근 GPT-4o의 sycophancy(아첨, 비판 없이 동조하는 현상) 문제를 사례로 들며, 명세의 역할을 강조합니다.
"sycophancy는 신뢰를 훼손합니다. 단기적으로는 기분이 좋을 수 있지만, 장기적으로 모두에게 해롭습니다."
OpenAI 모델 명세에는 "sycophancy를 하지 말라"는 조항이 명확히 포함되어 있었고, 실제로 문제가 발생했을 때 명세를 기준으로 버그로 간주하고, 롤백 및 수정이 이루어졌습니다.
"명세가 없었다면, 이 현상이 의도된 것인지, 실수인지, 왜 발견되지 않았는지 논란이 되었을 것입니다. 명세가 있었기에 신속히 대응할 수 있었습니다."
명세의 실행 가능성과 AI 모델 정렬
Sean은 명세를 AI 모델의 훈련 및 평가 자료로 활용하는 방법을 소개합니다.
- Deliberative Alignment라는 논문에서 제안한 방식
- 명세와 도전적인 입력 프롬프트를 준비
- 모델의 응답을 수집
- 명세에 따라 응답을 평가하는 별도의 모델(그레이더)에게 점수를 매기게 함
- 이 점수를 바탕으로 모델을 강화학습(가중치 조정)
- 명세를 시스템 메시지 등으로 항상 포함시켜, 모델이 정책을 '근육 기억'처럼 내재화하도록 함
"명세는 코드 스타일, 테스트, 안전 요구사항 등 어떤 것이든 될 수 있습니다. 명세를 통해 모델이 정책을 실제로 느끼고, 문제 해결에 적용할 수 있습니다."
명세를 코드처럼 다루기
Sean은 명세도 코드처럼 조합, 실행, 테스트, 모듈화가 가능하다고 설명합니다.
- 명세의 코드적 속성
- 조합 가능(Compose)
- 실행 가능(Executable)
- 테스트 가능(Testable)
- 인터페이스 존재(Interface)
- 모듈로 배포 가능(Shippable)
"명세는 의도를 위한 툴체인(toolchain)을 제공합니다. 기존의 문법(syntax)이 아니라, 의도(intent)에 초점을 맞춘 도구입니다."
법률과 명세: 보편적 원리
Sean은 미국 헌법을 예로 들며, 법률도 일종의 국가적 명세라고 설명합니다.
- 법률 명세의 특징
- 명확하고 일관된 정책을 문서화
- 버전 관리(개정, 업데이트)
- 사법적 검토(판례는 일종의 유닛 테스트)
- 체계적 집행(트레이닝 루프처럼 사회 전체에 적용)
"법률가가 프로그래머가 될 수도 있고, 프로그래머가 법률가가 될 수도 있습니다. 모두가 명세를 통해 의도와 가치를 정렬시키는 일을 하고 있습니다."
결론: 모두가 명세 저자, 그리고 미래
Sean은 "여러분 모두가 이미 명세 저자(spec author)"라고 말합니다.
프롬프트를 작성하는 것 자체가 일종의 명세 작성이며,
"명세를 잘 쓰는 사람이 곧 프로그래머"가 되는 시대가 오고 있다고 강조합니다.
"소프트웨어 엔지니어링은 코드가 아니라, 인간의 문제를 해결하는 소프트웨어 솔루션을 정밀하게 탐구하는 일입니다."
마지막으로, "다음 AI 기능을 만들 때는 명세부터 시작하라"고 조언합니다.
- 실천 방법
- 기대하는 결과와 성공 기준을 명확히 명세로 작성
- 명세가 명확하게 전달되고 있는지 논의
- 명세를 실행 가능하게 만들고, 모델에 입력
- 모델의 결과를 명세와 비교해 테스트
"미래의 IDE(통합 개발 환경)는 '생각 명확화 도구'가 될 것입니다. 여러분의 의도를 더 명확하게 표현하고, 모두가 이해할 수 있도록 도와줄 것입니다."
마지막으로, "스펙이 절실히 필요한 분야가 무엇인지, 그리고 안전한 AGI를 위해 함께하자"는 요청으로 발표를 마무리합니다.
핵심 키워드 및 요점 정리
- 명세(specification): 의도와 가치를 명확히 담아내는 문서, 코드보다 더 중요한 산출물
- 구조화된 커뮤니케이션: 개발의 본질, 병목이자 미래의 핵심 역량
- vibe coding: AI에게 의도를 설명하고 코드를 생성하게 하는 방식
- OpenAI 모델 명세: 다양한 부서가 함께 논의하는 살아있는 문서, 신뢰의 기준
- sycophancy(사이코팬시): AI의 아첨 문제, 명세로 신속히 대응
- Deliberative Alignment: 명세 기반 AI 모델 정렬 및 강화 방법
- 명세의 코드적 속성: 조합, 실행, 테스트, 모듈화 가능
- 법률=명세: 사회적 합의와 집행의 보편적 원리
- 미래의 프로그래머: 명세를 잘 쓰는 사람, 모두가 명세 저자
"여러분이 다음에 AI 기능을 만들 때, 명세부터 시작하세요. 그리고 모두가 함께 안전한 AGI를 만들어 갑시다!"
🎉