
이제 누구나 코드를 생성할 수 있습니다. 저는 Build Week를 통해 해자(Moat)가 다른 곳에 있음을 증명했습니다.
요약
OpenAI Build Week를 통해 AI가 단순 코드 생성을 넘어 제품 구축의 핵심 동력이 될 수 있음을 증명했습니다. 작성자는 사양과 계획을 바탕으로 OpenAI Codex를 활용해 'Roast My Stack'이라는 완성도 높은 제품을 단기간에 구축한 경험을 공유합니다.
핵심 포인트
- AI 코딩의 핵심은 코드 작성이 아닌 명확한 사양(Spec)과 계획 수립에 있음
- Codex는 테스트 우선 방식과 모듈화된 구조를 스스로 유지하며 높은 완성도를 보여줌
- 네트워크 오류 등 예외 상황에서도 스스로 복구하며 작업의 연속성을 유지함
- AI는 기술적 트레이드오프를 판단하고 이를 문서화하는 능력을 갖춤
AI가 코드를 작성할 수 있는지에 대해 모두가 논쟁하는 동안 프런티어(Frontier)는 이동했습니다. AI는 할 수 있습니다. 그 질문은 이미 결론이 났습니다. 이제 누가 승리할지를 실제로 결정하는 질문은 더 조용하게 다가옵니다: 사람들이 사용하고 싶어 하는 무언가를 만들 수 있는가?

저는 OpenAI Build Week 동안 의도적으로 유치한 제품과 완전히 진지한 툴킷(Toolkit)을 사용하여 이를 테스트했습니다. 제품은 Roast My Stack입니다. URL을 붙여넣으면, 과도한 자격증을 가진 거만한 픽셀 아트 펠리컨인 Dr. Gordon Pelican이 당신의 실제 기술 스택(Tech stack)을 감지하고, 건강 점수를 매기고, 부리로 비난(Roast)한 다음, (마지못해) 실제로 중요한 현대화 및 보안 수정 사항을 전달합니다. 재미있는 갈고리(Hook)와 유용한 뒷부분(Tail)을 갖춘 구조입니다.
이 모든 것은 GPT-5.6 기반의 OpenAI Codex를 지시하여 구축되었으며, Apify에 단일 Standby 액터(Actor)로 배포되었습니다. 해커톤 시간 제한 속에서 보낸 4일 동안, 이제 진짜 작업이 어디에 존재하는지에 대해 제가 배운 점은 다음과 같습니다.
Codex는 계약(Contract)이 명시적인 곳에서 강력합니다
저는 코드를 작성하지 않았습니다. 저는 사양(Spec)과 계층화된 계획을 작성한 다음, Codex가 이를 수행하도록 지시했습니다. 명확한 계약이 주어지자 결과는 진정으로 훌륭했습니다: 계획된 작업과 일대일로 매칭되는 18개의 커밋, 전 과정에 걸친 테스트 우선(Test-first) 방식, 그리고 테스트 실패가 모듈을 작게 유지하도록 강제했기 때문에 유지된 작은 모듈들. Codex는 액터(Actor)의 뼈대를 만들고, 감지기(Detector)를 작성하고, 점수 산정, 비난(Roast) 레이어, 픽셀 UI, 그리고 공유 카드 렌더러를 생산 환경의 가드레일(Guardrails) — 본문 크기 제한, HTML 이스케이프 처리된 OG 메타, URL 유효성 검사, 의존성 주입(Dependency injection) — 을 갖춘 일관된 모듈로 구축했습니다. 단순한 글루 코드(Glue code)가 아니었습니다.
가장 결정적인 순간은 세션 중간에 발생한 네트워크 끊김이었습니다. Codex는 별도의 안내 없이도 스스로 복구하여 작업을 깔끔하게 재개했습니다. 90분간의 핵심 빌드 과정 전체를 통틀어 제가 보낸 메시지는 중요하지 않은 것들로 고작 세 번 정도였습니다. 또한 Codex는 '범위(scope)'에 대한 판단력도 보여주었습니다. JavaScript 비중이 높은 사이트를 위해 브라우저 페치(browser-fetch) 폴백(fallback)을 과하게 구축하는 대신, 정직하게 증거가 없는 경로를 선택하고 그 트레이드오프(tradeoff)를 문서화했습니다.
마찰이 발생한 지점은 구현의 모호함이 아니었습니다. 그것은 바로 외부 플랫폼 상태(external platform state) — 모델 계층의 권한, 인증된 Standby URL, 오래된 이미지를 서빙하는 웜 컨테이너(warm container)와 같은 문제들이었습니다. 이는 저를 겸허하게 만든 부분으로 이어집니다.
"모든 테스트 통과"와 "운영 환경에서 작동함"은 서로 다른 주장입니다
로컬 테스트는 모두 통과(green) 상태였습니다. 하지만 라이브 액터(live actor)는 모든 실제 실행(roast)에서 502 에러를 반환했습니다. 테스트에서는 존성 주입(Dependency injection)을 통해 OpenAI 클라이언트를 모킹(mocked)하기 때문에, 전체 실패는 코드와 플랫폼 사이의 경계(seam)에서 발생했습니다. 그리고 그것은 세 가지 계층의 함정이었습니다:
- 유효하지 않은 운영(production) 키.
- 환경 변수(env-var) 이름 불일치: 앱은
OPENAI_API_KEY를 읽었지만, 두 번째 비밀값(secret)만 업데이트되어 있었습니다. - 가장 교묘한 것 — 새로운 빌드가 배포된 후에도 웜 Apify Standby 실행이 계속해서 이전 빌드를 서빙하고 있었습니다.
해결책은 비밀값을 일치시키고 *실행 중인 Standby 실행을 중단(abort)*하여, 새로운 빌드에서 새로운 컨테이너가 콜드 스타트(cold-start)되도록 하는 것이었습니다. 이것은 코드 버그가 아니기 때문에 어떤 테스트 스위트(test suite)로도 잡아낼 수 없습니다. 이것은 배포 토폴로지(deployment-topology) 버그입니다. 다음에 초록색 체크 표시가 나타나 라이브 스모크 테스트(smoke test)를 건너뛰고 싶은 유혹이 들 때, 이 점을 기억할 가치가 있습니다.
모델을 더 엄격한 프롬프트가 아닌 코드에 근거하게 하라
비판(Roast)을 요청받은 창의적인 모델은 당신에게 존재하지도 않는 문제를 기꺼이 지어낼 것입니다. 신뢰할 수 있는 해결책은 더 정교하게 작성된 프롬프트가 아니라, 바로 **코드 게이트 (code gate)**입니다. GPT-5.6에는 감지된 스택(stack) 정보만 제공되며, 비판 레이어(roast layer)가 이를 강제합니다. 실제로 감지된 기술을 언급하지 않는 모든 "해결책"은 폐기되며, 근거가 있는 해결책이 3개 미만일 경우 호출은 실패합니다. Dr. Pelican은 당신이 실행하고 있지 않은 스택을 물리적으로 환각(hallucinate)할 수 없습니다. 요청이 아닌, 불변의 조건(invariant)으로서의 근거 제시(Grounding)입니다.
하나의 모델, 두 가지 역할: 재치와 보안적 정확성

