바이브 코딩 일주일 실험기: 가능성과 한계 사이
뭐 하나 내일을 예측하기 힘든 시기이다. 그래서 세상의 변화에 적응하기 위해서 더 뭔가 시도하고 정리하는 것이 필요할 것 같다. 일주일 정도 밀도 높게 바이브 코딩을 해보고 느낀 몇 가지를 적어 본다.
언어는 Java를 사용했고, 예제 수준 코드가 아니라 이미 큰 코드 베이스와 1000개 이상의 테스트가 있는 AutoParams에 새로운 기능 2개(이벤트 로그, sealed 형식 지원)를 구현하고 Javadoc 작성하는 데 사용했다. 그러니까 실전에서 오래 사용될 코드다.
도구는 IntelliJ + GitHub Copilot과 Cursor를 사용했다.
그리고 모든 코드는 TDD를 사용해 작성했고 바이브 코딩 결과는 GitHub에서 볼 수 있다.

1. 확률 게임이다.
AutoParams 기능 개발도 중요하지만 바이브 코딩 체험도 중요했어서 바이브 코딩으로 같은 기능 개발을 여러 번 반복해 봤다. 성공 확률은 25% 정도. 만족스럽지 못하거나 실망스러운 수치다. 나머지 75% 정도는 프로젝트 코드를 여기저기 수습이 안될 정도로 헤집어 놨고 정작 기능 구현은 성공하지 못해서 맥락을 초기화 하고 코드를 롤백 해야 했다.
2. 좁은 범위의 구현 코드는 곧잘 작성한다.
단, 조건이 있다. 문서를 통해 가이드라인과 요청을 명확하게 전달해야 한다. 그리고 이것 역시 확률의 영역임은 다르지 않다. 아무리 자세히 작성하고 상기시켜도 지켜질지 여부는 확률적이다. 그래도 범위가 좁으면 확률이 올라간다.
이 영역에 대해서는 기대 효율이 나보다 높다. 특히 'Resolved(<1 ms)', 'Resolved(7 ms)' 이런 출력을 검사할 때 정규식에 약한 나에게 큰 도움이 됐다.
그리고 sealed 형식 테스트를 위한 데이터 구조(Shape, Rectangle, Vehicle, Car 이런 것들과 그 관계)를 준비할 때도 만족스러웠다.
하지만 내가 전부터 강조한 것인데 좁은 범위 코드 구현은 전체 개발 과정의 일부일 뿐이다.
3. 가이드라인은 효율에 많은 영향을 미친다.
심지어 Javadoc을 작성할 때 이런 가이드라인도 있어야 했다.
"Close <p> with </p> correctly."
태그를 열고 닫지 않는 실수는 사람이나 할 거라고 믿지 말자. 그리고 가이드라인에 적었다고 해서 AI가 반드시 지킬 것이라고도 믿지 말자. 하나하나 확인하고 지키지 않을 때마다 상기 시켜 줘야 한다.
AutoParams 작업에 사용했던 가이드라인은 커밋되어 있다.
4. 계획을 세우는 일은 체감할 수준의 도움이 될 확률이 아주 낮다.
TDD를 사용했기 때문에 AI와 워밍업 후 먼저 테스트 시나리오 목록을 작성하는데 전혀 도움 안되는 건 아니지만 좀 애매한 수준이다. 내가 sealed 형식에 대해서 놓쳤던 중첩된 추상 sealed 형식 고려를 잡아준 것은 큰 도움이 됐지만 나머지는 효율이 극악이었다.
그나마 하나 건진 것은, 테스트 시나리오의 목록을 작성하라고 하면 대부분 급발진해서 산으로 가는데, 대표적이고 중요한 우선순위로 시나리오 하나씩만 제안하게 하면서 교정해 가면 도움이 된다. 물론 그래도 과정은 길고 험난하다.
5. 낯선 코드에 취약하다.
다른 어디에선가 비슷하게 만들어졌을 법한 코드 또는 디자인 패턴이 적용된 경우에는 높은 효율을 보여주지만 시스템(AutoParams) 특유의 논리가 들어가는 경우 혼돈에 빠져든다. 이럴 때는 가이드를 해줘도 잘 교정되지 않는다. 익숙한 건 잘하지만 거기까지다.
6. 스트레스를 무시할 수 없다.
예시나 재미로 만드는 프로그램이 아닌, 실전 배치 가능한 수준의 코드를 작성 할 때 바이브 코딩은 기능 개발의 목적, 구현 목표, 준수해야 할 규칙, 작업 계획이 명확하면 같은 결과물을 더 적은 시간을 소비해 만들 수 있다.
하지만 간과할 수 없는 것이 그 시간 동안 받는 높은 스트레스다. 게다가 확률적이기 때문에 그 스트레스를 모두 받아냈음에도 실패할 가능성을 무시할 수 없다는 건 큰 부담이다.
그래서 바이브 코딩에 의존하기 보다는 언제 유용한지 경험을 통해 습득하는 것이 중요하게 느껴진다. 이건 바이브 코딩이란 개념이 너무 초기 단계라 섣불리 이론적으로 규정하기 어렵다.
7. 그래서 결론은?
아직 바이브 코딩이 어떤 직군을 구제하거나 학살할 수준은 못된다는 것이 지금까지의 결론이다. 하지만 일주일 실험 결과가 얼마나 의미가 있을지는 모르겠다.
이 글을 시작한 첫 문장이 급변하는 시기에 많은 프로그래머들과 회사들이 혼란과 공포를 느끼는 이유인 것 같다.
"뭐 하나 내일을 예측하기 힘든 시기이다."
https://github.com/AutoParams/AutoParams/blob/main/context.md
