• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

15. Inspections / Code Reviews

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.

Learning Goals

  • ๋‹ค์–‘ํ•œ Formality level์„ ๊ฐ€์ง„ Peer review์˜ ํ˜•ํƒœ ์ดํ•ด
  • Commit review system์„ ์‚ฌ์šฉํ•œ ๊ฑด์„ค์ ์ธ Modern code review ์ฐธ์—ฌ
  • Code review์—์„œ ์ข‹์€ Checklists์˜ ์ด์ ๊ณผ ์†์„ฑ ์„ค๋ช…
  • Code review์˜ ์‚ฌํšŒ์ , ๋ฌธํ™”์  ๋ฌธ์ œ ์™„ํ™”
  • ํ˜„๋Œ€ ๊ธฐ์ˆ  ๊ธฐ์—…์˜ Commit review ๋™๊ธฐ์™€ ์ด์  ๋Œ€์กฐ

Intuition

"Many eyes make all bugs shallow"
(๋งŽ์€ ๋ˆˆ์ด ์žˆ์œผ๋ฉด ๋ชจ๋“  ๋ฒ„๊ทธ๋Š” ์–•์•„์ง„๋‹ค)
Linus' law

"Have peers, rather than customers, find defects"
(๊ณ ๊ฐ์ด ์•„๋‹Œ ๋™๋ฃŒ๊ฐ€ ๊ฒฐํ•จ์„ ์ฐพ๊ฒŒ ํ•˜๋ผ)
Karl Wiegers

Isnโ€™t Testing Sufficient?

  • ์˜ค๋ฅ˜๊ฐ€ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋ฅผ ์€ํํ•  ์ˆ˜ ์žˆ์Œ
  • ์™„์„ฑ๋œ ๊ตฌํ˜„๋งŒ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ (ํŠนํžˆ Scalability, Performance)
  • Design documents๋Š” ํ…Œ์ŠคํŠธ ๋ถˆ๊ฐ€
  • Tests๋Š” Code quality๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Œ
  • ๋งŽ์€ ํ’ˆ์งˆ ์†์„ฑ(์˜ˆ: Security, Compliance, Scalability)์€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์›€

A Second Pair of Eyes

  • ๋‹ค๋ฅธ ๋ฐฐ๊ฒฝ๊ณผ ๊ฒฝํ—˜ ๋ณด์œ 
  • ์ •๋‹ต์— ๋Œ€ํ•œ ์„ ์ž…๊ฒฌ ์—†์Œ(No preconceived idea)
  • "์˜๋„ํ–ˆ๋˜ ๊ฒƒ"์— ํŽธํ–ฅ๋˜์ง€ ์•Š์Œ

Software Code Reviews

Code Reviews in GitHub

  • Pull requests๋ฅผ ํ†ตํ•ด [Git] repository์— Pushํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ณต์œ 
  • Pull request๊ฐ€ ์—ด๋ฆฌ๋ฉด Collaborators์™€ ์ž ์žฌ์  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋…ผ์˜ํ•˜๊ณ  ๊ฒ€ํ† ํ•˜๋ฉฐ Repository์— Merge ๋˜๊ธฐ ์ „ ํ›„์† Commits ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • ๋‹ค๋ฅธ ๊ธฐ์—ฌ์ž๋“ค์€ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ฒ€ํ† , Review comments ์ถ”๊ฐ€, PR ํ† ๋ก  ์ฐธ์—ฌ, PR์— Commits ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

Code Reviews in VS Team

  • Code check-in ์ „ Visual Studio๋ฅผ ์‚ฌ์šฉํ•ด ํŒ€์›์—๊ฒŒ ๋ฆฌ๋ทฐ ์š”์ฒญ ๊ฐ€๋Šฅ
  • ์š”์ฒญ์€ Team Explorer์˜ "My Work" ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋จ

