바이브 코딩 - 개발자들이 없어진다고 하는데, 바이브 코딩 오해와 진실
요즘 인터넷에 보면 가장 많이 나오는 단어가 바이브 코딩(Vibe coding)이 아닌가 싶다. Cursor와 같은 AI 코딩 도구를 이용해서, 코딩을 모르는 사람도 자연어로 요구 사항을 설명하면 AI가 자동으로 코드를 생성해준다. 유투브 채널에 보면 온갖 바이브 코딩에 대한 이야기이고, 개발자는 이제 없어질 것이며 신입은 필요가 없다는 이야기도 나오는데, 잘못된 오해가 많은 것 같고, 제대로 바이브 코딩을 하는 방법에 대한 가이드가 상대적으로 적은 것 같아서, 바이브 코딩에 대한 오해와, 어떻게 하면 바이브 코딩을 제대로 할 수 있을지에 대해서 설명하고자 한다.

바이브 코딩의 정의
바이브 코딩은 OpenAI의 공동 창립자인 Andrej Karpathy에 의해서 2025년 2월에 소개되었다. 바이브 코딩은 프로그래머가 직접 코드를 작성하는 대신 자연어기반의 대화를 통해서 LLM이 코드를 작성하게 하는 방식이다. ChatGPT, Claude, Gemini 와 같은 모델을 이용하여, 코드를 생성할 수 도 있고, 또는 Cursor나 Windsurf, Copilot과 같은 AI IDE도구를 이용하여 코드를 작성할 수 도 있다.

