바이브 코딩(Vibe Coding): 코드를 AI에게 맡기는 순간, 미래의 유지보수 권한도 넘기게 된다 — 천천히 배우는 AI162
번역자가 전하고 싶은 이야기
- “바이브 코딩”의 본질은 AI의 속도로 기술적 부채를 미친 듯이 쌓아 올리는 것입니다.
- AI 프로그래밍은 양날의 검입니다: 프로토타입을 만드는 것은 신비로운 도구지만, 장기적으로 유지해야 하는 핵심 프로젝트에 사용하면 재앙의 시작이 됩니다.
- 기술을 모르는 사람이 AI를 사용하여 핵심 제품을 개발하는 것은 아이에게 한도가 없는 신용카드를 주는 것과 같습니다—일시적인 화려함은 결국 끝없이 이어지는 부채를 초래합니다.
- AI를 다루는 핵심은 사고를 포기하는 것이 아니라 “이론 구축” 능력을 향상시키는 것입니다. 인간은 AI의 끄트머리를 잡아야지, 그에 이끌려서는 안 됩니다.
“바이브 코딩”, 기술적 부채를 만들어내는 것
스티브 크라우스(Steve Krouse)
대중이 혼란스러워하고 있지만, 안드레 카르파시(Andrej Karpathy)가 “바이브 코딩(Vibe Coding)”이라는 용어를 만든 본래의 의미는 AI 지원 프로그래밍 방식을 지칭하는 것으로, 이 방식에서는 **”코드의 존재감을 느낄 수 없다”**는 것입니다.
레거시 코드/기술적 부채
누구도 이해할 수 없는 코드를 위해 우리는 이미 하나의 용어를 가지고 있습니다: 레거시 코드/기술적 부채.
레거시 코드는 모두가 공격하지만, 이는 헛소리는 아닙니다. 하지만 문제는 코드가 거기에 있어 직접 보면 이해할 수 있지 않냐는 것입니다.
큰 오산입니다. 아무도 이해하지 못하는 코드는 실제로 기술적 부채입니다. 낯선 코드를 완전히 이해하고 디버깅을 하려면 많은 시간을 소모해야 하며, 새로운 버그 없이 기능을 추가하는 것은 더욱 어렵습니다—그건 더더욱 어려운 일입니다.
프로그래밍의 본질은 이론을 구축하는 것이지 코드를 쌓는 것이 아닙니다. 이는 모두가 알고 있는 이치입니다. 그래서 우리는 코드 줄 수로 프로그래머의 생산성을 측정하려는 사업 부서를 비웃게 됩니다.
“바이브 코딩”을 사용할 때, 기술적 부채를 쌓는 속도는 AI가 코드 생성을 하는 속도와 같다. 그렇기 때문에 “바이브 코딩”은 프로토타입 개발 및 일회성 프로젝트의 완벽한 선택입니다: 결국, 장기적으로 유지해야 하는 코드만이 레거시 코드가 되기 때문입니다!
프로토타입과 일회성 코드
저 역시 “바이브 코딩”을 사용하여 몇 개의 작은 애플리케이션을 개발한 경험이 있습니다. 예를 들어:
이 앱들을 지속적으로 업데이트할 계획이 없었기 때문에, 그 코드가 이해되지 않아도 상관이 없었습니다. 게다가 이 앱들은 규모가 작아서, 언젠가 코드를 다시 살펴봐야 하게 된다 해도 기술적 부채는 그리 많지 않습니다. 이런 방식으로 저는 전통적인 방법보다 훨씬 빠르게 애플리케이션을 개발할 수 있었고, 전체 과정이 매우 원활했습니다.
“바이브 코딩”은 정도 문제
“바이브 코딩”은 정도 문제이며, 핵심은 코드에 대한 이해의 깊이에 달려 있습니다. 당신이 이해할수록 덜 “느낌에 의존하게” 됩니다.
같은 요청이라도, 한 엔지니어가 “지속 가능한 데이터베이스를 가진 웹 애플리케이션을 개발해 달라”고 요청하는 것과, 기술적이지 않은 사람이 “앱 하나 만들어 줘”라고 요청하는 것(그는 웹 애플리케이션과 네이티브 애플리케이션을 구별하지 못하고 데이터 지속성에 대해 알지 못함)에서는 전자가 느끼는 정도가 훨씬 낮습니다.
아이에게 신용카드 주기
최악의 경우는 비전문가가 “바이브 코딩” 방식을 사용하여 장기적으로 유지해야 하는 대규모 프로젝트를 개발하게 하는 것입니다. 이는 어린아이에게 신용카드를 주고 “빚이 무엇인지” 설명하지 않는 것과 다름없습니다.
상황이 어떤지 쉽게 상상할 수 있습니다: “세상에, 이 작은 카드를 가게에서 스치기만 하면 내가 원하는 것을 다 살 수 있다니!”
이는 현재 유행하는 주장과 매우 비슷합니다: “AI는 모든 것을 할 수 있다! 모든 사람이 프로그래머다! AI가 만들어 준 이 애플리케이션을 봐라!”
하지만 한 달 후, 신용카드 청구서는 예정대로 도착할 것입니다: “이 물건들이 정말 필요했을까? 난 지금 이 엉망진창을 어떻게 수습해야 할까?”
“바이브 코딩” 개발자도 같은 위기를 맞이할 것입니다: “내 코드가 망가졌다! 이 많은 파일과 폴더는 대체 뭐지? 이걸 어떻게 고쳐야 하지? 내가 AI에게 코드를 생성하도록 내기 위해 지불한 400달러를 환불받을 수 있을까?”
코드를 전혀 이해하지 못한다면, 유일한 출구는 AI에게 계속 수리해 달라고 요청하는 것입니다. 이는 다른 카드로 기존 빚을 갚는 “카드로 카드 빚을 갚는” 것과 같습니다.
2025년, AI와 진지하게 협업하는 방법
2025년에 장기적으로 유지해야 할 진지한 프로젝트를 구축할 계획이라면, 안드레의 조언은 옳습니다:
“AI를 새로운 인턴으로 생각하고 그를 짧은 끈으로 묶어야 합니다. 이 인턴은 소프트웨어 지식이 풍부하고 살아있는 백과사전과 같지만, 동시에 지나치게 열정적이며 항상 허튼 소리를 하며, 좋은 코드가 무엇인지 전혀 감이 없습니다. 따라서 당신은 강조해야 합니다: 속도를 줄이고 방어적이며 조심스러워지고, 심지어 약간의 편집증을 가져야 한다는 것입니다. 모든 기회를 이용해 실천에서 배우고, 그에게 모든 일을 전담시켜서는 안 됩니다.”
— 안드레 카르파시, 트위터
우리가 AI와 함께 구축하는 방법
Val Town에서는 여러 가지 방법으로 AI를 제품에 통합하고 있습니다. 우리의 AI 도우미 Townie는 코드 읽기, 쓰기, 프로그램 실행 및 로그 확인을 능동적으로 수행하며, 지속적으로 반복하여 작업을 완료합니다.
Townie는 “느낌에 의존하는 코딩”의 훌륭한 도구입니다. 그 장단점을 이해하는 친구에게 강력히 추천합니다. 때때로 저는 빠르게 “바이브 코딩”을 하기 위해 사용합니다. 반면에 제가 매우 중요하게 생각하는 프로젝트를 다룰 때는, 조절을 하여 “정밀한 수술” 수정만 하도록 합니다. 이 두 가지 방식 모두 재미있고 효율적입니다.
AI 프로그래밍 분야는 날로 발전하고 있으며, 미래는 예측하기 어렵습니다. 하지만 저는 여전히 “이론 구축”이 복잡한 소프트웨어 구축의 핵심이라고 믿고 있습니다. 이는 인간의 기술 전문성이 여전히 필수적이라는 것을 의미합니다! 또한 AI가 앞으로도 예기치 못한 방식으로 프로그래밍 작업을 더욱 좋게 만들어 줄 것이라고 낙관적으로 믿습니다.
하지만 비기술적 배경을 가진 친구들이 대규모로 “느낌에 의존한 코딩”을 통해 자신의 “10억짜리 앱” 꿈을 쫓고 있다면, 반드시 이 글을 그들에게 전달해 주세요. “느낌에 의존한 코딩”으로는 성공의 해안에 닿을 수 없습니다. 그들은 언젠가 반드시 자신의 눈으로 코드를 이해해야 할 것이며 😱, 결국에는 한 가지 냉혹한 현실을 깨달을 것입니다: 이해할 수 없는 레거시 시스템을 수리하기보다, 처음부터 명확한 구조의 새로운 코드베이스를 구축하는 것이 낫습니다.
이 글은 제가 지난달에 한 강연의 요약 버전입니다. 강연 주제는 프로그래밍에서 인간 뇌의 역할이었습니다. 이 주제에 대해 몇 달 동안 저의 이야기를 들어준 약혼자 에밀리에게 감사드리며, 강연 비디오 촬영에도 협조해주었습니다. 이 강연을 주최한 Malte와 Rippling에도 감사드립니다.
제이 프라이, 지미 코펠, 맥스 맥도넬, 톰 맥라이트, 샤먼 리, 브렌트 잭슨, 다니 시퍼에게도 이 글에 대한 피드백을 감사드립니다. AI에 대한 과도한 찬사와 비관적 주장 사이에서 이성적인 목소리를 낸 사이먼 윌리슨과 안드레 카르파시에게도 감사드립니다.