무슨 일이 일어났나
r/vibecoding 서브레딧에 “vibe coding이 끝내주게 느껴지다가 시니어 리뷰어를 만나면 무너진다”는 글이 올라왔어. 댓글이 길게 이어졌고, 같은 패턴이 반복돼서 트렌딩까지 진입했거든.
왜 이런 일이 생기나
LLM이 짠 코드가 첫 인상은 좋은데 깊이 들여다보면 패턴이 반복된다는 거야. 토론에서 자주 언급된 항목을 묶어보면:
- 보안 구멍: 입력 검증 누락, SQL/명령 인젝션 노출, 시크릿 하드코딩
- 에러 처리: try/catch만 두르고 실제 복구·로깅이 없는 빈 핸들러
- 테스트: 해피 패스만 통과하고 경계 조건은 검증 안 됨
- 추상화 누수: 함수 시그니처는 깔끔한데 내부에서 전역 상태나 사이드이펙트가 새어 나옴
- 불필요한 복잡도: 5줄로 끝날 일을 디자인 패턴 풀세트로 감쌈
이런 게 모이면 “동작은 하는데 운영 못 한다”가 되거든. AI가 짠 코드는 비슷한 학습 패턴에서 같은 실수를 반복하는 경향이 있어서, 시니어 리뷰어 눈에는 금방 보이는 거지.
어떤 의미인가
바이브코딩이 효율적인 건 맞지만, 리뷰 단계를 생략하면 기술 부채가 빠르게 쌓이는 구조라는 게 더 분명해졌어. 토론에서 정리된 위 5개 카테고리가 그대로 리뷰 체크리스트가 된다고 보면 돼. 한국 개발 조직에 시사하는 건 2개야. 첫째, AI 코딩을 쓸 때 시니어 리뷰 슬롯을 오히려 늘려야 한다는 거고. 둘째, 보안·에러 처리·테스트 같은 항목은 사람이 명시적으로 체크리스트로 잡아둬야 모델이 빈 부분을 알아서 채우지 않는다는 거지.
다음 수순
AI 코딩 에이전트에 코드 리뷰 단계를 강제로 끼워 넣거나, lint·보안 스캐너·테스트 커버리지 게이트를 PR 머지 조건에 묶어두면 가장 큰 위험은 줄어들어. 1인 개발이라도 Claude Code 같은 도구에 두 번째 리뷰 단계를 강제하면 비슷한 효과를 볼 수 있어.