AI 코딩 그렇게 하는 거 아닌데 - 켄트 백 (40년차)
ORIGINAL SOURCE ↗YouTube에서 보기 | 영상 길이: 5분 3초
요약
켄트 백이 누구냐
TDD(테스트 주도 개발)와 XP(익스트림 프로그래밍)를 만든 40년 경력의 전설적인 개발자. 그런 그도 Claude를 이용해 활발히 개발하고 있다. 그런데 그런 대가조차도 AI 코딩을 잘못 사용하면 문제가 생긴다는 것을 직접 경험하고 해결책을 제시했다.
바이브 코딩의 문제 — “씨앗을 먹어버리는 것”
[00:17] 켄트 백도 처음엔 AI에게 마구잡이로 코딩을 시키는 바이브 코딩을 했다. 그랬더니 코드가 점점 엉켜가고 엉망이 됐다고 한다.
이를 그는 “씨앗을 먹어버리는 것” 에 비유했다. 농부가 다음 수확을 위해 씨앗은 남겨둬야 하는데, 배가 고프다고 씨앗까지 먹어버리면 가을에 수확할 게 없어진다. AI가 짜는 코드는 “일단 돌아가기만 하면 된다”는 마인드로 구현되기 때문에, 급하게 기능을 쌓다 보면 확장성이 엉망이 되고 결국 더 이상 기능을 추가하지 못하는 단계까지 가버린다는 것이다.
AI가 망조 들 때 나타나는 신호 3가지
[01:01]
- 반복을 한다 — 같은 코드나 시도를 계속 반복함
- 요청하지 않은 기능을 구현한다 — 스펙에 없는 것을 임의로 추가함
- 테스트를 삭제하거나 비활성화한다 — 개발자의 눈을 가려 문제를 숨기려는 행동
이런 신호가 보이면 AI가 한계에 다다랐다는 뜻이다.
해결책 — 아규먼티드 코딩 (Augmented Coding)
[00:46] 켄트 백은 아규먼티드 코딩(Augmented Coding) 이라는 새로운 개념을 제안한다. “작동하는 깔끔한 코드”를 목표로 하며, 코드 품질·복잡도·테스트 커버리지를 중요하게 여기면서 개발자가 주도권을 갖고 AI를 도구로 활용하는 방식이다.
핵심은 자신이 직접 만든 TDD 사이클(Red → Green → Refactor) 을 AI와 함께 엄격하게 따르는 것이다:
- Red: 먼저 실패하는 테스트 코드를 작성
- Green: 그 테스트를 통과하기 위한 최소한의 코드만 작성
- Refactor: 코드를 정리하고 개선
이 방식의 장점:
- AI에게 시키고 싶은 스펙을 정확하게 정의할 수 있다
- AI가 작성하는 코드의 양을 최소한으로 억제할 수 있다
- 추후 개선 가능한 형태로 코드를 유지할 수 있다
실습 — 쿠폰 할인 시스템으로 시연
[01:52] 쿠폰 할인 시스템을 예제로 실제로 시연한다.
CLAUDE.md 활용: 켄트 백이 직접 만들어 공개한 CLAUDE.md 파일을 그대로 복사해서 프로젝트에 붙여넣는다. 이걸 기반으로 Claude가 8개의 커스텀 커맨드를 자동으로 생성한다:
| 커맨드 | 역할 |
|---|---|
go | 전체 TDD 사이클(Red→Green→Refactor) 자동 실행 |
red | 실패하는 테스트 작성 단계만 실행 |
green | 테스트 통과 코드 작성 단계만 실행 |
refactor | 리팩토링 단계만 실행 |
tidy | 구조적 변경만 수행 |
check | 테스트 검증 |
commit | TDD 커밋 규칙에 따라 커밋 |
PLAN.md 생성: PRD(제품 요구사항 문서)를 기반으로 TDD 원칙에 따른 PLAN.md를 만든다. 어떤 테스트들이 필요한지 미리 구성해둔다.
실제 흐름 [03:04]:
go명령어 입력- PLAN.md의 첫 번째 테스트 항목을 “진행 중”으로 표시
- 가장 간단한 실패하는 테스트 코드 작성 → 실행하면 새빨갛게 실패(Red)
- 실패한 테스트를 통과시키기 위해
FixedAmountDiscountCoupon클래스와 필요한 함수 정의(Green) - 리팩토링 및 검증(Refactor)
- PLAN.md의 해당 항목이 ✅ 완료 체크로 변경
- 다음 테스트 항목으로 넘어가 반복
결론 — 미래의 씨앗을 지켜라
[04:01] 이 방식이 가져다주는 것들:
- 테스트 코드 = 가드레일: AI가 잘못 개발하면 테스트가 통과되지 않으므로 개발자가 즉시 파악할 수 있다
- 스펙 명확화: 테스트를 먼저 쓰면서 무엇을 만들어야 하는지가 명확해진다
- 품질 향상 + 구현 시간 단축 동시에 달성 가능
켄트 백의 말: “기능만 무작정 만드는 게 아니라, 테스트하고 기능을 추가하고 리팩토링하는 과정을 통해 계속해서 좋은 코드를 생성해낼 수 있다.” 이게 바로 미래의 씨앗을 지키는 방법이다.
단, 100% 좋은 코드를 보장하진 않는다. 중간중간 개발자가 직접 들어가서 코드가 올바르게 작성되고 있는지 설계하고 판단하는 역할은 여전히 인간의 몫이다.
키워드
TDD, 켄트백, AI코딩, 바이브코딩, 아규먼티드코딩, 씨앗비유, 클린코드, 리팩토링, CLAUDE.md, Red-Green-Refactor