← 返回列表

AI 시리즈 면접 14: vibe coding과 spec coding의 차이점?

이는 대부분의 프로그래머가 직면하는 문제입니다. Vibe CodingSpec Coding은 현재 대규모 언어 모델(LLM)을 활용한 프로그래밍에서 두 가지 상이한 작업 패러다임입니다. 핵심 차이점은 다음과 같습니다: AI에게 주는 '입력'이 모호한 감각인지, 정확한 명세인지입니다.


一、요리를 예로 들어 vibe coding과 spec coding의 차이를 간단히 설명

  • Vibe Coding = 친구에게 "매운 음식 먹고 싶어"라고 말하면, 친구가 감으로 요리해서 내놓고, 한 입 먹고 "더 짜게"라고 하면 소금을 더 넣습니다. 맛은 놀라울 수 있지만, 다른 친구가 만들면 완전히 다릅니다.
  • Spec Coding = 레시피를 작성합니다: "피현 두반장 20g, 소고기 슬라이스 150g, 샐러리 50g, 센 불에 2분간 볶고, 불 끄기 전에 설탕 3g 추가". 다른 요리사가 레시피대로 만들면 맛이 거의 일치합니다.

二、두 가지의 정의

차원 Vibe Coding Spec Coding
별칭 감각 기반 프로그래밍, 프롬프트 즉흥 명세 기반 프로그래밍, 문서 우선
입력 형태 "예쁜 로그인 페이지 만들어 줘, 첨단 느낌나게" "로그인 페이지는 이메일/비밀번호 입력 필드, '로그인 상태 유지' 체크박스, 제출 버튼 포함; 프론트엔드는 React + Tailwind 사용; 폼 검증 규칙: 이메일 형식, 비밀번호 길이 ≥8; 실패 시 빨간색 알림 표시..."
AI 사용 방식 대화형, 반복형: 대략적인 방향 제시 → 출력 확인 → 미세 조정 엔지니어링 방식: 상세 PRD/기술 명세 먼저 작성 → AI가 명세 기반으로 코드 생성
인간 참여도 낮음: AI의 창의성에 의존, 사람은 '느낌이 맞는지'만 확인 높음: 사람이 먼저 설계/아키텍처를 완료하고, AI는 주로 실행
일반적인 시나리오 빠른 프로토타입, 개인 도구, UI 탐색, 창의적 코딩 프로덕션 시스템, 팀 협업, 유지보수/테스트 가능한 코드 필요

三、두 작업 흐름 비교

Vibe Coding 흐름

  1. 모호한 아이디어: "크롤러를 만들어서 지식인(知乎) 인기 순위를 가져오고 싶어."
  2. 첫 번째 프롬프트 작성: AI가 직접 코드를 생성하도록 함.
  3. 실행 → 오류 발생 → 오류 메시지를 다시 붙여넣기 → AI 수정.
  4. UI가 별로임: "그 버튼을 더 둥글게 만들고, 배경을 그라데이션 블루로 바꿔" → AI 수정.
  5. 기능 부족: "CSV로 저장하는 기능 추가해" → AI 추가.
  6. 3-5단계를 반복하여 '느낌이 적당할 때까지'.

Spec Coding 흐름

  1. 명세 문서 작성: 입력/출력, 데이터 구조, 오류 처리, 성능 요구 사항, 비기능적 요구 사항(예: 로깅, 속도 제한) 명확히.
  2. 명세를 작업으로 분할: 예: 작업1: fetch_hot_topics() 함수 구현, 명세의 API 서명 준수.
  3. 작업별로 AI가 구현하도록 함: 프롬프트에 함수 서명, 주석, 예상 테스트 케이스 포함.
  4. 인간 검토 및 검증: 명세 준수 확인, 단위 테스트 실행.
  5. 통합 및 회귀 테스트.

四、장단점 비교

특성 Vibe Coding Spec Coding
시작 속도 매우 빠름, 몇 분 안에 프로토타입 느림, 문서 작성 및 작업 분할 필요
코드 품질 낮음(중복, 불일치, 숨은 버그 가능) 높음(가독성, 테스트 용이, 아키텍처 준수)
유지보수성 나쁨, 후임자가 '왜 이렇게 작성했는지' 이해 어려움 좋음, 명세가 곧 문서
LLM 의존도 매우 높음, 모델을 바꾸면 완전히 다른 출력 가능 중간, 명세만 명확하면 다른 모델도 유사한 구조 생성 가능
디버깅 난이도 어려움, 코드의 논리 출처를 알 수 없음 쉬움, 명세에 따라 항목별 검사
팀 협업 적합성 거의 불가능 가능(명세가 의사소통 계약 역할)
출력 결정성 낮음, 대화마다 결과가 달라질 수 있음 높음, 동일 명세로 안정적 출력

五、실제 사용 제안

"실무에서 vibe coding과 spec coding은 둘 중 하나를 선택하는 것이 아니라 혼합하여 사용하며, 적절한 상황에 맞는 방식을 선택합니다:
- 탐색 단계(기술 스택이나 UI 스타일이 확정되지 않았을 때)에는 Vibe Coding을 사용하여 다양한 방안을 빠르게 검증합니다. 예를 들어 'Tailwind로 카드 컴포넌트를 만들어서 어떤지 보자'.
- 방안이 확정되면 즉시 Spec Coding으로 전환합니다: 성공한 프로토타입을 역으로 정리하여 명확한 명세(입출력, 경계 조건, 오류 처리)를 만들고, AI나 사람이 엄격하게 명세에 따라 프로덕션 코드를 다시 작성하도록 합니다.
순수 Vibe 모드는 일회성 스크립트나 내부 도구에만 적합합니다. 장기적으로 유지보수하고 여러 사람이 사용하는 시스템의 경우, Spec Coding이 필수 요구 사항입니다."

评论

暂无已展示的评论。

发表评论(匿名)