바이브 코딩
바이브 코딩이란 무엇인가?
바이브 코딩는 2024/2025년에 안드레이 카르파티가 소개한 AI 기반 프로그래밍 방법입니다. 바이브 코딩에서는 자연어 프롬프트로 원하는 것을 설명하면 보통 대규모 언어 모델(LLMs)이 대부분, 종종 모든 동작하는 코드를 생성해 줍니다. 시간이 있다면 릭 루빈이 각색한 **바이브 코딩의 방식**을 배우기 위해 바이브 코딩의 예술을 확인해 보세요.
이 새로운 방법의 큰 장점 중 하나는 접근성입니다. 코딩 경험이 없는 사람도 프로젝트를 만들 수 있고, 경험 있는 개발자는 완전히 착수하기 전에 새 아이디어를 빠르게 프로토타이핑할 수 있습니다. 이는 특히 스타트업에 도움이 됩니다. 단점은 생성된 코드가 어떻게 동작하는지 개발자가 완전히 이해하지 못할 가능성이 높다는 점입니다. 작은 사이드 프로젝트라면 괜찮지만, 프로덕션 수준 소프트웨어에서는 장기적인 문제와 기술 부채로 이어질 수 있습니다.
바이브 코딩을 더 원활하게 해주는 도구들이 많이 있습니다. 커서 IDE, 클로드 코드 CLI, 깃허브 코파일럿, 러버블, 리플릿, v0 등은 AI와 직접 환경에서 작업하거나 바이브 코딩을 위한 전용 인터페이스를 제공합니다. 개인적으로 이 프로젝트들에서는 주로 커서 IDE와 클로드 코드 CLI를 사용했습니다.
여기 중요한 점이 있습니다. 이러한 도구와 모델은 비용이 듭니다. 전통적인 코딩에서는 주로 시간으로 비용을 지불하지만, 바이브 코딩에서는 지갑으로 비용을 지불합니다. 그리고 무엇을 하는지 모른다면 지갑과 시간 둘 다 지불하게 됩니다. 이 페이지의 각 프로젝트는 빌드하는 데 대략 $10에서 $20 정도의 비용이 들었습니다. 자주 실험하면 비용이 쌓입니다. 저는 이러한 모델이 개선되고 더 효율적이게 되면 비용이 결국 내려갈 것이라고 생각합니다. 지금은 바이브 코딩이 당신의 프로젝트에 적합한지 결정할 때 고려할 가치가 있는 요소입니다.
가능성이 궁금해서 저도 직접 바이브 코딩을 시도해 보고 실제 프로젝트를 통해 원리를 탐구하기 위해 이 페이지를 만들었습니다. 단순히 제품을 만드는 것이 아니라 바이브 코딩이 실제로 무엇을 할 수 있는지 테스트하고 시연하고 있습니다. 이건 그냥 재미로 하는 일이지만, 모델들이 계속 개선됨에 따라 미래의 코딩이 어떻게 보일지 엿볼 수 있게 해줍니다.
무한 원숭이 정리
무한 원숭이 정리를 들어본 적 있나요? 무한한 원숭이들에게 무한한 타자기와 무한한 시간이 주어진다면 결국 그들 중 하나가 무작위로 키를 두드려 윌리엄 셰익스피어의 전집을 완성할 것이라는 철학적 사고 실험입니다.
말도 안 되는 소리처럼 들리죠. 그런데 여기서 기이한 점이 있습니다. 바이브 코딩은 어느 정도 그와 비슷합니다. 다만 원숭이 대신 AI 모델이 있고, 타자기 대신 코딩 언어가 있으며, 셰익스피어 대신 동작하는 소프트웨어를 얻는다는 점이 다릅니다.
생각해 보세요. 대형 언어 모델은 수십억 줄의 코드, 패턴, 예제로 학습됩니다. LLM에 프롬프트를 주면 모델은 인간 개발자처럼 단계별로 문제를 “생각"하는 것이 아닙니다. 대신 학습 중에 익힌 패턴을 바탕으로 다음에 올 가장 가능성 높은 토큰을 예측합니다. 본질적으로 통계적으로 맞아 보이는 것에 따라 코드를 생성하면서 교육받은 추정(educated guesses)을 하는 것입니다.
그리고 아이러니하게도, 종종 작동합니다. 모델은 실제로 컴파일되고 실행되며 문제를 해결하는 코드를 출력합니다. 이해를 통해서가 아니라 거대한 규모의 확률적 패턴 매칭을 통해서입니다. 마치 우주의 가장 정교한 무작위 텍스트 생성기가 “올바른” 답을 찾아낸 것과 같습니다. 하지만 차이점은 속도입니다. 그 원숭이들은 문자 그대로 무한이 필요합니다. 당신의 AI는 몇 초 또는 몇 분 안에 도달합니다.
그래서 어떤 면에서는 바이브 코딩을 사용할 때 수백만 줄의 코드 패턴을 모델에 응축된 형태로 활용해 솔루션을 생성하는 것입니다. 의식적인 문제 해결이 아니라 통계적 마법입니다. 그리고 바로 그것이 바이브 코딩이 강력한 이유이자, 생성된 코드가 실제로 무엇을 하는지 이해하는 것이 여전히 중요한 이유입니다.
질문이 답보다 더 중요하다
자주 간과되는 중요한 사실이 하나 있습니다. 바이브 코딩은 아무 답을 얻는 것이 목적이 아니라 올바른 질문을 하는 것이 목적입니다. 은하수를 여행하는 히치하이커를 위한 안내서에 나오는 **딥 소트 슈퍼컴퓨터(Deep Thought Supercomputer)**를 생각해 보세요. 그것은 삶과 우주와 모든 것에 대한 궁극의 질문에 대한 답을 계산하는 데 수백만 년을 보냈고, 결국 42라는 숫자를 줬습니다. 그 답은 기술적으로는 맞았지만, 실제 문제는 처음에 어떤 질문을 해야 하는지를 파악하는 것이었습니다.
바이브 코딩도 동일하게 작동합니다. 프롬프트가 전부이지만, 컨텍스트 관리도 마찬가지로 중요합니다. 모호한 프롬프트는 모호한 코드를 줍니다. 올바른 파일, 문서, 예제를 컨텍스트로 제공하지 않으면 모델은 실제로 당신이 무엇을 필요한지 이해하지 못할 것입니다. 코딩, 아키텍처, 시스템 설계를 이해하는 사람이라면 상세한 프롬프트를 만들고 올바른 컨텍스트를 선별하여 LLM을 뛰어난 솔루션으로 유도할 수 있습니다. 하지만 무엇을 요청해야 할지 또는 어떤 컨텍스트를 제공해야 할지 모르면 AI도 알지 못합니다.
이것이 바로 바이브 코딩이 경험 있는 개발자에게 강력한 이유입니다. 우리는 좋은 코드가 어떤 모습인지 알고, 함정을 이해하며, 모델이 그 함정으로 가지 않도록 유도하는 프롬프트를 작성할 수 있습니다. 기술 배경이 전혀 없는 초보자에게는 이것이 실제로 제약이 됩니다. 동작하는 코드를 얻을 수는 있지만, 무엇이 잘못되었는지 또는 다음에 무엇을 요청해야 할지 이해하지 못하면 막히게 됩니다.
바이브 코딩만으로는 충분하지 않을 때
최신 AI 모델들은 인상적이지만 만능은 아닙니다. 바이브 코딩은 프로덕션에서 작동할 수 있지만, 진지하게 하려면 여러 조건이 필요합니다. 강력한 단위 테스트가 필요합니다. 시스템이 무엇을 해야 하는지에 대한 명확한 진실의 근원이 필요합니다. 동작이 깨지거나 흐트러질 때 이를 감지해야 합니다. 그리고 해커의 사고방식이 필요합니다. 고정관념을 깨고 예기치 못한 방식으로 바이브 코딩한 프로젝트를 깨보세요. 어떤 엣지 케이스를 고려하지 않았나요? 누군가 악용할 수 있는 보안 취약점은 무엇인가요? 이것이 단순히 동작하는 코드와 실제로 견고한 코드를 구분하는 요소입니다.
하지만 한 가지 더 있습니다. AI가 당신을 지배하는 것이 아니라 당신이 AI를 지배합니다. 생성된 것을 그냥 받아들이지 마세요. 검토하세요. 테스트하세요. 깨보세요. 솔직히 말해서 코드베이스의 특정 부분에 대해서는 예전 방식으로 돌아가 직접 코드를 작성해야 할 것입니다. 집중해서 깊게 생각하고 직접 작성하세요. 바이브 코딩은 속도를 높여주지만, 중요할 때 진짜 프로그래밍을 대체하지는 못합니다.
또한 제가 배운 또 다른 점이 있습니다. 때로는 AI와의 세션을 끝내고 새로 시작해야 할 때가 있습니다. 대화 기록이 점점 커지면 모델의 성능은 저하됩니다. 실수가 더 많아지고, 덜 일관된 코드를 생성하며, 환각(hallucination)이 더 자주 발생하기 시작합니다. 이를 알아채지 못하고 계속하면 이러한 오류들이 서로 누적되어 점점 더 악화됩니다. 마치 계속해서 복사된 문서를 읽으려 하는 것과 같습니다. 새로 시작하면 상태를 깨끗하고 선명하게 유지할 수 있습니다.
바이브 코딩으로 만든 프로젝트
아래는 제가 바이브 코딩 방법론을 사용해 만든 두 프로젝트, 계단(저장소)와 초월적(저장소)입니다. 대부분 프롬프트로 생성되었고, 수동 작업은 컨텍스트 제공, 디버깅, 깃허브 페이지에 배포하는 것으로 제한되었습니다. 이들은 창의적 아이디어와 코드가 바이브 코딩을 통해 결합될 때 무엇이 가능한지를 보여주는 재미있는 정적 사이트 실험입니다. 두 프로젝트 모두 깃허브에 호스팅되어 있습니다.