Skip to content

Instantly share code, notes, and snippets.

@YangSiJun528
Last active February 23, 2026 06:55
Show Gist options
  • Select an option

  • Save YangSiJun528/cac6eccfcb1a837c203d4f884d6eefff to your computer and use it in GitHub Desktop.

Select an option

Save YangSiJun528/cac6eccfcb1a837c203d4f884d6eefff to your computer and use it in GitHub Desktop.
CS146S: The Modern Software Developer Week 7: Modern Software Support 정리

CS146S: The Modern Software Developer Week 7: Code Review 정리

요약

  • AI는 코드 리뷰의 하위 기능(proofreading, 패턴 탐지)을 대체하지만, 상위 기능(alignment, knowledge diffusion, 아키텍처 판단)은 인간의 영역으로 남는다. 이 기능은 더욱 중요해진다.
  • AI를 통해서 개발이 빨라진 만큼, 리뷰/협업도 빨라져야 한다
  • 개발자의 역할이 코드 작성자에서 코드 보증자(Cyborg) → 아키텍처 보증자(EM) → 요구사항 보증자(Agency)로 이동할 수 있다

실습

TODO

발표 자료

Mihail Eric — AI Code Review (11/3)

코드 리뷰의 오류 탐지율(55–60%)은 테스트(25–45%)보다 우월. 통계 원전은 학습 자료 Coding Horror 참조.

코드 리뷰에서 잡아야 할 5가지

Python ❌/✅ 코드 예시 제공:

  1. Logic & Correctnessis(identity) vs ==(equality) 문자열 비교
  2. Readability & Maintainability — 복잡한 한 줄 list comprehension vs 헬퍼 함수 분리
  3. Performance — 리스트 in 탐색 O(n²) vs set 변환 O(n)
  4. Securityeval(user_input) vs ast.literal_eval(user_input)
  5. Best Practices — username 직접 접근 vs user_id 기반 (코드베이스 idiom 준수)

Hierarchy of Needs + 좋은 코드 리뷰

Blake Smith 피라미드: Mental Alignment > Correct Solution > Design Discussion > Find Bugs > Style. 상세 해설은 학습 자료 Blake Smith 원문 참조. 좋은 리뷰 = 구체적 코드 참조 + 문제 설명 + 해결책 제안 + 근거.

AI 코드 리뷰

도구: Graphite, Greptile, CodeRabbit, Claude Code / Codex. AI가 가져온 변화(Efficiency, Consistency, Knowledge Sharing, Reduced Cognitive Load 등)의 실무 적용은 학습 자료 Graphite 가이드 참조.

AI vs Human (Greptile 차트): AI는 코딩에서 25th–75th %ile 수준이지만, 버그 탐지에서는 75th %ile과 동등하거나 우월.

LLM 2x2 매트릭스 — 구축 과정과 측정 방법론은 학습 자료 YouTube 영상 참조:

  • LLM can catch + humans want: documentation, accidental, style, edge case, bug, performance, security
  • LLM can catch + humans don't want: best practice, code cleanliness
  • LLM can't catch + humans want: tribal knowledge
  • LLM can't catch + humans don't want: preference, scope creep

한계: 설정 부담, false positive, 코드베이스 idiom 미파악, 비즈니스 로직/아키텍처 불가, 보안 변경 주의, 엣지 케이스 누락. 머지·배포된 코드의 책임은 본인 — AI 탓 불가.

Tomas Reimers (Graphite CPO) — Guest Lecture (11/7)

Graphite 소개

AI 기반 코드 리뷰 플랫폼(GitHub 위 구축). Shopify +33% PR/dev, Asana +21% LoC/eng, Ramp -74% 머지 시간. 100,000s+ 개발자.

코드 리뷰의 역사

CREATE → REVIEW → MERGE. 1976 Fagan Inspections(IBM) → Email patches(Linux kernel) → Mondrian(Google, Guido van Rossum) → Review Board, Gerrit, Phabricator, GitHub. AI가 코드 생성을 폭증시키면서 리뷰·머지 부담도 함께 증가.

코드 리뷰의 목적과 AI 역할

코드 리뷰의 3가지 목적 (우선순위순):

  1. Alignment confirmation — 변경이 팀 방향성과 일치하는지 확인
  2. Knowledge diffusion — 팀원 간 코드베이스 지식 전파
  3. Proofreading — 버그, 스타일, 보안 등 교정

#1과 #2는 팀의 맥락·의도·암묵지에 의존하므로 인간의 영역. AI가 가장 잘 대체 가능한 것은 패턴 매칭과 규칙 기반 검증인 #3뿐.

AI 역할: Platform(인간 보강) vs Participant(인간 대체). 2x2 매트릭스와 측정 방법론 상세는 학습 자료 YouTube 영상 참조.

Software Development in the Limit

Inner Loop(Code→Build→Debug): AI가 이미 10x 가속(Cursor, Copilot, v0, Windsurf). Outer Loop(Author→Test→Review→Merge→Deploy): 재정의 필요.

  • CYBORG — AI 보강 리뷰어. 보증 범위: 코드 자체.
  • EM — AI 관리자. 보증 범위: 아키텍처.
  • AGENCY — AI를 외주처럼 활용. 보증 범위: 제품 요구사항만.

