바이브 코딩

저번달에 출장가서 바이브 코딩을 체험해보았다.

바이브 코딩은 실제로 코드를 작성하는 것이 아니라, AI와 대화하며 코드를 작성하는 방식으로, 개발자들이 코드 작성에 소요되는 시간을 줄이고, 더 창의적인 작업에 집중할 수 있도록 돕는 것을 목표로 한다.

사실 Copilot 같은 경우 출시가 된지 꽤 되었고, 실제로 사용해본 경험이 있어서, 사실 바이브 코딩에 대한 기대감은 그렇게 크지 않았다. 그냥 말을 조금 더 잘 듣는 AI가 나왔구나 정도로 생각하였다.

현재 내가 서비스하고 있는 조그만 프로젝트에 적용해보았는데, 생각보다 많이 인상적이였다.

그리고 리팩토링이 아닌 처음부터 바이브코딩으로 시작하는 경우 더 빠르고 편하게 개발이 가능할거라 생각해서 데블스 플랜을 보다 마음에 들었던 게임 하나를 바이브 코딩을 통해서 구현해보았다.

구현

구현은 데블스플랜2에 나온 히든게임인 기사의 여행을 구현해보았다. 넷플릭스가 만든 게임도 아니고, 원래부터 유명한 수학 알고리즘 게임이여서 저작권 걱정없이 재밌게 구현이 가능했다.

게임은 기사의 여행 여기서 볼 수 있고 코드는 소스코드 여기서 확인해볼 수 있다.

시간은 약 2시간 정도 소요되었고, 실제 코드 작성을 최소화 하고, 채팅을 통해서 동작들을 검증해나가며 구현해보았다.

사실 개발 자체를 너무 잘해서 개발자가 뇌를 비우고 개발을 할 수 있다 정도는 아니였다.

아무래도 기사의 여정 같은 경우 알고리즘도 다양하고, 최적화 알고리즘이 다양하며 실제로 개발자가 테스트를 해보며 최적화가 잘 되어 있는지 확인하는 과정도 많이 필요하다. AI가 처음에 알고리즘을 너무 이상하게짜서 오버헤드가 너무 커지거나 연산이 너무 많아서 브라우저가 뻗어버리는 경우도 있었다. 그럼에도 불구하고 정말 구현 단계에서는 생산성이 정말 말도안되게 향상됨을 느낄 수 있었다. 비슷한 리뷰들도 많지만, 정말 열정적인 개발 신입을 옆에 데리고 개발을 하는 느낌이다.

특히나 매번 버전업이 될 때마다 사용법이 달라지는 i18n 이나, 다크모드 등 이런거는 정말 프레임워크 혹은 최신 라이브러리에 의존하여 구현하는 경우가 많아, 러닝커브도 높고 이러한 공부를 해야하는 시간도 아까웠는데, 바이브 코딩을 통해서 이러한 부분을 쉽게 구현할 수 있었던게 정말 좋았다.

그리고 이번 AI코딩툴 활용은 커서 IDE 와 StageWise 란 오픈소스를 같이 활용해서 사용을 했는데, 사용성이 정말 좋았다. 우선 IDE 가 AI를 공식적으로 서포트 한다는건 처음 신기한 경험이였는데, 단순하게 코드를 작성하는 것 뿐만 아니라, 채팅을 통해 마치 대화를 하며 코드 작성을 도와주고 개발해주어 실제로 혼자 개발을 하는것이 아닌 생산성이 정말 높은 개발자가 있는 듯한 느낌을 받았다. 그리고 자동으로 Import/Terminal을 통해 command 제어까지 실행해주는건 정말 편리했다. 그 외로도 commit 로그나, auto import 등 IDE 자체에서 AI를 활용하는 부분이 편의성 하나는 제대로 갖추고 있다는 생각이 들었다.

