- "Vibe Engineering" 은 AI 코딩 도구를 활용한 전문 개발 방식의 새로운 명칭으로, 빠르고 무책임한 '바이브 코딩'과 달리 숙련된 엔지니어가 LLM을 활용하면서도 코드 품질과 책임성을 유지하는 접근법을 의미
- Claude Code, OpenAI Codex CLI, Gemini CLI 같은 코딩 에이전트의 등장으로 실무 프로젝트에서 LLM 활용이 급증했으며, 일부 엔지니어들은 여러 에이전트를 동시에 실행하여 병렬 작업을 수행
- LLM을 효과적으로 활용하려면 자동화된 테스트, 사전 계획, 포괄적인 문서화, 버전 관리, 코드 리뷰 문화 등 이미 확립된 최고 수준의 소프트웨어 엔지니어링 관행이 필요
- AI 도구는 기존 전문성을 증폭시키는 특성을 가지며, 시니어 엔지니어가 보유한 기술과 경험이 많을수록 LLM 활용 시 더 빠르고 나은 결과를 얻을 수 있음
- 이 용어는 '바이브 코딩'과의 명확한 구분을 통해 프로덕션 소프트웨어 개발을 위한 더 어렵고 정교한 AI 활용 방식임을 강조하며, 엔지니어링과 바이브의 모순적 조합이 오히려 기억하기 쉬운 장점을 제공 (AI 도구 발전에 따른 개발 프로세스 변화와 전문성의 중요성 부각)
바이브 코딩과 바이브 엔지니어링의 구분
- 바이브 코딩은 AI를 활용한 빠르고 느슨하며 무책임한 소프트웨어 개발 방식으로, 전적으로 프롬프트 주도적이며 코드 작동 방식에 대한 주의를 기울이지 않는 접근법
- 스펙트럼의 반대편에는 숙련된 전문가들이 LLM으로 작업을 가속화하면서도 자신이 생산하는 소프트웨어에 대해 자부심 있고 자신 있게 책임을 지는 방식이 존재하며, 이를 바이브 엔지니어링으로 명명
- 장난감 프로젝트가 아닌 실제 프로젝트에서 소프트웨어 엔지니어로서 LLM과 생산적으로 작업하는 것은 어렵다는 것이 덜 알려진 진실이며, 도구 사용법 이해에 많은 깊이가 필요하고 피해야 할 함정도 많음
코딩 에이전트의 등장과 영향
- 2025년 2월 출시된 Claude Code, 4월 출시된 OpenAI의 Codex CLI, 6월 출시된 Gemini CLI 같은 코딩 에이전트 도구들이 등장하여 실제 코딩 문제에 대한 LLM의 유용성이 극적으로 증가
- 이 도구들은 코드를 반복적으로 수정하고 적극적으로 테스트하여 지정된 목표를 달성할 때까지 작업을 수행
- 경험이 풍부하고 신뢰할 수 있는 소프트웨어 엔지니어들이 여러 개의 에이전트를 동시에 실행하여 여러 문제를 병렬로 처리하고 작업 범위를 확장하고 있음
- 저자는 처음에는 회의적이었지만 직접 병렬 코딩 에이전트를 실행해본 결과 정신적으로 지치지만 놀랍도록 효과적임을 확인
- tools.simonwillison.net 컬렉션의 대부분은 고전적인 바이브 코딩 방식으로 구축되었으나, 코딩 에이전트와 반복 작업하여 향후 유지보수할 수 있는 프로덕션 품질 코드를 생산하는 것은 완전히 다른 프로세스로 느껴짐
LLM이 강화하는 기존 소프트웨어 엔지니어링 관행들
-
자동화된 테스트: 강력하고 포괄적이며 안정적인 테스트 스위트가 있으면 에이전트 코딩 도구가 빠르게 작동할 수 있으며, 테스트가 없으면 에이전트가 실제로 테스트하지 않고 작동한다고 주장하거나 새 변경 사항이 관련 없는 기능을 깨뜨릴 수 있음
- 테스트 우선 개발은 루프에서 반복할 수 있는 에이전트에 특히 효과적
-
사전 계획: 무언가를 함께 해킹하기 위해 앉을 때 높은 수준의 계획으로 시작하면 훨씬 더 잘 진행되며, 에이전트와 작업할 때 이것이 더욱 중요해짐
- 먼저 계획을 반복한 다음 에이전트에게 넘겨 코드를 작성하게 할 수 있음
-
포괄적인 문서화: 인간 프로그래머처럼 LLM도 한 번에 코드베이스의 일부만 컨텍스트에 유지할 수 있으며, 관련 문서를 제공하면 코드를 먼저 읽지 않고도 다른 영역의 API를 사용할 수 있음
- 좋은 문서를 먼저 작성하면 모델이 해당 입력만으로 일치하는 구현을 구축할 수 있음
-
좋은 버전 관리 습관: 코딩 에이전트가 변경했을 수 있는 경우 실수를 취소하고 무언가가 언제 어떻게 변경되었는지 이해하는 것이 더욱 중요
- LLM은 Git에 매우 능숙하여 버그의 기원을 추적하기 위해 히스토리를 직접 탐색할 수 있으며, 대부분의 개발자보다 git bisect 사용을 더 잘함
-
효과적인 자동화: 지속적 통합, 자동화된 포매팅 및 린팅, 프리뷰 환경으로의 지속적 배포 등이 에이전트 코딩 도구에도 도움이 됨
- LLM은 빠른 자동화 스크립트 작성을 더 쉽게 만들어 다음번에 작업을 정확하고 일관되게 반복할 수 있도록 지원
-
코드 리뷰 문화: 코드 리뷰에 빠르고 생산적이면 LLM과 작업할 때 훨씬 더 나은 시간을 보낼 수 있음
- 다른 사람(또는 무언가)이 작성한 동일한 것을 검토하는 것보다 스스로 코드를 작성하고 싶다면 어려울 것
-
매우 이상한 형태의 관리 기법: 코딩 에이전트에서 좋은 결과를 얻는 것은 인간 협력자로부터 좋은 결과를 얻는 것과 불편할 정도로 유사
- 명확한 지시를 제공하고, 필요한 컨텍스트를 보장하며, 생산물에 대한 실행 가능한 피드백을 제공해야 함
- 실제 사람들과 작업하는 것보다 훨씬 쉬운 이유는 그들을 모욕하거나 낙담시키는 것에 대해 걱정할 필요가 없기 때문이지만, 기존 관리 경험이 놀랍도록 유용할 것
- 정말 좋은 수동 QA(품질 보증): 자동화된 테스트 외에도 엣지 케이스를 예측하고 파고드는 것을 포함하여 소프트웨어를 수동으로 테스트하는 데 정말 능숙해야 함
- 강력한 연구 기술: 주어진 코딩 문제를 해결하는 방법은 수십 가지가 있으며, 최선의 옵션을 파악하고 접근 방식을 입증하는 것은 항상 중요했고 에이전트를 풀어 실제 코드를 작성하도록 하는 데 여전히 장애물로 남아 있음
- 프리뷰 환경으로 배포하는 능력: 에이전트가 기능을 구축하면 해당 기능을 안전하게 미리 볼 수 있는 방법(프로덕션에 바로 배포하지 않고)이 있으면 리뷰가 훨씬 더 생산적이 되고 고장난 것을 배송할 위험이 크게 줄어듦
-
AI에 아웃소싱할 수 있는 것과 수동으로 처리해야 하는 것에 대한 본능: 모델과 도구가 더 효과적이 됨에 따라 이것은 계속 진화하고 있음
- LLM과 효과적으로 작업하는 큰 부분은 언제 가장 잘 적용될 수 있는지에 대한 강한 직관을 유지하는 것
-
업데이트된 추정 감각: 프로젝트가 얼마나 걸릴지 추정하는 것은 항상 시니어 엔지니어가 되는 가장 어렵지만 가장 중요한 부분 중 하나였으며, 특히 예산 및 전략 결정이 이러한 추정을 기반으로 이루어지는 조직에서 그러함
- AI 지원 코딩은 이것을 더욱 어렵게 만들며, 오랜 시간이 걸리던 것들이 훨씬 더 빨라지지만 이제 추정은 우리 모두가 아직 파악하려고 노력하는 새로운 요소에 의존
바이브 엔지니어링의 본질과 의의
- 이러한 새로운 도구의 기능을 실제로 활용하려면 게임의 최고 수준에서 작동해야 하며,
- 코드를 작성하는 것만 책임지는 것이 아니라
- 접근 방식 연구,
- 고수준 아키텍처 결정,
- 사양 작성,
- 성공 기준 정의,
- 에이전트 루프 설계,
- QA 계획,
- 기회가 주어지면 속이려고 하는 이상한 디지털 인턴들이 계속 늘어나는 부대 관리,
- 그리고 코드 리뷰에 많은 시간을 소비하는 것을 포함
- 이 중 거의 모든 것이 이미 시니어 소프트웨어 엔지니어의 특성
- AI 도구는 기존 전문성을 증폭시키며, 소프트웨어 엔지니어로서 더 많은 기술과 경험을 가질수록 LLM 및 코딩 에이전트와 작업하여 더 빠르고 나은 결과를 얻을 수 있음
“Vibe engineering”, really? : 용어 선택에 대한 고찰
- "바이브 엔지니어링"이라는 이름이 어리석은가에 대해: 아마도 그럴 것이며, AI에서 "바이브"라는 개념은 이 시점에서 약간 지쳐 보이고 "바이브 코딩" 자체가 많은 개발자들에게 경멸적인 방식으로 사용됨
- 그러나 나는 더 건설적인 무언가를 위해 바이브를 되찾을 준비가 되어 있음
- "코더"와 "엔지니어" 사이의 인위적인 구별을 좋아한 적이 없으며 그것은 항상 약간의 진입 장벽처럼 느껴졌지만, 이 경우 약간의 진입 장벽이 정확히 필요한 것
- 바이브 엔지니어링은 바이브 코딩과의 명확한 구별을 확립하며, 이것이 프로덕션 소프트웨어를 구축하기 위해 AI 도구와 작업하는 다른, 더 어렵고 더 정교한 방법임을 신호
- 이것이 건방지고 논란의 여지가 있을 가능성이 있다는 점을 좋아하며, 이 전체 공간은 여전히 다양한 방식으로 부조리함
- 이러한 새로운 도구를 적용하는 가장 생산적인 방법을 파악하는 동안 우리 자신을 너무 심각하게 받아들이지 말아야 함
- 과거에 AI 지원 프로그래밍 같은 용어를 정착시키려고 시도했지만 거의 제로에 가까운 성공을 거두었으며, 이번에는 바이브를 문질러서 무슨 일이 일어나는지 보는 것도 나쁘지 않음
- "바이브"와 "엔지니어링" 사이의 명확한 불일치를 정말 좋아하며, 결합된 용어를 장난스럽고 (바라건대) 기억하기 쉬운 방식으로 자기 모순적으로 만듦