바이브코딩이란? AI에게 코드를 맡길 때 사람이 해야 할 일
바이브코딩을 단순히 '말로 시키면 AI가 알아서 만드는 것'으로 받아들이지 않고, 사람이 요구사항과 확인 기준을 정한 뒤 AI가 만든 결과를 점검하는 작업 방식으로 이해합니다. 가상의 가계부 CSV 합계 도구를 예로 들어 입력·출력·하지 말 것·확인 방법을 한 쪽 메모로 정리합니다.
앞서 만든 가상 expenses.csv와 요구사항 메모를 사용해 첫 번째 작은 Python 도구를 만드는 흐름을 연습합니다. 요청문에 입력 예시·기대 출력·제약을 함께 넣고, 완성된 summarize.py를 Claude Code가 아닌 GPT 채팅의 Python 도구에서 실제 실행해 결과를 확인합니다.
이런 분께Claude Code 설치와 첫 읽기 연습을 마치고, 작은 파일 하나를 대상으로 첫 코드 생성을 시도하려는 초보 사용자
첫 실습의 목표는 기능이 많은 가계부 앱이 아니라 expenses.csv를 읽어 월별 amount 합계만 출력하는 summarize.py 한 파일입니다. 범위를 작게 잡으면 AI가 만든 결과가 맞는지 사람이 직접 확인하기 쉽습니다. 입력 파일은 UTF-8 CSV이고 열 이름은 date, category, amount입니다. date는 YYYY-MM-DD 형식, amount는 정수로 가정합니다.
| 항목 | 이번 실습에서 고정할 내용 | 확인 기준 |
|---|---|---|
| 입력 파일 | expenses.csv | 원본 파일을 수정하지 않음 |
| 입력 열 | date, category, amount | 다른 열을 임의로 요구하지 않음 |
| 출력 | 월별 amount 합계 | 2026-09 = 26600, 2026-10 = 9800 |
| 구현 범위 | summarize.py 한 파일 | 불필요한 설정 파일이나 패키지를 추가하지 않음 |
| 라이브러리 | Python 표준 라이브러리 | 외부 패키지 설치 없음 |
이번 단계에서 중요한 점은 '가계부를 만들어줘'처럼 넓은 요청을 하지 않는 것입니다. AI가 UI, 데이터베이스, 차트, 로그인 같은 기능을 임의로 확장할 여지를 줄이고, 한 번의 실행으로 정답을 대조할 수 있는 작업만 맡깁니다.
Claude Code에 작업을 요청할 때는 입력 파일의 구조와 정답을 함께 제공합니다. 기대 출력이 있으면 AI가 코드를 작성한 뒤 무엇을 맞춰야 하는지 명확해지고, 사용자는 결과를 눈으로 비교할 수 있습니다. 또한 '표준 라이브러리만 사용', '원본 CSV를 수정하지 않기', 'summarize.py만 작성'처럼 하지 말아야 할 범위도 함께 적습니다.
현재 폴더의 expenses.csv를 읽어 월별 amount 합계를 출력하는 summarize.py를 만들어줘.
입력:
- UTF-8 CSV
- 열 이름: date, category, amount
- date 형식: YYYY-MM-DD
- amount는 정수
기대 출력:
2026-09 = 26600
2026-10 = 9800
제약:
- Python 표준 라이브러리만 사용
- expenses.csv는 수정하지 않기
- 실행 명령은 python summarize.py expenses.csv
- 필요한 파일과 변경 내용을 먼저 설명한 뒤 summarize.py만 작성해줘.이 코드 블록은 Claude Code의 응답이 아니라 사용자가 입력할 요청문입니다. 요청문에는 이미 정답으로 확인할 값이 들어 있으므로, 이후 결과가 그럴듯해 보이는지만 보지 않고 두 숫자가 정확히 일치하는지 비교할 수 있습니다.
Claude Code는 필요한 파일을 읽고 파일 수정이나 명령 실행 전에 승인을 요청할 수 있습니다. 승인 화면이 나오면 바로 Yes를 누르기보다 어떤 파일을 읽었는지, 새로 만들 파일이 summarize.py 하나인지, expenses.csv를 건드리지 않는지 확인합니다. 처음 보는 명령을 실행하려 한다면 그 명령의 목적을 설명해 달라고 요청해도 됩니다.
수정하기 전에 확인할게.
1) 읽을 파일과 만들 파일을 각각 알려줘.
2) expenses.csv는 수정하지 않는지 확인해줘.
3) 외부 패키지를 설치하지 않는지 확인해줘.
4) 실행 후 기대 출력과 비교하는 방법을 한 줄로 알려줘.Claude Code의 실제 답변은 환경과 시점에 따라 달라질 수 있으므로 이 글에서는 특정 응답을 성공 사례처럼 만들지 않습니다. 확인할 대상은 응답 문체가 아니라 파일 범위와 명령 범위입니다.
아래 summarize.py는 이 글의 요구사항을 만족하는 검증용 완성 코드입니다. csv.DictReader로 각 행을 읽고 date 앞 7글자에서 YYYY-MM을 얻은 뒤 amount를 정수로 변환해 월별로 더합니다. 출력 순서를 고정하기 위해 월 키를 정렬합니다. 이 코드는 Claude Code에서 실제 생성된 응답을 복사한 것이 아니라, 글의 실습 결과를 재현하기 위해 작성하고 별도로 실행 확인한 코드입니다.
import csv
import sys
from collections import defaultdict
def summarize_monthly(path):
totals = defaultdict(int)
with open(path, "r", encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
for row in reader:
month = row["date"][:7]
amount = int(row["amount"])
totals[month] += amount
return totals
def main():
if len(sys.argv) != 2:
raise SystemExit("Usage: python summarize.py expenses.csv")
totals = summarize_monthly(sys.argv[1])
for month in sorted(totals):
print(f"{month} = {totals[month]}")
if __name__ == "__main__":
main()표준 라이브러리만 사용하므로 별도 패키지 설치는 필요하지 않습니다. 실행 명령은 아래와 같고, Windows 환경에서 python 대신 py가 설정되어 있다면 `py summarize.py expenses.csv`를 사용할 수 있습니다.
python summarize.py expenses.csvGPT 채팅의 Python 도구에서 위 코드와 가상 expenses.csv를 파일로 저장한 뒤 `python summarize.py expenses.csv`를 실제 실행했습니다. 표준 출력은 아래 두 줄과 정확히 일치했습니다. 이 검증은 Claude Code에서 수행한 것이 아닙니다.
2026-09 = 26600
2026-10 = 9800| 월 | 기대값 | 실행값 | 판정 |
|---|---|---|---|
| 2026-09 | 26600 | 26600 | 일치 |
| 2026-10 | 9800 | 9800 | 일치 |
이 단계에서는 두 줄이 맞았다는 사실만 확인합니다. 향후 다른 형식의 CSV, 비어 있는 값, 잘못된 숫자까지 모두 처리된다고 확대 해석하면 안 됩니다. 현재 테스트 데이터와 현재 요구사항에 대해서만 결과가 일치한 것입니다.
합계를 손으로도 한 번 확인할 수 있습니다. 9월은 12000 + 1450 + 8500 + 3200 + 1450 = 26600이고, 10월은 9800 한 건이므로 9800입니다. 이렇게 작은 예제에서는 프로그램 출력과 사람이 계산한 기준값이 같은지 교차 확인해 두면, 이후 기능을 확장했을 때 어디서 결과가 달라졌는지 추적하기 쉬워집니다.
첫 도구에서 가장 흔한 범위 확대는 '이왕 만든 김에 분류별 합계, 그래프, 자동 저장도 추가하자'는 식입니다. 하지만 이번 글의 완료 조건은 월별 합계 두 줄이 맞는 것입니다. 완료 조건을 충족했다면 현재 상태를 기준점으로 남기고 다음 기능은 별도 요청으로 나누는 편이 좋습니다.
다음 글에서는 매번 긴 제약을 다시 쓰지 않도록 프로젝트 규칙을 CLAUDE.md에 정리합니다. 그 파일도 강제 설정이 아니라 Claude Code가 세션 시작 시 읽는 프로젝트 맥락이므로, 짧고 구체적으로 유지하는 것이 핵심입니다.
GPT 채팅 Python 도구에서 Python 3으로 summarize.py와 가상 expenses.csv를 저장한 뒤 `python summarize.py expenses.csv` 실행 · Claude Code 실제 실행 없음
검증은 이 글의 6행 가상 CSV에 대해서만 수행했습니다. 빈 값, 잘못된 날짜, 숫자가 아닌 amount 등 예외 입력까지 검증한 결과는 아니며, Claude Code 자체의 생성 결과나 화면은 실제로 테스트하지 않았습니다.