한줄 요약
AI가 코드를 쓰고, 사람은 결과를 검증한다, 단, 아무 곳에나 적용하면 안 된다.
어떤 상황에서 필요한가?
바이브 코딩(vibe coding)은 Andrej Karpathy가 정의한 개념으로, 단순히 AI와 함께 코드를 작성하는 수준이 아니라 "코드가 존재한다는 사실 자체를 잊는" 수준으로 AI에게 구현을 위임하는 접근이다. Anthropic에서 코딩 에이전트를 연구하는 Eric은 AI가 처리할 수 있는 작업 규모가 7개월마다 두 배로 늘어나는 현재 흐름에서, 이를 무시하는 것은 경쟁에서 도태되는 선택이라고 본다.
문제는 이 접근을 실제 서비스에 적용할 때다. 프로덕션 환경에서는 코드 품질, 보안, 유지보수성이 모두 실제 비용과 직결된다. "AI가 짠 코드니까 나는 몰라도 돼"라는 태도는 기술 부채를 기하급수적으로 쌓는 지름길이다. 그렇다고 AI가 생성한 코드를 한 줄씩 다 읽으면 바이브 코딩의 속도 이점이 사라진다. 이 딜레마를 어떻게 풀 것인가.
핵심 구현 방법
"코드를 잊되, 제품은 잊지 마라"
Eric이 제시하는 핵심 원칙은 명확하다. 컴파일러가 생성한 어셈블리 코드를 개발자가 일일이 읽지 않듯, AI가 생성한 코드 자체에 집착할 필요는 없다. 대신 그 결과물이 제품 관점에서 올바르게 동작하는지를 검증하는 데 집중해야 한다.
이를 위해 개발자의 역할이 바뀐다. 직접 구현하는 사람이 아니라, AI를 위한 PM(Product Manager)이 되어야 한다. 요구사항을 정리하고, 코드베이스의 맥락과 제약 조건을 명확하게 전달하는 데 15~20분 이상을 쓰는 것이 당연한 투자가 된다. 주니어 엔지니어에게 작업을 넘길 때 컨텍스트를 충분히 주는 것과 같은 이치다.
Leaf node에만 적용하라
바이브 코딩이 안전하게 작동하는 영역은 코드베이스의 leaf node, 즉 다른 코드가 의존하지 않는 말단 기능들이다. 특정 UI 컴포넌트, 독립적인 유틸리티 함수, 일회성 데이터 변환 스크립트 등이 여기에 해당한다. 반대로 아키텍처의 핵심을 이루거나 여러 모듈이 의존하는 기반 코드는 반드시 사람이 깊게 이해하고 직접 관리해야 한다.
검증 가능성을 설계하라
실제로 Anthropic 내부에서는 Claude를 활용해 22,000줄 규모의 강화학습 코드를 작성하고 프로덕션에 머지했다. 전체 코드를 읽지 않고도 안정성을 보장할 수 있었던 이유는, 처음부터 입출력 기반의 스트레스 테스트와 검증 체크포인트를 설계했기 때문이다. 검증 전략이 없는 바이브 코딩은 그냥 무책임한 코딩이다.
실전에서 주의할 점
기술 부채는 바이브 코딩의 가장 큰 사각지대다. 코드를 직접 읽지 않고서는 부채가 얼마나 쌓이고 있는지 측정하기가 현재로서는 어렵다. 이것이 바로 leaf node 원칙이 존재하는 이유다. 핵심 코드에 바이브 코딩을 적용하면, 몇 달 후 아무도 건드리기 두려운 블랙박스가 생긴다.
보안이나 결제처럼 민감한 영역은 더 위험하다. 비개발자가 바이브 코딩으로 이런 시스템을 프로덕션까지 가져가는 건 사고를 예약하는 것과 같다. 올바른 질문을 던질 수 있는 기술적 판단력이 전제되어야 한다. AI에게 무엇을 물어야 할지 모르는 사람이 AI를 쓰면, AI는 그냥 자신 있게 틀린 답을 낸다.