2024년 9월, 고등학생 때 클로드 웹으로 바카라 웹게임을 하나 만들었습니다. 지금도 Golden Casino라는 이름으로 만들고 있는 프로젝트의 첫 버전이에요. 올해 8월에 이걸 처음부터 다시 짰는데, 두 버전을 나란히 놓고 보니 2년 동안 제가 AI랑 코딩하는 방식이 얼마나 바뀌었는지 한눈에 보이더라고요.
"바이브코딩"이라는 말은 2025년 2월에 안드레이 카파시가 처음 썼어요. 저는 그 말이 나오기 전부터 클로드 웹에 코드를 붙여넣으면서 이렇게 만들고 있었죠. 그때랑 지금이 뭐가 다른지, 같은 프로젝트 두 버전으로 비교해봤습니다.

첫마디는 "이해해봐"였습니다
클로드 기록을 거슬러 올라가 보니 첫 대화가 남아 있었어요. 파이썬 FastAPI 서버 파일 하나랑 HTML 한 장을 붙여넣고, 제가 친 말은 "이해해봐" 한마디였습니다.

그 대화의 마지막 질문은 "근데 데이터 베이스는 어떤거 쓰는게 좋아?"였어요. 클로드는 처음엔 SQLite, 규모가 커지면 PostgreSQL을 권했습니다. 저는 그때 MongoDB를 골랐습니다.
코딩을 제대로 배운 적이 없었으니 구조라는 걸 몰랐어요. 클로드가 준 코드를 받아서 한 파일에 계속 붙였습니다. 그렇게 Node·Express·MongoDB로 옮겨 만든 첫 버전은 서버가 server.js 한 파일에 3,767줄, 사용자 화면 스크립트가 user.js 한 파일에 4,109줄입니다.
제가 AI의 메모리였죠
그때 제일 힘들었던 건 컨텍스트였어요. 몇 번 주고받으면 대화창이 차서 새 채팅을 열어야 했고, 새 채팅에서는 파일을 다시 통째로 붙여넣고 어디까지 고쳤는지 처음부터 설명했습니다. 뭘 바꿨고 뭐가 남았는지는 제 머릿속에만 있었고요.
기록으로 세어보니 이렇습니다.
- 바카라 관련 대화 15개에서 제가 보낸 메시지는 41번, 대화 하나에 평균 2.7번이었습니다. 뭐 하나 바꿀 때마다 새 채팅을 연 거죠.
- 그 15개 대화에 붙여넣은 코드가 약 20만 7천 자였습니다.
- 2024년 10월 12일에는 하루에 대화를 7개 열었습니다. 모바일 화면, 다크 테마, 관리자 화면, 오류 수정 같은 것들이었어요.
- 답이 길면 중간에 끊겨서 "이어서"를 쳤습니다. 다크 테마로 바꿔 달라고 한 대화는 답이 중간에 멈췄고, 다시 "나는 테일윈드 css 를 쓰고있어"라고 알려줘야 했어요.
라이브러리 버전도 문제였습니다. 받은 코드를 돌리면 useNewUrlParser is a deprecated option ... has no effect since Node.js Driver version 4.0.0 같은 경고가 떴고, 저는 그 경고를 또 붙여넣고 이게 뭐냐고 물었어요. 최신 버전은 제가 직접 찾아보고, 그 내용을 다시 대화에 넣어줘야 했습니다.
그래도 돌아가긴 했어요. 바카라 판이 돌고, 채팅이 되고, 순위표랑 관리자 화면도 있었습니다.
결과물은 이만큼 달라졌습니다
같은 바카라 화면부터 보면 맨 위 사진 그대로입니다. 2년 전엔 평면 카드가 깔리고 승패가 글자로 떴어요. 지금은 3D 테이블 위에서 카드가 슈에서 나와 깔리고, 구슬판이나 빅로드 같은 기록판과 통계가 양옆에 붙어 있습니다.
게임 하나만 비교해도 이 정도인데, 사이트 전체로 놓고 보면 차이가 더 큽니다.
| 2024년 | 지금 | |
|---|---|---|
| 게임 | 바카라 하나 | 21종 |
| 사람끼리 하는 게임 | 없음 | 섯다·홀덤·맞고·바둑이·7포커, 빈 자리엔 AI 봇 |
| 화면 | HTML·JavaScript, 평면 카드 | React, 딜러 게임 테이블은 three.js 3D |
| 폰 | 한 화면을 폰에 맞게 손본 정도 | 게임마다 폰 세로·가로 배치를 따로 |
| 처음 온 사람 | 가입하고 관리자 승인까지 받아야 입장 | 가입 없이 바로 체험 |
| 데이터베이스 | MongoDB | PostgreSQL |
| 테스트 | 없음 | 테스트 파일 140개 |
코드 모양도 완전히 달라졌습니다.
2024년
golden_casino_backend/
server.js 3,767줄
golden_casino_frontend/
user.js 4,109줄
admin.js 2,778줄
지금
apps/api 서버 (Express, Socket.IO)
apps/web 화면 (React, three.js)
packages/contracts 서버와 화면이 같이 쓰는 타입
packages/game-core 게임 규칙
테스트 파일 140개, 제일 큰 파일 2,226줄
올해 8월 24일에 다시 시작해서 두 달 동안 커밋이 330개 쌓였습니다.
채팅창을 안 열게 됐어요
2024년 12월에 Cursor를 쓰기 시작했고, 2025년 4월쯤부터 Claude Code, 올해 4월부터는 Codex를 씁니다. 클로드 웹 대화 수를 달별로 보면 그 변화가 그대로 보여요.
| 달 | 클로드 웹 대화 수 |
|---|---|
| 2024년 7월 | 89 |
| 2024년 8월 | 175 |
| 2024년 9월 | 209 |
| 2024년 10월 | 53 |
| 2024년 11월 | 124 |
| 2024년 12월 | 119 |
| 2025년 1월 | 65 |
| 2025년 2월부터 1년 동안 | 7 |
에이전트는 제가 붙여넣지 않아도 코드를 직접 읽습니다. 고친 다음에 테스트도 돌리고요. 그러니까 처음으로 리팩터링이 됐어요. 2년 전엔 한 파일에 다 들어 있어서 어디를 건드리면 뭐가 깨질지 몰랐거든요.
9월에는 바카라·블랙잭 테이블을 2D 캔버스에서 three.js 3D로 통째로 갈아엎었는데, 2년 전 구조였으면 엄두도 못 냈을 것 같아요. 10월 10일에는 에이전트 6~8개를 한꺼번에 돌려서 새 게임 다섯 개를 동시에 만들었고요. 세션이 끝날 때마다 다음에 또 밟을 함정을 메모 파일로 남기게 했더니 그 메모가 60개 넘게 쌓였습니다. 지금 작업 방식은 내가 바이브 코딩하는 방법에 따로 적어뒀어요.
늘어난 건 코딩 실력이 아니었어요
이렇게 써놓으면 2년 동안 코딩을 엄청 잘하게 된 것처럼 보이는데, 솔직히 코딩 실력은 별로 안 늘었습니다.
늘어난 건 뭘 만들 때 "이건 이런 기술로 이렇게 만들면 되겠다"가 먼저 보이는 감각이에요.
2년 전 첫 대화의 마지막 질문이 딱 그 반대 상태였죠. 데이터베이스를 뭘 써야 하는지 몰라서 물었고, 받은 답 중에 하나를 골랐습니다. 화면을 어떻게 나눌지도, 서버를 어떻게 쪼갤지도 몰랐으니 받은 코드를 그대로 이어 붙일 수밖에 없었고요.
지금 에이전트한테 하는 말은 이런 식입니다. 실제로 쳤던 말 그대로예요.
에볼루션처럼 베팅 존은 DOM, 테이블 안쪽만 three.js
3D 테이블을 처음 만들 때 한 말이에요. 카드가 깔리는 테이블만 3D로 그리고, 베팅 칸이랑 버튼은 평범한 웹 화면으로 두자는 거죠. 에볼루션 같은 라이브 카지노 화면이 그렇게 나뉘어 있거든요.
자동으로 채우지 말고 수동으로 채울 수 있게
섯다·홀덤에 AI 봇을 넣을 때 한 말입니다. 봇이 빈 자리를 알아서 채우는 대신, 앉은 사람이 원할 때 불러 앉히는 방식이에요. 봇이 상대 패를 엿보는 건 아예 빼기로 했고요. 봇도 사람이 보는 화면 정보만 받습니다.
봇 선택이 너무 빠르다, 시간도 중요하니 고도화
봇이 0.9~2.6초 만에 바로바로 쳤거든요. 그렇다고 고민 시간을 패 세기로 정하면 시간만 보고 봇 패를 읽을 수 있어서, 베팅 크기 같은 공개된 정보로만 정하게 했습니다.
비로그인 대상 데모 게임 체험, 로그인 바로 강제하지 말고
2년 전엔 가입하고 관리자 승인까지 받아야 들어올 수 있었어요. 지금은 첫 화면에서 테이블을 누르면 가입 없이 바로 들어가집니다.
코드는 에이전트가 씁니다. 대신 뭘 어떤 구조로 만들지, 어디까지 만들지는 제가 정해요. 2년 전엔 그걸 몰라서 "이해해봐"라고 맡겼다면, 지금은 그걸 정하는 게 제 일이 됐어요.
안 바뀐 것도 있습니다
에이전트가 "다 됐습니다"라고 하는 건 아직도 그대로 못 믿어요.
화면 겹침을 검사하는 도구가 "문제 없음"이라고 했는데, 스크린샷을 직접 열어 보니 섯다 카드 66장이 전부 빈칸이었던 적이 있습니다. 카드 그림 주소가 틀려서 그림이 안 떴는데, 칸 크기는 그대로라 검사를 통과했던 거예요. AI 봇을 만들 때도 단위 테스트 28개가 다 통과했는데, 실제 방에 봇을 붙여서 돌리니까 버그가 4개 나왔고요.
2년 전에는 제가 직접 돌려보는 게 확인의 전부였어요. 지금은 확인하는 방법부터 만들게 하고, 그 결과도 제 눈으로 한 번 더 봅니다. 확인하는 사람이 저라는 건 그대로죠.
2년 전 그 대화방은 아직 남아 있습니다. "근데 데이터 베이스는 어떤거 쓰는게 좋아?"에서 멈춘 채로요. 지금 Golden Casino는 PostgreSQL로 돌아갑니다.
