📝 한줄 요약
바이브코딩 후 받은 개발자 리팩토링 보고서를 Claude Code와 함께 학습하고, 팀원용 학습 가이드까지 만든 과정
※ 12/28 연말 주말에 진행된 🔥 2025 연말맞이 바이브코딩 해커톤(이라 쓰고 모각이라 읽는다)에서 참여하여 만들어낸 결과물 입니다!
🎯 이런 분들께 도움돼요
바이브코딩 후 개발자 리뷰를 받았는데, 피드백을 어떻게 이해하고 학습해야 할지 고민인 비개발자
비개발자 바이브코 더와 협업하면서, 효과적으로 피드백을 전달하고 싶은 개발자
바이브코더 + 개발자 협업 프로세스를 만들고 싶은 팀/조직
😫 문제 상황 (Before)
바이브코딩으로 AI스터디 LMS를 만들었어요. 20기 멤버들이 실제로 사용할 예정인데, 비개발자라서 트래픽, API rate limit, 동시접속 같은 부분을 고려하지 못했죠.
내부 개발자분께 코드 리뷰를 요청했고, 리팩토링 보고서를 받았어요. 그런데...
막막했던 점:
보고서에 적힌 용어(DRY, ESLint, CI/CD, JWT 등)가 무슨 뜻인지 몰랐어요
"이렇게 고쳐야 해요"라고 했는데, 왜 그렇게 해야 하는지 이해가 안 됐어요
항목들이 병렬적으로 나열되어 있어서 연속성이 없고, 각각 새로운 개념이라 어디서부터 시작해야 할지 모르겠었어요
방대한 양을 마주하니 그냥 막막했어요
하지만 포기할 수 없었던 이유:
내가 짠 코드인데, 뭐가 바뀌었는지는 알아야지
앞으로 바이브코딩할 때 처음부터 구조 설계, 보안, rate limit 같은 것도 고려하고 싶었어요
Claude Code에게 "이런 관점으로 리뷰해줘"라고 요청하려면 내가 먼저 개념을 알아야 했어요
🛠️ 사용한 도구
도구명: Claude Code (CLI)
모델: Claude Opus 4.5
특이사항: 이 프로젝트가 처음 Claude Code로 바이브코딩을 시작한 곳이라 자연스럽게 계속 사용
🤖 AI와 협업한 과정
1. Git 동기화부터 막혔다
상황: 개발자가 GitHub에서 PR로 수정 후 머지했는데, 내 로컬 폴더는 이전 버전. 새로 클론해야 하나? 기존 폴더에서 어떻게 해야 하는지 몰랐어요.
이렇게 요청했어요:
지금 레포지토리에 푸시된 내역과 지금 내 로컬 내역을 비교해줘
결과: Claude Code가 git fetch + git status로 23개 커밋 차이를 확인해주고, git pull origin main으로 동기화 안내. 로컬/원격 저장소 개념도 자연스럽게 이해하게 됐어요.
느낀 점: 뭘 해야 하는지 정확히 몰라도 "상황"만 설명하면 Claude Code가 알아서 파악해줬어요.
2. 학습 방식을 제안받다
상황: 리팩토링 보고서를 공부하고 싶은데, 9개 섹션이 병렬로 나열되어 있어서 어디서부터 시작할지 막막했어요.
이렇게 요청했어요:
@docs/개발자-리팩토링-보고서.md 를 보고 섹션 하나씩 꼼꼼하게 살펴보면서 공부하면서 이해하고 싶어. 나를 어떻게 이끌어줄래?
Claude Code의 제안:
순서대로 - 1번 인증 시스템부터 차근차근
쉬운 것부터 - 4번 프로젝트 구조부터 자신감 쌓기
가장 궁금한 것 - 특별히 관심 있는 주제 선택
내 선택: "쉬운 것부터!"
결과: Claude Code가 난이도순으로 목차를 재배치해줬어요.
⭐ 쉬움: 프로젝트 구조, 코드 품질, 버그 수정, ESLint
⭐⭐ 중간: CI/CD, 테스트, 캐싱, 보안
⭐⭐⭐ 어려움: 인증 시스템
느낀 점: 내가 "공부하고 싶다"고 했더니, 어떤 방식으로 할지 먼저 물어봐줬어요. 목적을 이해하고 최적의 가이드를 제안해준 느낌.
3. 이렇게 공부했어요
상황: 각 섹션을 설명해줄 때 어려운 개념을 비유로 풀어주고, 실제 코드 예시도 보여줬어요.
배운 개념들 (비유 + 핵심):
프로젝트 구조 - "옷장 정리"
비유: 양말, 바지, 셔츠를 한 칸에 다 넣으면 찾기 힘듦 → 칸별로 정리
핵심:
components/안에auth/,layout/,ui/폴더로 역할별 분류배럴 파일(index.ts): 폴더 대표 전화번호처럼,
import { Header, Footer } from '@/components/layout'한 줄로 여러 파일 가져오기
DRY 원칙 - "산탄총 수술 방지"
비유: 집에 시계 10개 있으면 시간 바꿀 때 10개 다 바꿔야 함. 하나 빠뜨리면 시계마다 시간이 다름
핵심: 같은 코드가 5군데 있으면 버그 수정할 때 5군데 다 고쳐야 해서 위험
해결: 공통 로직을
normalizePhone()같은 유틸리티 함수로 추출 → 한 곳만 수정하면 끝
CI/CD - "자동 검사 로봇"
비유: 수동 배포는 "테스트 귀찮으면 스킵, 깜빡하면 스킵" → 실수 가능. CI/CD는 절대 안 까먹는 로봇
핵심: GitHub에 push하면 자동으로 lint → test → build 순서로 검사
하나라도 실패하면 빨간불 → 머지 불가 (품질 게이트 역할)
캐싱 - "카페 미리 만들어두기"
비유: 아메리카노 주문할 때마다 원두 갈면 3분, 미리 보온병에 저장해두면 10초
핵심: 자주 쓰는 데이터를 미리 저장해두고 빠르게 반환
TTL(Time To Live): 5분 후 캐시 만료 → 새 데이터로 갱신 (공지사항 업데이트 반영)
클라이언트 캐싱(내 브라우저) vs 서버 캐싱(모든 사용자 공유) 구분
느낀 점: 비유로 "왜 이렇게 하는지" 이해하고, 실제 코드 예시로 "어떻게 적용하는지" 감을 잡았어요. 다음에 바이브코딩할 때 "폴더 구조 정리해줘", "중복 코드 유틸리티로 빼줘" 같은 요청을 할 수 있게 됐어요.
4. 퀴즈로 이해도 체크
상황: 섹션마다 이해도 체크 퀴즈를 내줬는데, 처음엔 문제가 있었어요.
막혔던 부분:
방금 설명한 내용과 무관한 퀴즈가 나옴
개념보다 코드 레벨 퀴즈 (특정 함수 실행 결과값 등)
주관식이라 개념도 막 이해한 상태에서 내 언어로 답하기 어려움
이렇게 요청했어요:
앞으로 이해도 체크는 개념 이해에 맞게 해주고 5지선다로 해
결과: 이후부터 개념 중심 5지선다 퀴즈로 바뀌었어요. 선택지 중에서 고르니까 훨씬 수월했어요.
느낀 점: AI가 완벽하지 않아도, 피드백 주면 바로 개선돼요. "이게 안 맞아"라고 말하는 게 중요해요.
5. 아이디어는 기록해두고 학습 계속
상황: 학습 중에 "이거 실제로 적용해보고 싶다" 싶은 아이디어가 떠올랐어요.
이렇게 요청했어요:
잘 기록만 해둬. 학습을 일단 진행하자.
결과: Claude Code가 plans/비개발자용-CI-자동수정-아이디어.md