저는 실제 비판 경로(live roast path)에서 작은 계층화 실험(tiering experiment)을 수행하고 이를 기록했습니다. 동일한 고정 요소(WordPress + jQuery + PHP 사이트, 점수 46점)를 사용했습니다:
| 계층 (Tier) | 지연 시간 (Latency) | 보안 해결책 (Security fixes) | 비고 (Note) |
|---|---|---|---|
gpt-5.6 (Sol) | 16.8s | 2/5 | 최고의 연극적 목소리 — 제품의 핵심 요소(hook). |
| ... |
흥미로운 결과는 승자가 누구냐가 아닙니다. 동일한 API 호출이 캐릭터의 목소리와 보안적 추론을 모두 수행했다는 점입니다. 농담과 유용성이 하나의 모델에서 나왔습니다. 저는 제출을 위해 Sol을 유지했는데, 캐릭터가 제품의 핵심 요소(hook)이기 때문이며, Terra는 빠르고 보안에 치중한 폴백(fallback)으로 사용됩니다.
코드는 쉬운 부분이었습니다
중요한 점은 이겁니다. 감지기(detector), 점수 산정(scoring), 배포(deploy) — Codex와 저는 압축된 빌드 기간 내에 이 모든 것을 해냈습니다. 사람들이 실제로 두 번째 URL을 붙여넣게 만드는 부분은 어떤 툴킷도 저를 위해 생성해주지 않은 부분들이었습니다. 즉, 펠리컨(pelican)에게 100점일 때의 마지못한 끄덕임부터 0점일 때의 외안경이 튀어나올 정도의 파멸적인 반응까지 얼굴과 어조를 변화시키는 5단계의 감정 대역을 부여하기로 한 결정, 증거가 없을 때의 실패를 단순한 에러가 아닌 *캐릭터의 특징(character beat)*으로 만들기(감지 가능한 신호가 부족함을 비판하도록 함)로 한 선택, 그리고 판결을 게시물로 바꿔주는 공유 가능한 카드 등이 그것입니다.
그것이 바로 핵심입니다. 코드 생성 (Code generation)이 범용화(Commoditizes)됨에 따라, 가치는 경험 계층 (Experience layer) — 즉 개성, 판단력, 즐거움, 그리고 누군가가 특정 도구를 선택하고 공유하는 이유 — 으로 이동합니다. 이 계층은 취향 (Taste)에 보상을 주며, 취향과 기술적 깊이 (Technical depth)가 결합된 상태는 여전히 희귀합니다. 접근성 (Accessibility)의 물결이 기술적 빌더 (Technical builder)의 우위를 지우는 것은 아닙니다. 그것은 기술적 역량을 프롬프트 투 앱 (Prompt-to-app) 도구들이 도달하지 못하는 영역인 경험 계층으로 재배치할 뿐입니다.
이제 누구나 코드를 생성할 수 있습니다. 해자 (Moat)는 그 위에 무엇을 구축하느냐에 달려 있습니다.
Roast My Stack이 출시되었습니다 (URL을 붙여넣고, 의사를 만나보세요): https://apify.com/joeslade/roast-my-stack · Repo (MIT, Codex를 통해 구축됨): https://github.com/digitalgremlin/roast-my-stack
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기