개요

15년차 CTO 경험에서 AI 시대 코드 리뷰 담론을 정-반-합으로 정리한 에세이. AI가 코드 생산량을 폭증시켰지만 리뷰 역량은 그대로 → 병목이 더 커짐. 결론: 코드 리뷰 → 의도 리뷰(Intent Review)로 전환, 신뢰는 5겹 레이어로 쌓고, AI 네이티브 엔지니어는 이전 시대 PM 역할을 스스로 해야 한다. 핵심 질문: “당신은 당신의 코드에 책임을 질 수 있는가?”

  • 출처: flowkater.io
  • 저자: 15년차 CTO
  • 방법론: 헤겔 변증법 (정-반-합)

문제 진단

이전부터 늘 문제:
  ✗ 시간 부족
  ✗ 사람 부족
  ✗ 프로세스 부족

AI 시대에 더 악화:
  AI 코드 생산량 폭증
  + 리뷰 역량은 그대로
  = 병목 폭증 ⚠️

→ 관련: 코드베이스 드래그 (Codebase Drag) (생산은 늘었지만 검증은 그대로)


정 (正) — 인간 리뷰 필수론

Simon Willison

“검토하지 않은 코드를 협업자에게 떠넘기지 마라”

→ AI가 만들었어도 PR 올리는 사람이 책임

Kent Beck

“생성 비용이 0에 가까워질수록, 가치는 생성이 아니라 검증으로 이동한다”

과거: 코드 작성이 핵심 가치
미래: 검증·신뢰 부여가 핵심 가치

Addy Osmani

“미해결 문제는 생성이 아니라 검증”

→ AI가 만들 줄 ❌, 누가 믿어도 될지 ✅

핵심 논리

AI가 아무리 잘 만들어도
  ↓
책임은 사람에게 있음
  ↓
책임지려면 검증해야 함
  ↓
검증하려면 리뷰해야 함

→ 인간 리뷰는 영원히 필수

반 (反) — 사람 리뷰 시대 종료론

Bryan Finster — 나이퀴스트-섀넌 정리

신호 처리 정리 적용:
  생산 주파수 ↑↑↑
  + 피드백 주파수 그대로
  = 체계적으로 놓침 ⚠️

→ 인간 리뷰는 수학적으로 따라잡을 수 없음

SmartBear 데이터

경험적 결함 감지율:
  400줄 미만: 정상 감지
  400줄 초과: 급락 ↓↓↓

AI 한 번 호출:
  600줄+ 생성

→ 인간 리뷰 능력 자체가 한계 초과

StrongDM “소프트웨어 팩토리”

완전히 다른 방식:
  ✗ 인간이 코드 안 쓰고 안 읽음
  ✓ 의도(Intent) 정의
  ✓ 시나리오 큐레이션

→ 코드는 부산물, 의도와 시나리오가 진실

Stanford CodeX

"에이전트가 만들고 테스트하면,
 누가 믿을 수 있는가?"

→ 자기 검증의 신뢰성 문제

Salesforce Prizm

diff 중심 리뷰 모델 자체가 AI 시대에 작동 안 함
  ↓
"무엇이 바뀌었나?"보다
"왜 그렇게 바꿨나?"가 중요
  ↓
의도 재구성으로 전환

합 (合) — 무엇을 리뷰해야 하는가

latent.space의 패러다임 전환

이전: 코드 리뷰 (Code Review)
미래: 의도 리뷰 (Intent Review) ⭐

스펙 = 진실의 원천 (source of truth)
코드 = 산출물 (artifact)

신뢰의 5겹 레이어 (스위스 치즈 모델)

하나의 검증으로는 부족 → 여러 겹으로 쌓기

Layer 1: 의도 (Intent) — 명확한 스펙 작성
Layer 2: 자동 검증 (Tests) — 시나리오 기반
Layer 3: 정적 분석 (Linter, Type Check)
Layer 4: AI 검증 (Qodo 같은 전문가 에이전트)
Layer 5: 인간 검증 (블로킹은 부족 지식 + 규제 경로만)

→ 한 겹이 뚫려도 다른 겹이 막음

Qodo 패턴

원칙내용
컨텍스트 우선변경 자체가 아니라 컨텍스트로 판단
심각도 기반모든 이슈 동등 ❌, 우선순위 ✅
전문가 에이전트보안·성능·접근성 등 도메인별

→ 관련: CodeRabbit (AI 코드 리뷰 도구)

Bryan Finster — 인간 블로킹은 두 가지뿐

인간이 반드시 리뷰해야 하는 경우:

1. 부족 지식 (Domain Knowledge Gap)
   → AI가 모르는 도메인 맥락이 필요할 때

2. 규제 경로 (Compliance Path)
   → 법적·규제적 책임이 명시된 영역

그 외 모든 것:
  → AI 자동 검증으로 충분

저자의 결론

”AI 코드를 직접 리뷰하지 않는다”

저자 본인의 전환:

이전: 모든 PR 코드 리뷰
지금: AI가 코드 생성·1차 검증
        ↓
      저자는 QA 역할
        ↓
      "이게 의도대로 작동하는가?"만 확인

→ 코드 리뷰어 → QA 시나리오 검증자

AI 네이티브 엔지니어 = 이전 시대 PM 역할

과거 분업:
  PM: 의도·스펙 정의
  엔지니어: 코드 작성

AI 시대 통합:
  엔지니어 = PM + 큐레이터 + QA
    ✓ 의도 명확화
    ✓ 시나리오 설계
    ✓ AI 결과 검증
    ✓ 책임 부여

핵심 질문

“당신은 당신의 코드에 책임을 질 수 있는가?”

이 질문에 "Yes"라고 답할 수 있다면:
  → AI를 어떻게 쓰든 상관없음

"No"라고 답해야 한다면:
  → 검증·이해 단계로 돌아가야 함

한 표로 보는 패러다임 변화

항목과거 (Code Review)AI 시대 (Intent Review)
진실의 원천코드스펙 / 의도
리뷰 대상diff (변경된 줄)의도, 시나리오, 결과
리뷰어사람 (시니어)AI 1차 + 사람 2차 (블로커만)
블로킹모든 이슈부족 지식 + 규제만
단위PR 단위스펙 → 결과 변환 단위
엔지니어 역할코드 작성·검토의도 정의 + QA 검증
책임작성자여전히 작성자 (책임은 안 변함)

vault의 기존 메시지와 일치

노트메시지
AI 시대 실행 비용 붕괴”작동은 잘 함, 학습은 안 됨”
코드베이스 드래그 (Codebase Drag)생산보다 코드 품질이 사람보다 중요
AI 시대에도 프로그래밍을 배워야 하는가”코드 안 쓰면 읽을 수도 없다” (마법사의 제자)
Oh My Codex & 에이전트 스웜”AI Slop = 스킬 이슈” + Slop Cleaner
코딩 에이전트 하니스 & Hashline모델보다 하니스가 병목
AI 논문 생산 논란”사나흘 논문, 깊은 이해는?”

공통: “AI가 만든다 ≠ 책임이 사라진다”


실무 적용 체크리스트

팀 차원

□ 스펙 → 코드 변환 단위로 작업 분해
□ 시나리오 기반 자동 테스트 우선
□ AI 코드 리뷰 도구 도입 (CodeRabbit, Qodo 등)
□ 인간 리뷰는 "부족 지식 + 규제"로 한정
□ "diff 리뷰" 문화 → "의도 리뷰" 문화로 전환

개인 차원

□ AI에게 코드 시키기 전 의도 명확화
□ AI 결과를 1차 자동 검증 (테스트, 린트)
□ "왜 이렇게 짰나?" 설명 가능해야
□ "내가 이 코드에 책임질 수 있나?" 자문
□ 책임 못 지는 영역은 AI 위임 ❌

위험: AI 시대 코드 리뷰 안티패턴

❌ "AI가 만들었으니 어차피 좋겠지" (검증 없이 머지)
❌ "PR 너무 크니까 대충 보자" (리뷰 자체가 무의미)
❌ "AI가 리뷰했으니 사람 리뷰 생략" (자기 검증 신뢰성 ❌)
❌ "스펙은 나중에" (코드부터 짜고 의도는 사후 합리화)
❌ "책임은 AI가 진다" (법적·도덕적으로 불가능)

결론

AI 시대 코드 리뷰의 본질:

"코드를 보지 마라, 의도와 결과를 봐라"
"diff에 갇히지 마라, 시스템을 봐라"
"인간 리뷰의 자원을 부족 지식 + 규제에 집중하라"
"책임은 절대 AI에게 위임할 수 없다"

관련 항목