Google's Code Review Flow

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ž‘์„ฑ ํ›„ Snapshot(Patch ๋ฐ ์„ค๋ช…)์„ Code review tool์— ์—…๋กœ๋“œ
  2. Author๋Š” ์ดˆ๊ธฐ Patch๋ฅผ ์‚ฌ์šฉํ•ด Automated review comments ์ ์šฉ ๋˜๋Š” Self-review ์ˆ˜ํ–‰
  3. Author๊ฐ€ Diff์— ๋งŒ์กฑํ•˜๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ Reviewers์—๊ฒŒ ๋ฉ”์ผ ๋ฐœ์†ก (์•Œ๋ฆผ ๋ฐ ์ฝ”๋ฉ˜ํŠธ ์š”์ฒญ)
  4. Reviewers๋Š” Tool์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์—ด๊ณ  Diff์— Comments ๊ฒŒ์‹œ (๋ช…์‹œ์  ํ•ด๊ฒฐ ์š”์ฒญ ๋˜๋Š” ๋‹จ์ˆœ ์ •๋ณด์„ฑ)
  5. Author๋Š” ํ”ผ๋“œ๋ฐฑ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜์ • ๋ฐ ์ƒˆ Snapshots ์—…๋กœ๋“œ ํ›„ ๋‹ต๋ณ€ (4, 5๋‹จ๊ณ„ ๋ฐ˜๋ณต ๊ฐ€๋Šฅ)
  6. Reviewers๊ฐ€ ์ตœ์‹  ์ƒํƒœ์— ๋งŒ์กฑํ•˜๋ฉด "LGTM"(Looks Good To Me)์œผ๋กœ ์ˆ˜๋ฝ (๋ณดํ†ต 1๊ฐœ์˜ LGTM ํ•„์š”ํ•˜๋‚˜ ๊ด€๋ก€์ƒ ์ „์› ๋™์˜ ์š”๊ตฌ ๊ฐ€๋Šฅ)
  7. LGTM ํ›„ Author๋Š” ๋ชจ๋“  Comments๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์Šน์ธ๋ฐ›์€ ๊ฒฝ์šฐ Codebase์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ Commit

Code Review Goals

  • Finding defects
    • Low-level ๋ฐ High-level issue ๋ชจ๋‘ ํฌํ•จ (Requirements/Design/Code)
  • Code improvement
    • Readability, Formatting, Commenting, Consistency, Dead code ์ œ๊ฑฐ, Naming, Coding standards
  • ๋Œ€์•ˆ ์†”๋ฃจ์…˜ ์‹๋ณ„
  • Knowledge transfer
    • API ์‚ฌ์šฉ๋ฒ•, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Best practices, Team conventions, System design, "Tricks", ํŠนํžˆ Junior developers ๊ต์œก
  • Team awareness ๋ฐ Transparency
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ "Double check", ํŠน์ • ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์ „์ฒด ํŒ€์— ๊ณต์ง€("FYI")
  • Shared code ownership
    • ๋น„ํŒ๊ณผ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๊ฐœ๋ฐฉ์„ฑ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋œ ๋ฐฉ์–ด์ ์ด๊ฒŒ ๋จ

Developersโ€™ Expectations

alt text

Actual Outcomes

alt text

  • ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•จ: Code improvements (29%)
    • 58 Better coding practices
    • 55 Removing unused/dead code
    • 52 Improving readability
  • ๋ณดํ†ต: Defect finding (14%)
    • 65 Logical issues (๋ณต์žกํ•˜์ง€ ์•Š์€ ๋…ผ๋ฆฌ ์˜ค๋ฅ˜, ์˜ˆ: Corner cases, ์„ค์ • ๊ฐ’, ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„)
    • 6 High-level issues
    • 5 Security issues
    • 3 Wrong exception handling
  • ๋“œ๋ฌพ: Knowledge transfer
    • 12 ๋‚ด๋ถ€/์™ธ๋ถ€ ๋ฌธ์„œ ํฌ์ธํ„ฐ ๋“ฑ

Expectation vs Outcomes

  • ๊ธฐ๋Œ€์™€ ๊ฒฐ๊ณผ ์‚ฌ์ด์— ๋ถˆ์ผ์น˜ ์กด์žฌ