보증 범위가 코드 → 아키텍처 → 제품 요구사항으로 추상화.

학습 자료

코드 리뷰 기초

발표 자료의 통계 원전. McConnell의 Code Complete 인용.

  • 핵심: 피어 코드 리뷰는 코드 품질을 높이기 위한 가장 강력한 단일 행위.
  • 통계:
    • 유닛 테스트 25%, 기능 테스트 35%, 통합 테스트 45% vs 설계/코드 인스펙션 55–60%
    • 유지보수 조직: 리뷰 전 55% 오류 → 도입 후 2%
    • 11개 프로그램: 4.5 → 0.82 errors/100 lines (80%+ 감소)
    • Aetna: 인스펙션으로 82% 오류 발견, 자원 20% 절감
    • IBM Orbit (500K lines): 11단계 인스펙션 → 조기 납품, 오류 ~1%
    • AT&T (200+명): 생산성 +14%, 결함 -90%
    • JPL: 인스펙션당 $25,000 절감

2006년 포스트, 원본 연구는 1976–2000년대 초. AI 코드 리뷰와 직접 비교 불가하나 "코드 리뷰 > 테스트"의 역사적 근거로 유효.

GitHub Staff Engineer, 8년간 7,000+ PR 리뷰.

  • 팀원 PR이 대기 중이면 자기 작업을 멈추고 리뷰 먼저. 상대 PR은 이미 CI 통과 상태 → 배포에 더 가깝다.
  • PR = "대화의 시작". 리뷰어 역할 = 질문, 가정 도전, 두 번째 눈.
  • 커리어 영향: 코드 리뷰는 링크 가능한 아티팩트 → 승진 기여.

발표 자료 Hierarchy of Needs 피라미드의 원전.

  • 5가지 기능(중요도순): (1) Mental Alignment — Bob이 수정하면 Amy가 리뷰로 멘탈 모델 동기화, (2) Correct Solution, (3) Design Discussion, (4) Find Bugs, (5) Style.
  • 코드 작성 전 4가지 질문: 올바른 작업인가? 팀 동의가 있는가? 작은 단위로 나눌 수 있는가? 어떻게 테스트할 것인가?
  • PR 작성: 나쁜 예("Fix bug / Bob and I talked about it") vs 좋은 예(충격도 표현, 버그 번호, 변경 요약, 테스트 내역).
  • 건설적 피드백: "This design is broken" 대신 "How does this code handle negative integers?" — 질문 형태로 프레이밍.
  • 스타일은 피라미드 최하위. 리뷰 시간의 90%를 들여쓰기에 쓰고 있다면 자동화하라.

AI 코드 리뷰

Google AutoCommenter: T5 기반 LLM이 best practice 위반을 자동 탐지. 가장 대규모 산업 사례.

  • C++, Java, Python, Go 대상. 입력: 태스크 프롬프트 + 소스코드. 출력: 위반 위치 + best practice URL.
  • 훈련: 실제 리뷰의 URL 포함 코멘트 ~800K (전체 3B+ multi-task). 배포: Google 내 수만 명 매일 사용.
  • 린터로 자동화 불가한 뉘앙스(naming, 코멘트 명확성)를 LLM이 보완. 기존 "readability" 멘토링의 반복적 부분을 부분 대체.
  • 한계: ground truth 불완전 — 인간이 모든 위반을 코멘트하지 않으므로 precision/recall에 노이즈.

발표 자료 2x2 매트릭스의 구축 과정과 측정 방법론.

  • 2x2 탄생: 10,000개 인간 코멘트(자체+OSS) → LLM 반복 분류 → 두 축(LLM이 잡을 수 있는가 × 인간이 받고 싶은가).
  • 핵심 인사이트: 같은 코멘트도 인간→수용, LLM→거부. 인간은 맥락적 판단을 적용하지만 봇은 기계적으로 항상 남김. 기술적으로 맞는 것 ≠ 환영받는 것 → 2번째 축 추가의 계기.
  • 카테고리: LLM가능+환영(bugs, accidental code, perf, security, docs, style), LLM불가+환영(tribal knowledge), LLM가능+거부(code cleanliness, best practices).
  • 측정:
    1. Downvote rate (능력): 현재 < 4%.
    2. Action rate (수용도): 코멘트→코드 변경 비율. 인간 기준선 ~50%, Diamond 52%(2025.3) — 인간 수준 도달.
  • 실패 사례: 존재하지 않는 라이브러리 참조, 실제 작동하는 CSS를 "작동 안 함"으로 판단, 근거 없는 리버트 제안.

AI 코드 리뷰 도입 실무 가이드.

  • 도입 3단계: (1) 도구 선택, (2) 워크플로 통합(웹훅, 정책, 교육), (3) 커스터마이징(민감도, 도메인 패턴).
  • Best practices: 명확한 기대 설정(아키텍처/비즈니스 로직 제외), Human-in-the-loop, 실행 가능한 피드백("sync→async" 수용 vs "null check" 거부 vs "class hierarchy 변경" 팀 미팅), 지속적 학습, 보안 우선, 성능 최적화.
  • 일반적 문제: FP 과다→민감도+피드백 루프, 팀 저항→opt-in 시작, 맥락 누락→커스텀 규칙, AI 의존→학습 기회 활용.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment