바이브코딩이란? AI로 작은 프로그램을 만드는 방법

간단한 프로그램을 만들고 싶지만, 개발 환경을 준비하고 코드를 작성하는 과정에서 막히는 경우가 있다. AI 코딩 도구는 이 과정의 일부를 대신할 수 있다. 원하는 기능을 말로 설명하면 코드를 만들고, 실행 결과를 보며 다시 수정하는 방식이다.

흔히 바이브코딩이라고 부르는 접근이다. 다만 빠르게 화면을 만드는 것과 믿고 사용할 수 있는 프로그램을 만드는 것은 다르다. 작은 예시를 통해 진행 방법과 확인할 부분을 살펴보자.

바이브코딩의 의미

Andrej Karpathy의 2025년 2월 게시물에서 소개된 바이브코딩은 AI에게 구현을 맡기고, 코드를 세세하게 읽기보다 실행 결과를 보면서 수정하는 접근에 가깝다. 단순히 AI로 코드를 작성하는 모든 개발을 뜻하는 것은 아니다.

용어는 넓게 쓰이기도 하지만 구분은 필요하다. AI가 만든 코드를 읽고 설계·테스트·보안까지 검토한다면 AI 보조 개발이라고 표현하는 편이 더 정확하다. 이 글에서는 바이브코딩처럼 자연어로 작은 도구를 만들되, 실제 사용에 필요한 검증을 함께 적용하는 방법을 설명한다.

핵심은 요청을 한 번 보내고 끝내는 것이 아니다. 원하는 결과를 설명하고, 작은 기능부터 구현하고, 실행해 확인한 뒤 수정하는 과정을 반복한다.

시작할 도구

일반 채팅형 AI를 쓰면 생성된 코드를 파일에 저장하고 직접 실행한다. 프로젝트를 읽고 수정할 수 있는 코딩 에이전트를 쓰면 파일 편집과 실행 확인을 도구 안에서 진행할 수 있다. 도구마다 가능한 작업과 권한, 계정 조건은 다르다.

어떤 도구를 선택하든 새 프로젝트 폴더를 따로 만들고 연습용 데이터로 시작하는 편이 좋다. 회사 자료, 실제 고객정보, 운영 계정은 사용하지 않는다. 유료 도구나 API를 사용할 때는 과금 방식과 사용 한도도 먼저 확인한다.

예시: 지출 기록 도구

예시는 날짜, 항목, 금액을 입력하면 목록과 합계를 보여주는 작은 도구이다. 로그인·결제·외부 API는 붙이지 않는다. HTML, CSS, JavaScript로 브라우저에서 실행하고, 처음에는 새로고침하면 기록이 사라져도 되는 수준으로 시작한다.

입력 화면과 지출 목록, 요약 화면을 조립해 작은 도구를 만드는 과정을 표현한 삽화
입력·목록·요약을 나눠 구현하는 지출 기록 도구의 개념 삽화. 실제 실행 화면은 아니다.

처음부터 차트, 회원가입, 데이터베이스까지 요구하기보다 구현 범위를 짧게 정한다. 다음 요청문은 채팅형 AI나 코딩 에이전트에서 활용할 수 있다.

브라우저에서 실행하는 연습용 지출 기록 도구를 만들어줘.
HTML, CSS, JavaScript를 사용하고 파일은 index.html 하나로 시작해.
날짜, 항목, 금액을 입력하고 추가 버튼을 누르면 목록에 표시해줘.
금액은 원 단위의 양의 정수만 허용하고 전체 합계를 보여줘.
로그인, 외부 API, 외부 라이브러리, 서버 저장 기능은 넣지 마.
지금은 새로고침하면 기록이 없어져도 돼.
먼저 구현 계획을 짧게 설명하고, 구현 후 실행 방법과 확인할 항목을 알려줘.

채팅형 AI가 코드를 답변했다면 프로젝트 폴더에 index.html로 저장한다. 코딩 에이전트라면 실제 파일을 생성했는지 확인한다. 연습 파일은 브라우저로 열어 확인할 수 있다. 도구가 로컬 서버를 요구한다면 프로젝트 폴더에서, 자신의 컴퓨터에서만 접속할 수 있도록 실행한다.

예를 들어 Python 3가 설치되어 있다면 다음 명령으로 로컬 서버를 열 수 있다. macOS·Linux는 python3, Windows는 환경에 따라 py -3 또는 python을 사용한다.

python3 -m http.server 8000 --bind 127.0.0.1

브라우저에서 http://127.0.0.1:8000을 연다. 8000은 포트 번호이며, --bind 127.0.0.1은 외부에서 접속하지 못하도록 자신의 컴퓨터에만 연결한다. 종료는 터미널에서 Ctrl+C를 누른다. 폴더 내용이 제공되므로 연습 파일만 있는 폴더에서 실행하고, Python이 없다면 설치 전에 현재 환경에 맞는 대안을 AI에게 확인한다.

결과를 직접 확인

AI가 완료했다고 말해도 직접 입력해 봐야 한다. 임의의 날짜로 ‘점심 12,000원’과 ‘교통 3,000원’을 추가했을 때 두 항목과 15,000원 합계가 표시되는지 확인한다.

입력·동작예상 결과
12,000원과 3,000원 추가합계 15,000원
금액에 빈 값·음수·문자 입력추가 거부 및 안내 표시
금액에 소수 입력양의 정수만 허용한다는 안내 표시
목록이 비어 있음합계 0원
항목에 <b>테스트</b> 입력태그가 실행되지 않고 문자 그대로 표시

처음 정한 범위를 넘어선 기능이 추가되어 있지는 않은지도 살핀다. 불필요한 외부 통신이나 로그인 기능을 AI가 임의로 넣었다면 제거하도록 요청한다.

기능은 하나씩 추가

기본 입력과 합계가 정상적으로 동작하면 삭제 기능을 추가한다. 어떤 기능을 바꾸고 어떤 기능을 유지해야 하는지 같이 적는 것이 중요하다.

각 지출 항목에 삭제 버튼을 추가해줘.
삭제하면 해당 항목만 제거하고 합계를 다시 계산해.
마지막 항목을 삭제하면 합계는 0원이 되어야 해.
기존 입력 검증과 화면 구성은 유지해.
변경한 부분을 설명하고 추가·삭제·합계 계산을 확인해줘.

그다음에는 새로고침 후 기록을 유지하는 기능을 붙일 수 있다.

현재 지출 목록을 브라우저의 localStorage에 저장하고 시작할 때 불러와줘.
저장된 데이터가 손상됐거나 저장이 실패하면 오류를 숨기지 말고 안내해줘.
삭제한 항목은 새로고침 후에도 돌아오면 안 돼.
모든 항목을 삭제한 빈 목록도 저장해줘.
기존 추가·삭제·합계 기능이 유지되는지 확인해줘.

localStorage는 해당 브라우저의 사이트별 저장 공간이다. 다른 기기와 자동으로 동기화되지 않고, 브라우저 데이터를 지우면 기록도 없어질 수 있다. 같은 출처의 스크립트에서 읽을 수 있으므로 비밀번호·API 키나 민감정보를 보관하는 용도로 사용해서는 안 된다. 이 예시는 더미 데이터로 저장 동작을 연습하는 용도이다.

오류를 전달하는 방법

‘안 된다’고만 말하면 AI도 문제를 좁히기 어렵다. 수행한 동작, 기대한 결과, 실제 결과를 함께 전달한다. 오류 메시지나 화면 캡처가 있으면 비밀정보를 제거한 뒤 첨부한다.

지출 두 개를 추가한 뒤 하나를 삭제했어.
목록에서는 없어졌지만 합계는 그대로이고, 새로고침하면 삭제한 항목이 다시 나타나.
삭제 후 합계 계산과 localStorage 저장이 함께 갱신되는지 확인해줘.
원인을 설명하고 해당 부분만 수정해. 오류를 숨기거나 저장 기능을 제거하는 방식으로 해결하지 마.

대화가 길어져 요구사항을 놓치기 시작하면 현재 기능, 남은 문제, 변경하면 안 되는 조건을 짧게 다시 정리한다. 원인을 모른 채 전체 코드를 계속 교체하는 것보다 작은 수정의 결과를 확인하는 편이 낫다.

검증과 버전 관리

앱 화면을 돋보기로 살펴보고 오류와 테스트 결과를 확인하는 개념 삽화
화면의 정상 동작뿐 아니라 계산, 예외 입력, 저장 상태도 함께 확인한다.

Claude Code 공식 모범 사례는 도구가 실행할 수 있는 검증 기준을 제공하고, 맥락을 구체적으로 전달하는 방법을 안내한다. 이 예시에도 단순히 ‘잘 만들어줘’보다 계산 결과와 실패 조건을 명시하는 방식을 적용할 수 있다.

합계 계산과 금액 검증을 테스트 가능한 함수로 분리해줘.
12000과 3000의 합계가 15000인지, 빈 목록의 합계가 0인지 확인해.
빈 값, 음수, 소수, 문자는 거부되는지 테스트해줘.
테스트를 실제 실행했으면 실행 방법과 결과를 보여주고, 실행하지 못했으면 그 사실을 알려줘.
화면에서 추가·삭제·새로고침 후 복원도 별도로 확인할 항목으로 정리해줘.

AI가 테스트를 작성했다는 것과 실제로 실행해 통과했다는 것은 다르다. 테스트도 잘못된 기대값이나 빠진 조건이 있을 수 있다. 결과 근거를 확인하고, 중요한 계산은 사람이 예상값을 따로 정해 대조해야 한다.

정상 동작하는 단계마다 Git으로 변경 이력을 남기면 이전 상태와 비교하기 쉽다. Git은 커밋한 내용만 보존하므로 저장하지 않은 작업이나 별도로 삭제한 데이터까지 되살려 주지는 않는다. 커밋 전 변경 파일을 살피고 API 키·개인정보·불필요한 출력물이 포함되지 않았는지 확인한다.

실제 서비스의 경계

작은 시제품은 AI의 도움으로 빠르게 만들 수 있다. 그러나 로그인, 결제, 고객 데이터, 업무 의사결정이 들어가는 서비스는 화면 확인만으로 검증을 끝낼 수 없다. 인증·권한, 입력 처리, 데이터 보호, 오류 처리, 배포와 운영까지 검토해야 한다.

AI에게 파일 수정과 명령 실행을 맡길 때도 프로젝트 범위로 권한을 제한한다. 파일 삭제, 데이터베이스 변경, 운영 서버 접속, 유료 자원 생성은 내용을 확인한 뒤 진행해야 한다. 회사 환경에서는 승인된 AI 도구와 데이터 반출 정책을 따른다.

바이브코딩은 자연어로 아이디어를 구현해 보는 출발점이 될 수 있다. 처음에는 위험이 낮은 작은 도구로 반복 과정을 익히고, 계속 사용할 프로그램으로 발전시킬 때는 코드를 이해하고 검증하는 개발 방식으로 넘어가야 한다.

참고 자료

Andrej Karpathy: 바이브코딩 소개 게시물
Claude Code: Best practices
Claude Code: Common workflows

본문 요청문은 진행 방법을 보여주는 예시이며 완성된 앱의 실행·검증 결과를 제시한 것은 아니다. 도구의 기능과 이용 조건은 변경될 수 있으므로 사용 시 공식 안내를 확인해야 한다.