Expectation/Outcome Mismatch

  • Code reviews์˜ ๋‚ฎ์€ ํ’ˆ์งˆ
    • Reviewers๊ฐ€ ์‰ฌ์šด ์˜ค๋ฅ˜(Formatting ๋“ฑ)๋งŒ ์ฐพ์Œ
    • ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ๋†“์นจ
  • Understanding(์ดํ•ด)์ด ์ฃผ๋œ ๊ณผ์ œ
    • ๋ณ€๊ฒฝ ์ด์œ  ์ดํ•ด
    • Code ๋ฐ Context ์ดํ•ด
    • ์งˆ๋ฌธ์„ ์œ„ํ•œ Feedback channels ํ•„์š”
  • ๊ฒฐ๊ณผ๋ฌผ์— ๋Œ€ํ•œ Quality assurance ๋ถ€์žฌ

Formal Inspection

  • 70๋…„๋Œ€ IBM์—์„œ ์•„์ด๋””์–ด ๋Œ€์ค‘ํ™”
  • 80๋…„๋Œ€ ๋„๋ฆฌ ์ฑ„ํƒ, ๋งŽ์€ ์—ฐ๊ตฌ ์ง„ํ–‰ (๋•Œ๋กœ๋Š” Component testing ๋Œ€์ฒด)
  • ๊ฐœ๋ฐœ์ž ๊ทธ๋ฃน์ด Code๋‚˜ ๋‹ค๋ฅธ Artifacts๋ฅผ ๊ณต์‹์ ์œผ๋กœ ๊ฒ€ํ† ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋‚จ
  • ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์ ‘๊ทผ๋ฒ•
    • ์ผ๋ฐ˜์ ์œผ๋กœ Inspections๋กœ 60-90%์˜ ๋ฒ„๊ทธ ๋ฐœ๊ฒฌ
  • ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ  ๋…ธ๋™ ์ง‘์•ฝ์ 

Inspection Team and Roles

  • ๋ณดํ†ต 4-5๋ช… (์ตœ์†Œ 3๋ช…)
  • Author: ์ž‘์„ฑ์ž
  • Inspector(s): ๊ฒฐํ•จ(Faults) ๋ฐ ๊ด‘๋ฒ”์œ„ํ•œ issue ๋ฐœ๊ฒฌ
  • Reader: ํšŒ์˜์—์„œ Code๋‚˜ Document ์ œ์‹œ
  • Scribe: ๊ฒฐ๊ณผ ๊ธฐ๋ก
  • Moderator: ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ์ง„ํ–‰(Facilitates), ๋ณด๊ณ 

Inspection Process

alt text

  1. Planning
  2. Overview
  3. Preparation
  4. Meeting
  5. Rework
  6. Follow-up
  • ์ฐธ์—ฌ์ž
    • Author
    • Moderator
    • Inspectors (Scribe, Reader, Verifier ํฌํ•จ)

Inspection Steps

  • Planning (Moderator ์„ ์ •)
  • Overview (๊ฐ„๋žต): Author๊ฐ€ ํšŒ์˜์—์„œ Context ์ œ์‹œ
  • Preparation (1-2์‹œ๊ฐ„): ๋ชจ๋“  Reviewer๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ Code ๊ฒ€์‚ฌ
  • Meeting (1์‹œ๊ฐ„)
    • Reader๊ฐ€ Code ์ œ์‹œ
    • ๋ชจ๋“  Reviewers๊ฐ€ issue ์‹๋ณ„
    • ํšŒ์˜์—์„œ๋Š” issue ๋ฐœ๊ฒฌ๋งŒ ํ•˜๊ณ , ์†”๋ฃจ์…˜ ํ† ์˜๋‚˜ ์‹ค์ œ issue ์—ฌ๋ถ€๋Š” ๋…ผ์Ÿํ•˜์ง€ ์•Š์Œ
  • Rework
  • Follow-up (Verifier๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธ)