그리고 StageWise 란 UI 딴에서 AI 활용을 좀 도와줄 수 있는 open source 도 같이 사용을 하였는데, 솔직히 아직까지는 early-access 의 단계라서 사용성은 조금 아쉬웠다. 그래도 이렇게 도움을 줄 수 있다는 아이디어나 가능성은 잘 열어 두었다고 생각이 들었다.

내 생각

실제로 AI가 개발자를 대체할 수 있을까? 라는 주제로 접근을 해본다면 100% 대체를 불가능하다고 생각을 한다. 특히나 최근 출장을 가서 단순 개발이 아니라 사내망에서 개발을 하며 방화벽, 보안, 망 접근 등 다양한 관점에서 개발을 해야되는 상황이 많았는데, 이러한 문제가 생겼을 경우 AI의 도움을 받아도 해결하기가 참 어려웠다. 하나 극단적인 예를 들자면 최근에 MQTT 통신을 통해 IoT 디바이스 통신을 구현하는데, 통신을 최소화 하기 위해 TCP Connection 이 끊어지지 않도록 하는 방법을 찾아야 했는데, AI가 알려주는 방법은 너무 비효율적이거나, 실제로는 불가능한 방법이였다. 이러한 부분은 결국 개발자가 직접 찾아서 해결해야 하는 문제고 이러한 방법을 직접 개발자가 찾고 이해하기 위해서는 개발자가 직접 CS 공부를 하고 해결방법을 찾은 후 AI와 같이 대화를 하며 해결해야 하는 문제라고 생각이 되었다. 왜냐하면 물어보는 Prompt를 개발자가 100% 이해하고, 문제 상황에 대해 100% 이해하고 있어야 AI가 제대로 된 답변을 해줄 수 있기 때문이다.

대신 구현에 대해서는 정말 개발자의 역량이 많이 줄어들었다고 생각한다. 특히나 반복적인 작업이나, 단순하게 구현하는 부분에 대해서는 AI가 정말 잘 도와주고, 개발자가 직접 코드를 작성하는 것보다 훨씬 빠르게 개발을 할 수 있다고 생각한다. 특히 앞서 언급했던 i18n 이나 다크모드 등 프레임워크를 사용하는 경우, AI 가 오히려 사람보다 더 효율적이고 최신 기술을 잘 알고 있어서, 개발자가 직접 구현하는 것보다 훨씬 빠르게 개발을 할 수 있을 것 같다.

앞으로의 개발자는 어떤 방향으로 나아가야 될까? 물론 내 생각이 100% 맞는것도 아니고 그냥 주니어의 입장에서 서술할 뿐이지만, 우선 AI와 함께 개발을 하는 방법을 익히는 것이 중요하다고 생각한다. 특히 프롬프트 엔지니어링이란 단어가 생길 정도로 AI와 대화하는 방법을 익히는 것이 중요하다고 생각한다. 대화를 해보면서 키워드 중심으로 말을 해야 잘 알아듣는게 마치 google 검색 시 색인과 검색어 조건 SEO 등을 잘 맞춰야 검색 결과가 잘 나오는 것과 비슷하다고 생각한다.

그리고 아무래도 Computer Science의 기본적인 지식은 여전히 중요하다고 생각한다. AI가 코드를 작성해주고, 개발을 도와주지만, 결국 AI가 작성한 코드를 이해하고, 최적화하고, 문제를 해결하기 위해서는 개발자가 기본적인 CS 지식을 가지고 있어야 한다. 특히 알고리즘이나 자료구조에 대한 이해는 정말 중요하다고 생각한다.

그리고 또 하나 보자면 코드 리뷰 능력이라고 생각한다. AI가 작성한 코드를 리뷰하고, 최적화하는 능력은 개발자가 가져야 할 중요한 역량이라고 생각한다. AI가 작성한 코드가 항상 최적화되어 있거나, 효율적인 것은 아니기 때문에, 개발자가 AI가 작성한 코드를 리뷰하고, 개선할 수 있는 능력을 가져야 한다.