Vibe Coding이란?
2025년 초, Andrej Karpathy(전 OpenAI, Tesla AI 총괄)가 트위터에서 "vibe coding"이라는 개념을 제시했습니다:
"나는 이제 코드를 완전히 AI에게 맡기고 있다. 구현 방법을 생각하지 않고 원하는 것만 말한다. 에러가 나면 붙여넣기만 한다. 대부분 그냥 작동한다."
Vibe Coding은 기존 코딩과 근본적으로 다릅니다:
| 기존 코딩 | Vibe Coding |
|---|---|
| 구현 방법 직접 설계 | "이런 걸 만들어줘" |
| 문법, API 암기 | 결과만 확인 |
| 에러 직접 디버깅 | 에러 붙여넣고 "고쳐줘" |
| 코드 이해 후 수정 | 원하는 변경사항 설명 |
왜 지금 가능해졌나
flowchart LR A[2021<br/>Copilot 등장<br/>자동완성] --> B[2023<br/>GPT-4<br/>코드 설명/생성] B --> C[2024<br/>Cursor Composer<br/>멀티파일 편집] C --> D[2025<br/>Vibe Coding<br/>전체 앱 생성]
2024년 Cursor의 Composer, Claude의 긴 컨텍스트(200K), GPT-4o의 강화된 코딩 능력이 합쳐지면서 "그냥 말하면 앱이 만들어지는" 수준에 도달했습니다.
Vibe Coding 실전 워크플로우
1단계: 프로젝트 시작
# Cursor Composer 또는 Claude에게:
"Next.js 14, TypeScript, Tailwind CSS, Prisma + PostgreSQL 스택으로
할일 관리 앱을 만들어줘.
기능:
- 할일 추가/완료/삭제
- 카테고리 분류 (work/personal/health)
- 마감일 설정
- 로그인 없이 로컬 스토리지 사용
지금 당장 실행 가능한 코드로"
→ AI가 폴더 구조, 파일 전체를 한 번에 생성
2단계: 에러 처리
# 에러가 나면 그냥 붙여넣기
"이 에러 고쳐줘:
TypeError: Cannot read properties of undefined (reading 'map')
at TodoList (./components/TodoList.tsx:24:5)"
설명할 필요도 없습니다. AI가 스택 트레이스만으로 원인을 파악합니다.
3단계: 기능 추가
"할일에 우선순위(높음/중간/낮음) 필드를 추가하고
우선순위별로 정렬하는 드롭다운도 추가해줘.
DB 스키마, API, UI 전부 업데이트해줘."
→ Cursor가 관련 파일 5개를 동시에 수정
실제로 어디까지 가능한가?
개인 프로젝트 수준에서 완전히 가능한 것들:
- 대시보드, 관리자 패널
- 개인 블로그, 포트폴리오
- 사내 도구 (엑셀 대체, 간단한 CRM)
- 데이터 시각화 앱
- Slack/Discord 봇
- 스크래퍼, 자동화 스크립트
아직 AI가 잘 못하는 것들:
- 복잡한 상태 관리 (Redux 같은 깊은 상태 트리)
- 퍼포먼스 최적화 (렌더링 병목, 메모이제이션)
- 레거시 코드 대규모 리팩터링
- 복잡한 비즈니스 로직 설계
Vibe Coding에 좋은 도구들
Cursor
.cursorrules 파일로 AI가 지킬 규칙을 정의:
You are building a Next.js 14 app with TypeScript strict mode.
Rules:
- Use App Router, NOT Pages Router
- Tailwind for ALL styling, no CSS files
- Zod for ALL form validation
- Always add error boundaries
- Korean comments for complex logic
Claude (대화 기반 설계)
큰 기능을 설계할 때는 Cursor 대신 Claude와 먼저 설계를 논의합니다:
"결제 시스템을 추가하려고 해. Stripe를 써야 하고,
구독 모델(월/연)이야. 어떤 테이블 구조와 API 엔드포인트가 필요한지
먼저 설계해줘. 코드는 아직 필요 없어."
설계가 확정되면 Cursor에서 구현합니다.
v
0 (Vercel)
UI 컴포넌트는 v0.dev가 최강입니다:
"shadcn/ui로 사용자 프로필 카드 컴포넌트 만들어줘.
아바타, 이름, 직함, 통계(게시물/팔로워/팔로잉), 팔로우 버튼 포함"
→ 즉시 복사 가능한 React 컴포넌트 생성
Vibe Coding의 현실적 한계
컨텍스트 한계
AI는 프로젝트 전체를 한 번에 파악하지 못합니다. 코드베이스가 커지면 "지난번에 만든 그 로직이랑 연결해줘"가 통하지 않을 때가 생깁니다.
해결책: .cursorrules에 아키텍처 원칙 명시, 핵심 파일 경로 문서화
보안 맹점
AI가 생성한 코드에는 보안 취약점이 숨어있을 수 있습니다.
# AI가 자주 저지르는 실수들
# SQL 인젝션 가능성
query = f"SELECT * FROM users WHERE name = '{user_input}'" # ❌
# 비밀번호 평문 저장
db.save({"password": password}) # ❌
# 인증 없는 API 엔드포인트
@app.get("/admin/users") # ❌ 인증 미들웨어 없음
AI에게 항상 요청: "보안 취약점도 같이 검토해줘"
테스트 부재
Vibe Coding으로 만든 코드는 테스트가 없는 경우가 많습니다. 프로덕션 배포 전에는 반드시 AI에게 테스트 코드도 요청하세요.
개발자 정체성 변화
Vibe Coding 시대에 개발자에게 더 중요해지는 것들:
덜 중요해지는 것:
- 문법 암기
- 특정 API 사용법 숙지
- 보일러플레이트 코드 작성
더 중요해지는 것:
- 아키텍처 판단력: AI가 제안한 구조가 맞는지 평가
- 비즈니스 로직 이해: 무엇을 만들어야 하는지 정의
- AI 대화 능력: 원하는 것을 정확히 설명하는 프롬프팅
- 코드 리뷰 안목: AI 출력물의 품질 검증
결론
Vibe Coding은 코딩을 쉽게 만드는 것이 아니라 다르게 만들고 있습니다. 구현 세부사항보다 "무엇을 만들지"가 더 중요해졌습니다.
아직 완벽하지 않습니다. 복잡한 시스템을 처음부터 끝까지 AI에게 맡기기에는 이르고, 결과물을 검증할 능력이 필요합니다. 하지만 생산성 향상은 부정할 수 없습니다. 1인 개발자가 팀 수준의 결과물을 낼 수 있는 시대가 왔습니다.