Checklists

  • ๋ฌด์—‡์„ ์ฐพ์•„์•ผ ํ• ์ง€ ์ƒ๊ธฐ์‹œํ‚ด
  • ๊ณผ๊ฑฐ์— ๋ฐœ๊ฒฌ๋œ issue ํฌํ•จ
  • ์†Œ์ˆ˜์˜ ์ค‘์š”ํ•œ ํ•ญ๋ชฉ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ์˜ˆ์‹œ:
    • ์‚ฌ์šฉ ์ „ ๋ชจ๋“  ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์—ฌ๋ถ€
    • ๋ชจ๋“  ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์—ฌ๋ถ€
    • If/While ๋ฌธ์˜ ์กฐ๊ฑด ์ •ํ™•์„ฑ
    • ๊ฐ Loop์˜ ์ข…๋ฃŒ ์—ฌ๋ถ€
    • Function parameters์˜ ์˜ฌ๋ฐ”๋ฅธ ํƒ€์ž… ๋ฐ ์ˆœ์„œ
    • Linked lists์˜ ํšจ์œจ์  ์ˆœํšŒ
    • ๋™์  ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
    • ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ž…๋ ฅ์œผ๋กœ ์ธํ•œ Corruption ๊ฐ€๋Šฅ์„ฑ
    • ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ Error conditions ์ฒ˜๋ฆฌ ์—ฌ๋ถ€
    • Strings์˜ ์˜ฌ๋ฐ”๋ฅธ Sanitization ์—ฌ๋ถ€

Perspective-based Inspections

  • ์„œ๋กœ ๋‹ค๋ฅธ ์ „๋ฌธ ๋ถ„์•ผ๋‚˜ Focus/Checklists๋ฅผ ๊ฐ€์ง„ Inspectors ๋ฐฐ์น˜
    • ๋Œ€์•ˆ์  ์‚ฌ๊ณ  ํŒจํ„ด ์žฅ๋ ค
  • Reviewers๊ฐ€ ๋ฌธ์„œ์˜ ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜๋„๋ก ํ•จ
    • ๊ฐ™์€ ์œ„์น˜์—์„œ ์ง‘์ค‘๋ ฅ์„ ์žƒ๋Š” ๊ฒƒ ๋ฐฉ์ง€
  • ํŠนํžˆ Preparation ๋‹จ๊ณ„์—์„œ ์œ ํšจ
  • ์ถœํŒ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ ์ง€๋งŒ ํšจ๊ณผ์ ์ธ ๊ด€ํ–‰์œผ๋กœ ๊ฐ„์ฃผ๋จ

Process Details

  • Authors๋Š” Code๋ฅผ ์„ค๋ช…ํ•˜๊ฑฐ๋‚˜ ๋ฐฉ์–ดํ•˜์ง€ ์•Š์Œ (๊ฐ๊ด€์ ์ด์ง€ ์•Š์Œ)
    • Author โ‰ \neq๎€ = Moderator โ‰ \neq๎€ = Scribe, โ‰ \neq๎€ = Reader
    • Author๋Š” ์งˆ๋ฌธ๊ณผ ์˜คํ•ด๋ฅผ ๊ด€์ฐฐํ•˜๊ณ  ํ•„์š”์‹œ issue๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ํšŒ์˜ ์ฐธ์„
  • Reader(optional)๋Š” Code๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์œผ๋ฉฐ ์„ค๋ช…
    • Code๋ฅผ ์†Œ๋ฆฌ ๋‚ด์–ด ์ฝ์œผ๋ฉด ๋” ๊นŠ์€ ์ดํ•ด ํ•„์š”
    • ํ•ด์„์„ ์–ธ์–ดํ™”(Verbalizes)ํ•˜์—ฌ ํ•ด์„์˜ ์ฐจ์ด ๊ด€์ฐฐ ๊ฐ€๋Šฅ

Social Issues: Egos in Inspections

  • Artifacts์— ๋Œ€ํ•œ Author์˜ ์ž์กด๊ฐ(Self-worth)
  • ๊ฒฐํ•จ์„ ์‹๋ณ„ํ•˜๋˜ ๋Œ€์•ˆ ์ œ์‹œ๋Š” ์ง€์–‘, Authors๋ฅผ ๋น„ํŒํ•˜์ง€ ์•Š์Œ
    • "๋„ˆ๋Š” ๋ณ€์ˆ˜ a๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•˜์–ด" โ†’\rightarrowโ†’ "๋‚˜๋Š” ๋ณ€์ˆ˜ a๊ฐ€ ์–ด๋””์„œ ์ดˆ๊ธฐํ™”๋˜๋Š”์ง€ ๋ชป ์ฐพ๊ฒ ์–ด"
  • Code ๋ฐฉ์–ด ํšŒํ”ผ, ์†”๋ฃจ์…˜/๋Œ€์•ˆ ํ† ๋ก  ํšŒํ”ผ
  • Reviewers๋Š” ์ž์‹ ์ด ๋” ๋‚ซ๊ฑฐ๋‚˜ ๋˜‘๋˜‘ํ•จ์„ ๊ณผ์‹œํ•˜์ง€ ๋ง ๊ฒƒ
  • Guidelines๊ฐ€ ์—†๋‹ค๋ฉด Style ํ† ๋ก  ํšŒํ”ผ
  • ๊ฒฐํ•จ ํ•ด๊ฒฐ ๋ฐฉ์‹์€ Author๊ฐ€ ๊ฒฐ์ •

Social Issues: Inspection Incentive

  • Moderator๋Š” ํ† ๋ก ์„ ์ง„ํ–‰ํ•˜๊ณ  ์ถฉ๋Œ ํ•ด๊ฒฐํ•ด์•ผ ํ•จ
  • ํšŒ์˜์— ๊ฒฝ์˜์ง„(Management) ํฌํ•จ ๊ธˆ์ง€
  • HR ํ‰๊ฐ€์— ์‚ฌ์šฉ ๊ธˆ์ง€
    • "Inspection ์ค‘ 5๊ฐœ ์ด์ƒ ๋ฒ„๊ทธ ๋ฐœ๊ฒฌ ์‹œ Author์—๊ฒŒ ๋ถˆ์ด์ต" ๊ฐ™์€ ๊ฒฝ์šฐ
    • ํšŒํ”ผ, ๋ถ„ํ•  ์ œ์ถœ, ๊ฒฐํ•จ ์ง€์  ํšŒํ”ผ, Pre-reviews ๊ฐœ์ตœ ๋“ฑ์œผ๋กœ ์ด์–ด์ง
  • Quality์— ๋Œ€ํ•œ ์ฑ…์ž„์€ Reviewers๊ฐ€ ์•„๋‹Œ Authors์—๊ฒŒ ์žˆ์Œ
    • "์™œ ๊ณ ์ณ, Reviewers๊ฐ€ ์ฐพ์„ ํ…๋ฐ"๋ผ๋Š” ํƒœ๋„ ๋ฐฉ์ง€

Root Cause Analysis

  • ๋‹น๋ฉดํ•œ ํผ์ฆ ๋„ˆ๋จธ๋ฅผ ๋ด„
  • ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์žฌ๊ตฌ์กฐํ™”
    • ์ƒˆ๋กœ์šด Policies
    • ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๋„๊ตฌ
    • ์ƒˆ๋กœ์šด ์–ธ์–ด
    • ์ƒˆ๋กœ์šด ๋ถ„์„ ๋„๊ตฌ

When to Inspect

  • Milestones ์ด์ „
  • ๊ฐœ๋ฐœ ์ค‘ ์ ์ง„์ (Incremental) Inspections
    • ๋‚˜์ค‘๋ณด๋‹ค ์ดˆ๊ธฐ๊ฐ€ ์ข‹์Œ
      • ๋” ์ž‘์€ ์กฐ๊ฐ, ํ–ฅํ›„ ๊ฐœ๋ฐœ์— ์˜ํ–ฅ ์ค„ ๊ธฐํšŒ
    • ๋Œ€๊ทœ๋ชจ Code bases๋Š” ๋ฆฌ๋ทฐ ๋น„์šฉ์ด ๋†’๊ณ  ์ขŒ์ ˆ๊ฐ ์œ ๋ฐœ ๊ฐ€๋Šฅ
  • ๋ถ„ํ•  ์ •๋ณต(Break down, divide and conquer)
  • ์ค‘์š” Components ์ง‘์ค‘
  • ์ฒซ ์„ธ์…˜์˜ Defect density๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์ถ”๊ฐ€ Inspections ํ•„์š”์„ฑ ๊ฐ€์ด๋“œ

Reviews as Part of a Milestone

alt text

  • Task X, Task Y ์ˆ˜ํ–‰ ํ›„ Review ์ง„ํ–‰
  • Milestone ๋„๋‹ฌ ์ „ ์ ์ ˆํ•œ ์‹œ์ ์ธ์ง€ ํ™•์ธ
  • Rework ๊ณผ์ •์„ ๊ฑฐ์ณ Milestone ๋‹ฌ์„ฑ

Guidelines for Inspections

  • ๋‹ค์ˆ˜ ๊ธฐ์—…์˜ ํ”„๋กœ์ ํŠธ ๋ฐ ์‹คํ—˜์—์„œ ์ˆ˜์ง‘๋จ
  • ์‰ฝ๊ฒŒ ์ธก์ • ๊ฐ€๋Šฅํ•œ ๋ช‡ ๊ฐ€์ง€ Metrics
    • Effort, Issues found, Lines of code inspected ๋“ฑ

Focus Fatigue

alt text

  • ๊ถŒ์žฅ ์‚ฌํ•ญ: ์„ธ์…˜๋‹น 60๋ถ„ ์ดˆ๊ณผ ๊ธˆ์ง€

Inspection Speed

alt text

  • 400 LOC/h ์ด์ƒ ์‹œ ๋ฆฌ๋ทฐ๊ฐ€ ์–•์•„์ง(Shallow)
  • ๊ถŒ์žฅ ์‚ฌํ•ญ: 1์‹œ๊ฐ„ ๋ฆฌ๋ทฐ ์„ธ์…˜์— 400 LOC ๋ฏธ๋งŒ ์ผ์ • ์žก๊ธฐ

Importance of Context

  • Context dependencies๊ฐ€ ์ ์€ Code๊ฐ€ ๋ฆฌ๋ทฐํ•˜๊ธฐ ์‰ฌ์›€
  • Reviewers๋Š” ๊ด€๋ จ ํŒŒ์ผ ํ™•์ธ ํ•„์š”
  • Modularity (Small interfaces, High cohesion, Low coupling ๋“ฑ) ํ•„์š”

Are Meetings Required

alt text

  • ๋Œ€๋ถ€๋ถ„์˜ issue๋Š” Meeting์ด ์•„๋‹Œ Preparation ๋‹จ๊ณ„์—์„œ ๋ฐœ๊ฒฌ๋จ
  • ์ œ์•ˆ๋œ ์‹œ๋„ˆ์ง€ ํšจ๊ณผ๋Š” ๋‚ฎ์€ ์˜ํ–ฅ๋งŒ ๋ฏธ์นจ
  • ์ฃผ์žฅ: Meetings์—์„œ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒฐํ•จ์€ ์ข…์ข… ๋” ๋ฏธ๋ฌ˜ํ•จ(Subtle)

False Positives

  • ๋ฐœ๊ฒฌ๋œ issue์˜ ์•ฝ 25%๋Š” False positives
  • Meeting ์ค‘ ํ† ๋ก  ํšŒํ”ผ
  • Meeting ์ค‘ ํ˜ผ๋ž€์€ ๋ฌธ์„œ๊ฐ€ ๋” ๋ช…ํ™•ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ง€ํ‘œ(Indicator)

Self-checks Can Find Half the Issues

alt text

  • Authors๊ฐ€ Inspection ์ „ ๋ฌธ์„œ๋ฅผ Self-checkํ•จ

The Goal Is Not To Be โ€œRightโ€ (itโ€™s to save $)

"ํ”ผ๋กœ์Šค์˜ ์Šน๋ฆฌ(Pyrrhic victory)๋Š” ์Šน๋ฆฌ์ž์—๊ฒŒ ๋ง‰๋Œ€ํ•œ ๋Œ€๊ฐ€๋ฅผ ์น˜๋ฅด๊ฒŒ ํ•˜์—ฌ ํŒจ๋ฐฐ์™€ ๋‹ค๋ฆ„์—†๋Š” ์Šน๋ฆฌ์ด๋‹ค.
์žฅ๊ธฐ์  ๋ฐœ์ „์„ ์ €ํ•ดํ•˜๊ฑฐ๋‚˜ ์ง„์ •ํ•œ ์„ฑ์ทจ๊ฐ์„ ๋ฌดํšจํ™”ํ•œ๋‹ค."

  • ์˜ณ๋‹ค๋Š” ๊ฒƒ(Being right)์ด ํ•ญ์ƒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•„๋‹˜
  • "๋‚ด ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค"๋Š” ๋ง์„ ๋“ค์—ˆ์„ ๋•Œ ๊ณ ๋ คํ•  ์‚ฌ๊ณ ๋ฐฉ์‹
    • "์ด ์‚ฌ๋žŒ์—๊ฒŒ ์™œ ํ‹€๋ ธ๋Š”์ง€ ๋งํ•ด์ค˜์•ผ์ง€" (X)
    • "๋‚ด ์ฝ”๋“œ๊ฐ€ ์™œ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ํ•ด์•ผ๊ฒ ๋‹ค" (O)

Inspections vs Reviews: Costs

  • Formal inspections ๋ฐ Modern code reviews
    • Formal inspections๋Š” ๋งค์šฐ ๋น„์Œˆ (์„ธ์…˜๋‹น ์•ฝ 1 Developer-day)
    • Passaround review๋Š” ๋ถ„์‚ฐํ˜•, ๋น„๋™๊ธฐ์ (Asynchronous)
  • Code reviews ๋Œ€ Testing
    • Code reviews๊ฐ€ ๋น„์šฉ ํšจ์œจ์ ์ด๋ผ ์ฃผ์žฅ๋จ
  • Code reviews ๋Œ€ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๋น„์šฉ ๋น„๊ต

Code Review by Formality

  1. Inspection (๊ฐ€์žฅ formalํ•จ)
  2. Walkthrough
  3. Pair Programming
  4. Passaround ("Modern code reviews")
  5. Ad hoc review

Differences Among Peer Review Types

Review TypePlanningPreparationMeetingCorrectionVerification
InspectionOOOOO
WalkthroughOOOOX
Pair ProgrammingOXContinuousOO
PassaroundXORarelyOX
Ad HocXXOOX

Experience (Studies/Claims)

  • Raytheon
    • "Rework" ๋น„์šฉ 41%์—์„œ 20%๋กœ ๊ฐ์†Œ
    • Integration effort 80% ๊ฐ์†Œ
  • Paulk et al. : Space shuttle software ์ˆ˜์ • ๋น„์šฉ
    • Inspection ์ค‘ ๋ฐœ๊ฒฌ ์‹œ $1
    • System test ์ค‘ ๋ฐœ๊ฒฌ ์‹œ $13
    • Delivery ํ›„ ๋ฐœ๊ฒฌ ์‹œ $92
  • IBM
    • Inspection 1์‹œ๊ฐ„์ด Testing 20์‹œ๊ฐ„ ์ ˆ์•ฝ
  • R. Grady, HP์˜ ํšจ์œจ์„ฑ ๋ฐ์ดํ„ฐ (Defects/h)
    • System use: 0.21
    • Black box testing: 0.28
    • White box testing: 0.32
    • Reading/inspection: 1.06
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License