정도현 - 로보코 수석 컨설턴트

앞선 바이브 코딩의 생산성에 대한 포스트에서도 밝혔듯이, 바이브 코딩의 생산성은 두 가지 요소에 의해 크게 좌우된다. 하나는 바로 사람의 생산성, 즉 개발자의 문제 해결 능력과 분석 능력이다. 다른 하나는 이를 보완하고 강화하는 도구나 프로세스의 생산성이다. 여기서의 생산성이란 단지 코드를 빠르게 짜는 능력만을 의미하지 않는다. 계획을 세우고 문제를 분석하며 해결책을 찾는 전반적인 역량까지를 포함한다.

나는 실제로 여러 프로젝트를 수행하면서 바이브 코딩이 잘하는 작업과 그렇지 못한 작업들을 경험적으로 분류해 보았다. 어떤 일이든 도구가 잘하는 것과 잘하지 못하는 것을 아는 것이 중요하다. 잘 활용하려면 도구의 특성을 잘 알아야 한다는 뜻이다.

우선 바이브 코딩이 유난히 잘하는 작업들부터 보자.

첫째, 명세가 명확하게 정의된 작업이다. 바이브 코더가 모든 세세한 부분까지 알지 못해도 작업의 내용과 진행 순서가 잘 문서화되어 있다면 AI는 놀랍도록 정확한 결과물을 내놓는다. 명확한 문서화가 AI의 능력을 최대한 끌어내는 열쇠인 셈이다.

둘째, 포팅 작업이다. 이미 다른 언어나 플랫폼, 프레임워크로 완성된 프로젝트가 있다면 그 코드 자체가 완벽한 명세서 역할을 한다. AI는 기존 코드를 참조하여 높은 완성도로 포팅 작업을 빠르게 수행할 수 있다. 특히 기존 프로젝트에 자동화된 테스트가 부족하다면 AI를 이용해 단위 테스트(UT), 통합 테스트(IT), 종단 간 테스트(E2E)를 먼저 생성한 후 이를 포팅 대상 프로젝트에 적용하면 훨씬 정확하고 효율적으로 작업을 진행할 수 있다.

셋째, 간단한 스크립트나 유틸리티 작업이다. 입력과 출력이 명확하게 정해진 작업이라면 AI는 마치 빛의 속도로 일을 해낸다. 일회성 작업이라 할지라도 테스트 주도 개발(TDD) 방식을 도입하면 빠르게 작업하면서도 신뢰성을 높일 수 있다.

하지만 모든 일이 그렇게 간단하지는 않다. 바이브 코딩이 잘 못하는 작업들도 있다.

첫째, 무엇을 만들어야 하는지 불분명한 작업이다. 소프트웨어 개발 과정에서 종종 있는 일로, 실제 구현과정을 통해 조금씩 사양을 개선하며 진행해야 하는 작업들이 있다. DevOps 관련 툴이나 복잡한 워크플로우 설계가 그 예다. 이런 작업은 ChatGPT와 같은 대화형 AI 서비스를 통해 여러가지 상황들을 AI와의 대화를 통해 시뮬레이션 하면서 방향을 잡은 다음 구현하는 것이 현명하다.

둘째, 복잡한 컨텍스트를 지닌 작업이다. 특히 복잡한 관계형 데이터베이스를 갖춘 모노리식 아키텍처 같은 프로젝트는 컨텍스트가 방대하고 복잡해 사람조차 헤매기 쉽다. 이상적으로는 마이크로 서비스 형태로 쪼개 작업하는 것이 좋지만 현실적으로 어려운 경우도 많다. 이럴 땐 프롬프트 엔지니어링을 통해 AI가 처리할 컨텍스트의 크기를 제한하는 방법이 있다. 작업별로 관련 문서나 코드만 선택하여 규칙 파일로 제공하는 방식이다. 물론 작업마다 규칙을 동적으로 업데이트해야 하는 번거로움이 있지만 최근 TaskMaster AIBMAD-METHOD와 같은 도구들이 등장하면서 이 부분까지도 자동화 가능해지고 있다.

이처럼 바이브 코딩의 효과적인 활용은 결국 AI와 사람이 서로의 강점과 약점을 잘 이해하고 활용하는 데서 비롯된다. 명확히 정의된 작업에서는 AI의 빠른 처리 속도와 정확성이 빛나지만, 복잡하고 모호한 작업에서는 사람의 판단력과 분석력이 여전히 중요하다.

지금 이 순간에도 전 세계 바이브 코더들은 끊임없이 실험하고 있다. 이미 바이브 코딩으로 만들 수 있는 작업들은 실제로 구현되고 있으며, 아직 구현되지 않은 복잡한 문제들은 해결하려는 시도가 끊임없이 진행되고 있다. 도구는 한계가 있을지 모르나, 그 도구를 활용하는 인간의 창의력과 도전정신에는 한계가 없다.