Back
ESSAY비개발자를 위한 바이브코딩 안내서
DEC 16, 2025

Part 4.1 왜 프로젝트를 끝내지 못할까?

바이브코딩을 시작하면 처음엔 참 신기합니다.

그냥 한글로 간단한 거 몇개 입력했을 뿐인데, 그게 코드가 주욱 작성이 되거든요.

근데 이 단계는 정말 간단한 것들이라서 가능한 거 였을 수도 있습니다. 기능이 좀 더 복잡해지면, 바이브코딩 그 이상을 바라봐야 할 때가 분명히 옵니다. 특히, 로직이 꼬이고 컨텍스트가 충분하지 못하다면 바이브코딩만으로 해결하기엔 머리가 상당히 아플거에요.

이게 바로 70-80% 벽입니다. 바이브코딩을 하는 거의 모든 사람이 겪는 현상이고, 실제로 "80% 수준에서 머물며 출시 못하는 앱들이 SNS상에 수두룩"합니다.

왜 이런 일이 생기는지, 그리고 어떻게 넘을 수 있는지 알아보겠습니다.


파레토 법칙 80:20

왜 처음엔 빠른가?

바이브코딩의 처음 70-80%가 빠른 이유가 있습니다:

  • UI 만들기는 AI가 잘함: 버튼, 폼, 레이아웃 같은 화면 구성

  • 기본 로직은 패턴화되어 있음: 목록 표시, 입력 처리, 페이지 이동

  • 눈에 보이는 결과: 바로바로 확인 가능해서 진행이 느껴짐

이 단계에서는 진짜 내가 원하는 것을 바이브만으로 다 할 수 있구나! 라고 생각이 듭니다. 네, 당연히 자신이 만드려고 하는 거는 왠만해서는 바이브코딩으로 만들 수 있다고 생각합니다. 하지만 조건이 있습니다.

왜 마지막 20%가 80%의 시간을 잡아먹는가?

소프트웨어 개발 마지막 단계에서는 복잡성이 증가합니다. 왜냐면, 그동안 만들어뒀던 기능들을 조합하거나, 테스팅을 하면서 발견되는 케이스는 엣지케이스일 경우가 있거든요. 이 외에도 여러 이유가 있지만, 일단 바이브코딩 수강생분들의 사례를 가져왔습니다.


원인 1: 복잡성 증가 - 기능들이 서로 얽힘

처음엔 기능들이 독립적입니다:

  • 로그인 화면 만들기 ✅

  • 상품 목록 보여주기 ✅

  • 장바구니 UI 만들기 ✅

그런데 이것들을 연결하려고 하면:

  • 로그인한 사용자만 장바구니에 담을 수 있게 하기

  • 장바구니에 담으면 상품 목록에서 담았다는 표시하기

  • 결제하면 장바구니 비우고 주문내역에 추가하기

이런 식으로 조합이 됩니다. 조합을 하면서 기능들이 서로 영향을 주기 시작합니다. 하나를 고치면 다른 게 망가지는 짜증나는 일이 일어납니다.

원인 2: 백엔드 통합

화면(프론트엔드)은 눈에 보이니까 AI가 만들어주면 바로 확인됩니다. 하지만 백엔드는 다릅니다:

  • 사용자 인증 (로그인 상태 유지)

  • 데이터베이스 연동 (저장하고 불러오기)

  • 외부 API 연결 (결제, 이메일, 소셜 로그인)

  • 파일 업로드/다운로드

이것들은 눈에 안 보이고, 설정이 복잡하고, 에러 메시지도 어렵습니다.


원인 3: 배포 문제 - "내 컴퓨터에서는 되는데..."

로컬(localhost)에서 잘 되던 앱이 배포하면 안 되는 이유:

로컬 환경배포 환경
http://localhost:3000https://myapp.vercel.app
환경 변수가 .env에 있음환경 변수를 따로 설정해야 함
DB가 로컬에 있음원격 DB에 연결해야 함
파일이 내 컴퓨터에 있음클라우드 스토리지 필요
CORS 문제 없음CORS 에러 발생

원인 4: 보안 누락 - 작동은 하는데 위험함

AI가 만든 코드는 "일단 작동하게" 만드는 데 집중합니다. 보안은 사용자가 명시해주지 않는 이상, 일정 수준의 보안 말고는 딱히 해주지 않습니다. 최근엔 보안을 위한 프롬프트, 보안을 위한 claude code skill도 잘 되어있으니, 관심있으시다면 꼭 한 번 보시길 바랍니다.

대표적인 보안 실수 사례:

  • API 키가 코드에 노출됨 - 이건 여러분의 돈과 직결되는 문제입니다. 지갑이 털려요.

  • 사용자 입력을 검증 안 함

  • 누구나 다른 사람 데이터에 접근 가능

  • 결제 금액을 클라이언트에서 조작 가능


원인 5: 오버 엔지니어링

제가 가장 경계하는 개념 중 하나입니다. 프로덕트를 위해 딱 필요한 그 기능만 만들어야 하는데, 이게 이상하게, 개발을 하다보면 더 좋은 아이디어가 떠오르기도 하고, 좀 더 멋지고 이쁘게 만들고 싶은 욕구가 늘 생기거든요.

처음 계획은 "간단한 할 일 목록 앱 만들어야지" 라고 생각하다가

나중에는 "할 일에 마감일도 추가하고, 알림도 보내고, 팀원이랑 공유도 되고, 반복 일정도 되고, 통계도 보여주고" 하는 식이 되 버립니다.

기능이 추가될 때마다 복잡성은 곱셈으로 증가합니다. 5개 기능이 서로 연결되면 관리해야 할 조합이 기하급수적으로 늘어납니다.


해결 1: 처음부터 작게 시작하기 (범위 제한)

**MVP(Minimum Viable Product)**를 정의하고 거기에 집중하세요!! 중요!! 처음에 기획한 것에서 더 추가 하지마세요!!

❌ "SNS 앱 만들어줘"
✅ "텍스트 게시글을 올리고 목록으로 볼 수 있는 앱 만들어줘.
    로그인, 좋아요, 댓글은 나중에 추가할 거야."

"이 기능 없이도 앱이 쓸모 있는가?" 를 스스로에게 되물어보세요. 만약, 답이

  • Yes라면 나중에 추가하세요.

  • No라면 지금 만들기!

참고로, PRD에 대해서 설명을 드리면, 저는 처음부터 PRD를 가지고 개발하는 것을 추천하지 않습니다. PRD는 이 문서 하나가 전문적인 문서라고 볼 수 있는데, 처음 개발하시는 분들은 이 PRD에 익숙하지가 않아요. 그래서, PRD도 나중에 블로그에서 다룰텐데, 지금은 '기능리스트' 만 주욱 나열하는 것을 추천드려요. 나머진 커서나 클로드코드가 알아서 진행을 해 줄 겁니다.


해결 2: 테스트 통과하면 즉시 커밋 (Git 활용)

8장에서 배운 내용을 철저히 지키세요.

# 로그인 기능 완성
git add .
git commit -m "로그인 기능 완성 - 작동 확인됨"

# 장바구니 기능 추가 시도
# ... 작업 ...

깃을 써야, 여러분들이 '잘 되던 때'로 돌아갈 수 있습니다. 제발 깃 사용해주세요! 깃헙 계정 빨리 만드세요!!


해결 3: 기능별로 격리해서 개발하기

한 번에 여러 기능을 건드리지 마세요. 제가 추천하는 방법은 1프롬프트 = 1기능 입니다. 바이브코딩의 장점인 '시간절약' 과는 거리가 멀 수도 있지만, 이렇게 하는 것이 나중에 가서 꼬임을 방지하고, 여러분 스스로 코드를 잘 팔로업할 수 있습니다.

이건

❌ "로그인이랑 장바구니랑 결제 한꺼번에 연결해줘"

✅ 순서대로 하나씩:
   1. "로그인 기능만 완성해줘" → 테스트 → 커밋
   2. "장바구니 기능만 완성해줘" → 테스트 → 커밋
   3. "로그인한 사용자만 장바구니 접근하게 해줘" → 테스트 → 커밋
   4. "결제 기능 추가해줘" → 테스트 → 커밋

해결 4: 새 채팅에서 작업해보기

이건 사람마다, 케이스마다 다를 수 있어요. 분명 이게 안될리가 없는 프롬프트를 입력했는데 왠지 모르게 시간이 오래 걸리고, 버그도 많고 하다면? 그럴 땐 '새 채팅'에서 작업을 해 보세요. 컨텍스트가 꽉 차서, 이전 내용을 기억 못하고 있는 걸 수도 있고, 또는 컨텍스트가 없어서 작업이 축소되는 경우가 있습니다. 한 번 시도해보세요. 저는 어지간해서는 1기능=1채팅으로 하려고 합니다. 만약 이어지는 기능이라면 컨텍스트가 여유있으면 좀 더 하는 편이고 만약 없다면, 최대한 문맥을 요약했다가, 새 채팅에 붙여넣고, 거기서부터 다시 작업을 시작합니다


해결 5: 마지막 20%는 학습하거나 외주 맡기기

학습과 외주. 바이브코딩 세계로 입문했을 때, 이 2가지를 안하려고 입문하신 분들이 많을 겁니다. 하지만, 우리 조금 더 목적을 바라보자구요. 프로덕트를 만들기 위해서 바이브코딩을 하려는거지, 코딩을 배우기 위해 바이브코딩을 하려는 건 아니잖아요?

그럼 우리의 목적은 '프로덕트'에 있어야 합니다. '코딩학습'에 있어서는 안되요. 만약 자신이 이 프로덕트 말고도 앞으로도 주욱 바이브코딩으로 프로덕트를 만들고 싶다면, 코딩학습을 어느 정도는 하는게 좋습니다. 제 앞의 연재글들도 다 이런 방향으로 작성했습니다.

그치만, 일단 중요한 건 프로덕트 완성이고, 이 단계를 무사히 끝내지 못하면 여러분의 사업, 여러분의 마일스톤은 뒤로 밀리게 됩니다. 그렇다는 뜻은 결국 여러분의 시간 비용이 희석되버리는거죠.

그래서 제가 '학습, 외주' 라는 키워드를 들고 왔습니다. 여러분의 힘으로 안될 것 같다면 우회해야합니다. 사업적으로 옳은 방향을 고민해보세요. 물론 시간이 여유가 있다면, 혼자 힘으로 바이브코딩을 계속 할 수는 있습니다.

첫째, 부족한 부분 학습하기

대부분 막히는 지점이 정해져 있습니다:

  • 인증/로그인 유지 → Supabase Auth, NextAuth 학습 ( 쿠키, 세션, JWT 는 다음에 다뤄볼게요 )

  • 배포 → Vercel/Netlify 배포 과정 학습

  • 결제 → 포트원 연동 학습

해당 부분만 집중 학습하면 2-3일이면 넘을 수 있습니다.

둘째, 외주 맡기기

마지막 20%만 개발자에게 맡기는 것도 방법입니다.

  • 비용: 20%가 어느 정도냐에 따라 달라지겠습니다. 하지만 외주업체 혹은 프리랜서 분들에게 맡겼을 때, 맨 바닥에서 맡겼을 때보다 비용은 훨씬 저렴해졌을거에요.

  • 플랫폼: 숨고, 크몽, 위시켓, 프리랜서 커뮤니티

Thank you for reading.

Based in Seoul
Since 2024