Life EXP 개발기 - Claude Code로 하루 만에 MVP 완성
Claude Code CLI와의 첫 만남
Claude Code는 터미널에서 동작하는 AI 코딩 에이전트다. 프로젝트 폴더에서 실행하면 코드베이스를 읽고, 지시에 따라 파일을 생성/수정한다.
처음 써봤을 때 솔직히 반신반의했다. AI가 코드를 짜준다는 건 알고 있었지만, "기획서 읽고 프로젝트 구조부터 만들어줘"가 될 거라곤 생각 못 했다. 보통 AI 코딩 도구는 함수 하나, 컴포넌트 하나 수준이었으니까.
나는 이렇게 지시했다:
기획서(proposals/life-exp.md)를 읽고 Next.js 14 App Router로 구현해줘.
- 50개 문항 O/X 체크
- 결과 페이지에서 LiteLLM API 호출해서 평가 생성
- PostgreSQL에 응답 저장
- Tailwind CSS로 어두운 테마
4시간 후...
동작하는 MVP가 나왔다. 물론 완벽하진 않았다. LLM 프롬프트가 너무 길어서 응답이 느렸고, 결과 페이지 로딩 UX가 영 아니었다.
하지만 핵심 기능은 다 됐다. 문항 체크, 결과 계산, LLM 평가 생성, DB 저장. 예전 같았으면 일주일은 걸렸을 작업이다.
가장 놀라웠던 건 DB 스키마 설계였다. 나는 "응답 저장해줘"라고만 했는데, Claude Code가 알아서 사용자 세션 테이블, 응답 기록 테이블, 결과 캐시 테이블까지 만들었다. 심지어 인덱스도 적절했다. 이전에 직접 했으면 ERD 그리고, 마이그레이션 파일 만들고, 테스트하는 데만 반나절은 걸렸을 것이다.
내가 한 일 vs AI가 한 일
| 작업 | 담당 |
|---|---|
| 기획 방향 설정 | 나 |
| 문항 50개 작성 | Claude + 나 |
| Next.js 프로젝트 구조 | Claude Code |
| API Routes 구현 | Claude Code |
| DB 스키마 설계 | Claude Code |
| UI 컴포넌트 | Claude Code |
| LLM 프롬프트 튜닝 | 나 |
| 버그 수정 | Claude Code |
| 배포 설정 | 나 (PM2, Cloudflare) |
솔직히 코드를 직접 작성한 건 거의 없다. 대신 "이거 왜 안 돼?", "이 부분 수정해줘" 같은 지시를 계속 내렸다.
이게 요즘 개발의 현실이다. 코드를 "작성"하는 건 AI가 하고, 인간은 "방향"을 정한다. 무엇을 만들지, 왜 만드는지, 사용자 경험이 어때야 하는지. 이 판단은 아직 인간의 영역이다.
"지시"의 기술
Claude Code에게 지시하는 것도 나름의 기술이 필요했다. 처음엔 너무 구체적으로 말했다.
(X) "src/app/api/submit/route.ts를 만들고, POST 핸들러에서
body를 파싱해서 PostgreSQL에 INSERT해줘. 테이블명은 responses고..."
이러면 내가 설계하는 거나 마찬가지다. 오히려 추상적으로 말하는 게 나았다.
(O) "사용자가 50개 문항에 답하면 결과를 서버에 저장해야 해.
나중에 통계 분석도 할 거니까 구조를 잘 잡아줘."
이렇게 하면 Claude Code가 알아서 좋은 구조를 설계한다. 내가 생각 못한 부분(세션 관리, 중복 제출 방지 등)까지 챙겨준다.
LLM 평가 품질 올리기
가장 공들인 건 프롬프트 엔지니어링이었다. 처음엔 결과가 너무 뻔했다.
(X) "당신은 다양한 경험을 가지고 계시네요. 대단합니다!"
재미없다. 공유하고 싶은 멘트가 아니다. 프롬프트를 계속 다듬었다.
(O) "창업하고 파산하고 다시 창업... 도전정신은 인정하는데 학습능력은 의문이에요"
이제 좀 공유하고 싶어졌다.
프롬프트 튜닝은 코딩보다 시간이 더 걸렸다. 같은 입력에 대해 수십 번 결과를 생성하고, "이건 재밌다", "이건 너무 독하다", "이건 밋밋하다"를 반복 평가했다. 사실상 A/B 테스트를 수작업으로 한 셈이다.
로컬 LLM의 한계와 타협
처음엔 QwQ-32B를 썼다. 품질은 좋은데 응답이 느렸다. 사용자가 결과 페이지에서 10초 이상 기다려야 했다.
Qwen2.5-1.5B로 바꾸니 빨라졌지만 품질이 떨어졌다. 결국 둘 다 쓰기로 했다. 빠른 로딩은 1.5B, 상세 분석은 32B.
사용자 경험을 위해 스트리밍을 도입했다. 결과 멘트가 한 글자씩 타이핑되듯 나타난다. ChatGPT에서 익숙해진 UX다. 실제로는 LLM 응답이 토큰 단위로 오는 걸 그대로 보여주는 것뿐인데, 사용자는 "AI가 실시간으로 나를 분석하고 있다"고 느낀다. UX 마법이다.
로딩 시간 동안 "AI가 당신의 인생을 분석 중..." 메시지와 함께 응답한 문항들을 하나씩 리플레이해주는 애니메이션도 넣었다. 대기 시간을 "콘텐츠 소비 시간"으로 바꾸는 트릭이다.
개발 과정에서 배운 것들
- 기획서 품질이 곧 코드 품질: Claude Code에게 주는 기획서가 명확할수록 결과물이 좋다
- 작은 단위로 지시: "전체 다 만들어줘"보다 "이 기능 먼저"가 낫다
- 버그 리포트도 기술: "안 돼"보다 "이 입력에서 이런 에러가 남"이 100배 효과적
- 코드 리뷰는 인간의 일: AI가 만든 코드도 반드시 읽어봐야 한다. 가끔 엉뚱한 라이브러리를 갖다 쓰거나, 보안 구멍이 있다.
런칭
12월 20일, lifeexp.craftbay.io로 런칭했다. 아직 바이럴은 안 됐지만, 일단 돌아가는 서비스가 생겼다. 기획부터 런칭까지 일주일도 안 걸렸다.
20년 전 혈액형 테스트는 코딩만 2주 걸렸다. 기획, 디자인, 서버 세팅까지 하면 한 달. 지금은 AI와 함께 며칠이면 된다. 개발의 병목이 "구현"에서 "기획과 판단"으로 완전히 옮겨갔다.
다음은 Zodiac Guesser 차례다. 20년 전 혈액형 테스트의 직계 후손.