나의 첫 번째 바이브 코딩(Vibe coding) 프로젝트를 통해 내가 무엇을 만들고 있는지조차 몰랐다는 사실을 깨달았다

나는 모바일 엔지니어링 팀을 관리한다. 아키텍처를 검토하고 프로젝트 범위를 조정한다. 수백만 명의 사용자에게 앱을 출시한 경험도 있다.

AI와 함께 사이드 프로젝트를 시작했을 때, 나는 지름길을 선택하는 것이 가장 어려운 부분일 것이라고 생각했다. 하지만 내 착각이었다.

나는 쇼핑 리스트 앱을 만들고 싶었다. 대부분의 앱은 단순한 목록만 보여준다. 리스트가 동선을 따르지 않기 때문에 매장 안을 미로처럼 헤매게 된다. 내 아이디어는 간단했다. 품목을 통로(aisle)별로 분류하는 리스트를 만드는 것이다. 매장 레이아웃을 한 번만 설정해 두면, 앱이 모든 리스트를 그 레이아웃에 맞춰 정렬해 준다.

AI에게 컨셉을 설명했다. AI는 아주 빠르게 무언가를 만들어냈다. 인상적이었다.

그러다 결과물을 보고 깨달았다. 잘못되었다는 것을.

코드는 괜찮았다. 문제는 나의 비전이었다. 나에게는 계획이 아닌, 흐릿한 아이디어만 있었던 것이다.

"통로별로 정리된 쇼핑 리스트"는 완전한 아이디어가 아니다. 실제 제품을 마주하게 되면 다음과 같은 까다로운 질문들이 쏟아진다.

• 품목에 지정된 통로가 없으면 어떻게 되는가? • 완료된 품목은 사라지는가, 아니면 새로운 섹션으로 이동하는가? • 완료된 섹션은 각 통로의 하단에 위치하는가, 아니면 리스트의 맨 끝에 위치하는가? • 신규 사용자는 매장 레이아웃을 어떻게 설정하는가? • 비어 있는 통로 헤더는 계속 보이는가, 아니면 접히는가?

나는 이 중 단 하나의 결정도 내리지 않은 상태였다.

전통적인 방식으로 무언가를 만들 때는 코딩을 하면서 이런 질문들에 답을 해나갔다. 코드를 작성하는 과정에서의 마찰(friction)이 속도를 늦춰주었다. 그 덕분에 뇌가 빈틈을 채울 시간을 가질 수 있었다. 코드가 곧 명세서(specification)가 되었던 것이다.

바이브 코딩(Vibe coding)은 그 마찰을 제거한다. AI는 너무 빠르게 움직이기 때문에 구현 과정 중에 결정을 내릴 틈이 없다. AI는 당신이 남겨둔 모든 빈틈에 대해 스스로 가정을 해버린다. 세부 사항을 충분히 고민하기도 전에 결과물을 보여준다.

사람들은 AI가 좋은 코드를 쓸 수 있는지에 대해 논쟁한다. 하지만 그것은 잘못된 질문이다.

진짜 질문은 이것이다: 당신은 무엇을 만들고 싶은지 알고 있는가?

시작하기 전에 모든 결정에 대한 답을 가지고 있어야 한다. 예외 상황(edge cases)이 어떻게 작동할지 알아야 한다. 사용자 경험이 어떻게 느껴질지 알아야 한다.

이것은 제품 관리(product management) 역량이다. 개발자가 시작하기 전에 경험을 정확하게 묘사할 수 있는 능력이다. 나는 나에게 이런 능력이 있다고 생각했다. 하지만 바이브 코딩은 내가 그저 구현(implementation) 뒤에 숨어 있었을 뿐이라는 사실을 증명했다.

내가 만든 앱의 이름은 By Aisle이다. 완성하는 데 오랜 시간이 걸렸다. 코드가 어려워서가 아니었다. 내 제품이 무엇인지부터 먼저 파악해야 했기 때문이다.

만약 AI를 사용하여 무언가를 만든다면, 이렇게 해보라: AI를 켜기 전에 제품에 필요한 모든 결정 사항을 적는 데 한 시간을 투자하라. 그러면 수많은 빈틈을 발견하게 될 것이다.

Source: https://dev.to/kraizman/my-first-vibe-coding-project-taught-me-i-didnt-actually-know-what-i-was-building-1af8

Optional learning community: https://t.me/GyaanSetuAi