getmocha.com은 다른 시도를 하고 있는데, 완전 자연어로 웹사이트에서 코딩을 가능하게 해주며, 단순하게 코딩뿐만 아니라 production에 서버를 배포할 수 있도록 해준다.
바이브 코딩의 오해
바이브 코딩을 소개 하는 매체들의 여러글을 보면, “개발자는 없어질것이다.”, “프로그래밍 언어를 몰라도 된다.”, “누구나 코드를 만들 수 있다” 라는 식의 자극적인 글이 많고, 개발을 모르는 사람도 서비스를 만들 수 있다는 식으로 많이들 이야기 하고 있다.
이러한 의견에 대한 내 의견은,
개발을 모르는 사람도 서비스를 개발할 수 있다.
맞다. “그러나 상용 수준의 서비스는 개발할 수 없다.”. 많은 바이브 코딩 예제들을 보면 대부분 간단한 웹사이트를 만드는 예제들이 많다. 그나마 백앤드 API 서버나 데이터베이스 없이 자바스크립트 기반의 프론트 웹사이트를 만드는 부분이 대부분이다. 간혹 괜찮은 강의에서는 Superbase나 Firebase를 이용하여 백엔드를 구성하는 부분이 나오지만, 이 Superbase나 Firebase는 간단한 모바일앱이나 웹사이트를 만들기 위한것이지 본격적인 복잡한 애플리케이션을 만들기에 적절하지 않다.
상용 수준
상용 애플리케이션이란 많은 사용자의 트래픽을 동시에 처리할 수 있어야 하며, 비즈니스에 적절한 보안이 요구 되어야 하며, 로깅과 모니터링과 같은 운영에 필요한 부분이 추가 되어야 한다. 최소한 이러한 컨셉에 대한 이해가 있는 엔지니어라야, 운영이 가능한 실제 서비스를 만들 수 있다.
또한 바이브 코딩을 위해서 학습된 LLM 들은 인터넷에 있는 오픈소스나 github 코드들을 참고한다. 이 코드들은 개인 프로젝트나, 범용성이 높은 웹/앱 이지, 특정 기업의 업무를 구현한 코드가 아니다. (기업의 코드는 밖으로 보통 공개 하지 않는다. ) 그래서, 범용적인 시스템을 개발하는데는 문제가 없겠지만, 특정 프레임웍을 이용하여, 특정 비즈니스 시나리오를 구현하기 위해서는 LLM의 학습데이터가 부족하다.
인프라에 대한 고려
또한 서비스를 위한 서버를 실제로 배포해야 하는데, 클라우드나 아니면 On-prem 환경에 서버를 설정하더라도, 데이터 베이스, 로드밸런서, API 서버, 컨테이너등에 대한 개념이 있어야 서버를 배포 운영할 수 있다. 이러한 인프라에 대한 부분도 AI를 통해서 빠르게 자동화를 돕고(구현이 아니라 support)하고 있지만 아직 코딩 수준의 완벽한 자동화는 이루어지지 않고 있다.
결론적으로 이야기 하면, 개발을 모르는 사람은 토이 프로젝트, 개인 프로젝트 수준의 서비스를 만들 수 는 있겠지만, 실제 상용 서비스가 가능한 (간단한 서비스는 제공할 수 있겠지만) 서비스 개발은 아직은 어렵다.
개발자는 없어질것이다.
AI가 개발자를 대처해서 개발자라는 직업이 없어질것이라고 하는데, 아니다. 없어지지 않을것이며, 요구하는 역량이 달라질것이다.
개발자는 크게 두 영역으로 나뉘어 진다. 타입스크립트나, 자바 스프링과 같은 이미 만들어진 프로그래밍 언어나, 프레임워크를 이용하여, 비즈니스 요구사항을 만족하는 애플리케이션을 만드는 애플리케이션 개발자, 그리고, 이러한 프로그래밍 언어나 프레임웍, 또는 LLM/AI 모델을 만드는 코어 개발자로 나뉘어 질 수 있다.
애플리케이션 개발 영역은 AI의 도움으로, 개발 난이도가 낮아지고 생산성이 높아짐에 따라서 지식 개발자 보다는 노동 집약적인 사업으로 변화할 가능성이 높고. 저임금 국가로 많이 이전이 될것이다. 많은 실리콘 밸리의 빅테크 기업들이 인도나 베트남, 동유럽과 같은 인건비가 낮은 쪽으로, 애플리케이션 개발 조직을 이전 하고 있다.
그러나, LLM 모델의 개발이나 AI 알고리즘의 개발, 프레임웍 개발등은 여전히 높은 수준의 기술력을 요구하기 때문에, 이에 대한 수요는 꾸준한 것으로 예상된다. 또한 이러한 분야는 사용자의 편의성, 알고리즘의 깊이등을 요구하기 때문에, 더욱더 가치가 높아지지 않을까 조심스럽게 예측해본다.
개발자에 요구 되는 역량 부분에서도 예전에는 자바나, API서버 개발, 특정 솔루션에 대한 이해를 바탕으로 구현이 가능한 능력이 갖는 것을 주요 역량으로 생각했다면, 이제는 주어진 비즈니스 문제를 기술로써 풀어나갈 수 있는 비즈니스에 대한 이해와, 크리티컬 씽킹 같은 사고 능력이 더 중요해지고 있고, 특히 다른 사람과 협업을 위한 협업/커뮤니케이션 능력이 더 중요해지고 있다.
실제로 실리콘 밸리에서 요구하는 인재를 General Software Engineer라고 하는데, 이 사람이 자바를 잘하는지 안드로이드 개발을 잘하는 지 보다는, 문제에 대한 이해 능력이 얼마나 좋은지, 프로젝트에 대한 협업 능력이 어떻게 되는지, 문제를 어떻게 해결하기 위해서 접근하는지를 더 집중해서 보고, 요구하고 있다.
프로그래밍 언어나 기술을 몰라도 된다.
아니다. 바이브 코딩에서 가장 문제가 되는 부분이 제대로 작동되지 않은 코드가 생성되거나 또는 작동을 하더라도, 나쁜 설계 (안티패턴) 기반의 코드가 생성되는 일이 많다. 그래서 최소한 AI 가 완성된 코드에 대해서 디버깅을 하고, 좋은 코드인지 나쁜 코드인지 검증할 수 있는 최소한의 능력을 가지고 있어야 한다.
또한 AI가 생성한 코드는 비동기 패턴이나 마이크로 서비스와 같은 아키텍처에 대한 깊은 이해가 없다. 특히 아키텍처 설계는 비즈니스 요구 사항에 따라 성능, 보안, 확장성등을 고려하거나 팀의 구조를 고려해야 하기 때문에, 요구되는 기능만 가지고 설계를 할 수 없는 인간의 사고 영역이다.
AI는 인간을 보조하고 생산성을 높여주는 역할이나, AI가 요구 사항을 이해하고 모든것을 만들어주는 역할이 아니다.
그리고 앞에서 언급했듯이, 운영이나 인프라에 대한 지식 없이는 제대로된 상용 서비스 개발이 불가능하다.
바이브 코딩의 문제점
AI 기술이 빠르게 발전되고 있기 때문에, LLM모델이 할 수 있는 부분이 더 많아지고, 바이브 코딩의 한계도 빠른 시일내에 많이 없어지겠지만, 현재 볼 수 있는 바이브 코딩의 문제점은 다음과 같다.
백엔드 인프라에 대해서 아직 자동화가 부족하다.
아직 서버나 데이터 베이스, 파일 시스템등 백앤드 시스템에 대한 자동화가 부족하다. 물론 클라우드 솔루션 벤더들이 MCP 서버들을 배포하고 있고, 구글 클라우드의 경우 Google Cloud Code Assist등을 이용해서 말로 클라우드 설정을 할 수 있지만, 아직은 엔지니어를 지원하는 수준이고, 완벽한 자동화는 부족하다.
쓰레기 코드를 양산할 수 있다.
LLM 모델이 학습된 코드를 통해서, 새로운 코드를 생성하는데, 앞에서 언급했듯이 에러 처리나 보안에 대해서 명확한 가이드를 주지 않으면 이런 부분이 빠질 수 있고, 안티 패턴을 가지고 있는 쓰레기 코드를 만들 수 있다.
소수 기술에 대한 이해가 부족하다.
특히 Tuexodo 와 같은 레거시나 C/C++ 과 같은 코드는 학습 데이터가 부족하기 때문에 품질 높은 코드를 생성하기 어려운 점이 있다.
물론 이러한 문제점은 프롬프트나, PRD 등의 여러가지 기법으로 어느정도 보강은 가능하다. 이 부분은 다음 글에서 다루도록 하겠다 .
결론적으로 바이브 코딩은 개발자를 지원하는 측면에서 기술의 학습 시간을 줄여주고, 코딩의 생산성을 획기적으로 높여주는 기술임에는 틀림이 없다. 그러나 아직 완전 자동화는 어렵고, 기술과 코드에 대한 충분한 이해가 없는 상황에서는 품질이나 보안등 여러가지 문제를 가지고 있기 때문에, 이에 대한 충분한 이해를 통해서 기술을 활용해야 한다.