2025년 2월, Andrej Karpathy가 X(트위터)에 짧은 글을 올렸다. “바이브 코딩(Vibe Coding)”이라는 표현이었다. AI에 완전히 몸을 맡기고, 코드가 존재한다는 사실조차 잊어버리는 새로운 개발 방식. 그 글은 며칠 만에 수백만 건의 조회 수를 기록했고, 이후 뉴욕타임스·가디언·아스 테크니카가 연달아 보도했다. 콜린스 영어사전은 2025년의 단어로 ‘vibe coding’을 선정했다.
이처럼 AI와 협업하는 개발 방식은 빠르게 확산되고 있다. 개발자는 이제 코드를 직접 작성하기보다 AI와 함께 생산하는 환경에 놓이게 되었다. Karpathy가 2023년 남긴 말처럼, “The hottest new programming language is English.” 코딩 도구의 발전이 아니라 소프트웨어 개발 방식 자체가 달라지고 있다.
그런데 바이브 코딩으로 프로젝트를 키워가다 보면 새로운 문제가 나타난다. 기능 하나는 빠르게 구현되지만, 기능이 쌓일수록 코드 구조가 무너진다. 대화 세션이 끊기면 어제의 맥락이 사라지고, AI는 같은 질문에 다른 구조의 코드를 내놓는다. 결국 “빠르게 만들었지만 유지보수할 수 없는 코드”가 쌓이는 상황이 반복된다. 문제의 본질은 AI의 코드 생성 능력이 아니라, 프로젝트 상태를 어떻게 유지하느냐에 있다.
Part 01
AI 협업 개발의 진화: 4단계 패러다임
AI 협업 개발의 흐름을 돌아보면, 단순한 도구 발전이 아니라 문제를 해결하기 위한 패러다임의 연쇄적 진화임을 알 수 있다. 현재까지의 흐름은 네 단계로 정리된다.
중요한 점은, 이 네 단계가 서로를 대체하는 관계가 아니라 레이어처럼 쌓이는 관계라는 것이다. 하네스 엔지니어링을 도입하더라도 좋은 프롬프트와 정교한 컨텍스트는 여전히 필요하다. 각 단계는 AI가 수행할 수 있는 역할의 확장이자, 이전 단계의 한계를 보완하는 새로운 층이다.
1
프롬프트 엔지니어링
Prompt Engineering
AI 코딩 초기에 가장 널리 사용된 방법이다. 개발자가 자연어 프롬프트로 AI에게 역할과 행동 규칙을 전달하는 방식이다.
프롬프트 엔지니어링의 한계를 극복하기 위해 등장한 접근이다. 프롬프트 대신 프로젝트 문맥을 구조적으로 제공하는 방식으로, 규칙 파일(`.cursorrules`), 에이전트 규칙(`agent.md`), 스킬 정의(`skills.md`) 같은 파일을 통해 프로젝트 아키텍처, 코드 스타일, 사용 가능한 도구, 개발 규칙을 AI에게 전달한다. 이 접근은 AI가 단순한 코드 생성 도구를 넘어 프로젝트 맥락을 이해하는 협업 도구로 동작하도록 만들었다.
다만 컨텍스트 엔지니어링도 완전한 해결책은 아니다. 컨텍스트 파일을 사람이 직접 작성하고 유지해야 하고, 프로젝트가 커질수록 관리 비용이 늘어난다. 컨텍스트 윈도우 제한으로 모든 정보를 전달하기 어렵다는 근본적인 제약도 있다. 맥락 제공 문제는 개선했지만, 실행 자동화 문제는 여전히 남아 있었다.
3
에이전트 엔지니어링
Agent Engineering
LLM 기술이 발달하면서 AI가 스스로 작업을 수행하는 에이전트 기반 개발 방식이 등장했다. 에이전트는 단일 응답을 넘어 파일 탐색 → 코드 수정 → 테스트 실행 → 오류 분석 → 코드 수정이라는 작업 루프를 반복하며 개발을 진행한다. 개발자의 작업 흐름과 유사한 형태다.
개발 생산성은 크게 향상되었다. 그러나 에이전트 기반 개발도 새로운 문제를 낳는다. 실행 비용이 증가하고, 결과를 예측하기 어려우며, 프로젝트 구조가 붕괴될 위험이 생긴다. 권한 관리 문제도 따라온다. 에이전트는 실행 능력을 크게 확장했지만, 개발 과정 자체를 통제하는 메커니즘은 여전히 부족했다.
3
에이전트 엔지니어링
Agent Engineering
개발 과정 통제 문제를 해결하기 위해 등장한 접근이 하네스 엔지니어링이다. 이 개념은 2026년 2월 OpenAI가 Codex 팀의 내부 실험 결과를 공개하면서 급속히 확산됐다. Codex 에이전트가 5개월간 수동으로 작성된 코드 없이 100만 줄 규모의 프로덕션 소프트웨어를 구축한 사례로, AI가 작업을 수행하는 환경 자체를 제어하고 검증하는 실행 프레임워크를 의미한다.
AI 개발 환경에서 하네스는 실행 환경 관리, 도구 호출 제어, 실행 결과 검증, 작업 루프 제어, 안전 장치 제공의 역할을 수행한다. AI 에이전트를 직접 통제하기 위한 운영 레이어다. 랄프 모드(Ralph Mode)와 같은 실험적 개발 패턴과 결합되면서 AI 기반 개발 환경을 보다 안정적으로 운영할 수 있는 기반도 마련되고 있다.
AI와 협업하는 개발 환경에서는 기존 개발 프로세스만으로 충분하지 않다. AI는 코드 생성 능력은 뛰어나지만, 문제 정의와 구조 유지에는 약점이 있기 때문이다. 이를 보완하기 위해 다음과 같은 7단계 프로세스를 정의해 사용한다.
정의(Define): 무엇을 만들고 무엇을 만들지 않을지 정의한다.
설계(Design): 코딩 전에 구조를 설계한다.
완료 기준(DoD): Definition of Done, 완료 기준을 정의한다.
빌드(Build): 작은 단위로 구현한다.
검증(Verify): 테스트·보안·구조 검증을 수행한다.
기록(Record): 다음 세션을 위해 결과를 기록한다.
실패 처리(Recovery): 실패 원인을 분류하고 복구한다.
이 프로세스의 핵심은 “AI를 잘 사용하는 법”이 아니다. AI가 약한 부분을 프로세스로 보완하는 것이다.
컨텍스트 저장 인프라: 4개 파일
프로세스가 작동하려면 컨텍스트를 저장하는 인프라가 필요하다. 이를 위해 고정 파일 4개를 사용한다.
project_context.md: 문제·범위·리스크를 고정한다.
architecture.md: 구조 규칙을 고정한다.
acceptance.md: 완료 기준(DoD)을 고정한다.
session_context.md: 세션 단위 목표·태스크·결과를 휘발성으로 관리한다.
앞의 세 파일(`project_context.md`, `architecture.md`, `acceptance.md`)은 프로젝트 전체에 걸쳐 고정되는 컨텍스트이고, `session_context.md`는 세션 단위로 갱신되는 휘발성 컨텍스트다. 세션 컨텍스트는 짧아야 하고, 프로젝트 컨텍스트는 고정되어야 한다. 이 파일들을 기반으로 각 단계를 어떻게 하는지 설명한다.
Part 03
실전 예시: 글로벌 출석체크 시스템
단순 바이브 코딩이 얼마나 위험한지, 그리고 7단계 프로세스가 그 위험을 어떻게 해결하는지 연속 출석체크 시스템을 만들며 살펴본다.
게임에서 “7일 연속 접속 시 전설 아이템 지급!” 같은 이벤트는 흔하다. 단순해 보이기 때문에 “유저가 매일 접속할 때마다 출석 일수가 1씩 오르는 코드를 짜줘. 하루라도 안 들어오면 0으로 초기화해”라고 AI에 맡기면 그럴싸한 코드가 나온다.
이 코드를 검수 없이 라이브 서버에 배포하면 대참사가 일어난다. 코드는 한국 서버 시간을 기준으로 작성되었을 가능성이 크고, 뉴욕에 사는 유저가 현지 시간으로 같은 날로 인식되어 출석이 인정되지 않거나 연속 출석이 끊겨버린다. AI가 시간대(Timezone)와 글로벌 서비스 맥락을 스스로 유추하지 못하기 때문이다.