Skip to main content
Team Processes

Stop Policing Style: Why Your Team's Code Review Should Be Boring

Code review shouldn't be about catching typos. Here's why your team should focus on design and let automation handle the rest—and how to make it happen.

"Why do code reviews take so long and still miss the important stuff?" That's the question I hear from engineering teams every week. They're frustrated: reviews drag on for days, arguments erupt over semicolon placement, and yet security holes slip through. The answer isn't more process or stricter checklists. It's a fundamental shift in what your team thinks code review is for.

The Real Purpose of Code Review

Most teams treat code review as a final quality gate, a chance to catch bugs before they hit production. But Google's own research, from a study of over 9 million changes and 25,000 authors, found that finding bugs isn't the primary focus. Instead, developers expect code review to educate, maintain norms, gatekeep, and prevent accidents. That's a different job. When you optimize for bug-catching, you end up with slow, adversarial reviews that don't make anyone better. When you optimize for learning and code health, you get faster reviews and a better codebase. The primary purpose of code review, as Google's engineering practices put it, is to make sure the overall code health of the codebase is improving over time. That's the goal. Not perfection—improvement.

Automation Is Your Friend, Not Your Replacement

If code review is about education and design, then why are your senior engineers spending their nights arguing about import order? They shouldn't be. Linters, formatters, static analysis tools, secret scanners, and dependency scanners exist precisely to handle style and mechanical checks, so humans can focus on logic and architecture. Tools like ESLint catch inconsistent patterns in JavaScript; Bandit and gosec scan Python and Go for security issues like SQL injection and unsafe deserialization; Semgrep can run on any codebase and find insecure patterns. These tools are fast, tireless, and never get offended. Let them do the boring stuff.

Small Changes, Big Wins

Once you've automated the trivial, you can tackle the real bottleneck: change size. Google's guidance is blunt: a 100-line change is usually reasonable, 1000 lines is usually too large, and a 200-line change across 50 files is too large. Their data backs this up: the median change at Google is about 24 lines, with over 35% touching only one file. Smaller changes are reviewed more quickly, more thoroughly, and are less likely to introduce bugs. They're also easier to merge and roll back. So why do we keep seeing 2,000-line PRs? Because we haven't made small a requirement. Split your work by concern. If a PR has to be 500 lines to make sense, fine, but aim for a fraction of that. Your reviewers will thank you.

Speed Matters More Than You Think

Slow reviews are a silent killer. Google's engineering practices state that the maximum time to respond to a review request should be one business day—first thing the next morning. But they also say that quick individual responses matter more than the total review time, because fast feedback eases developer frustration. The data shows why: at Google, median time to first feedback for small changes is under one hour, and overall median review latency is under four hours. That's a far cry from the 14.7 to 24 hours reported in Microsoft projects. If your team's reviews routinely take days, you're not being thorough; you're being slow. Try the 'LGTM with comments' technique: approve the change while leaving minor comments you trust the author to address. It speeds things up without sacrificing quality.

The Counter-Argument: What About Security?

You might be thinking: "If we speed up reviews and focus on design, won't we miss vulnerabilities?" That's a valid concern, and it's why I'm not saying to skip security review entirely. But security review shouldn't be a human slog—it should be layered. Static analyzers like gosec and Bandit catch the top patterns, and platforms like SonarQube can enforce quality gates that block merges if new vulnerabilities are introduced. The OWASP Top 10 2025 still lists Broken Access Control as the #1 risk, and Injection is #5—these are things automation can flag. But the truly nasty stuff, like logic errors and misconfigured access controls, often require a human eye. That's why your human reviewers should focus on the overall design and architecture, not on scanning for SQL injection string patterns. The automation will catch the obvious; humans catch the subtle.

Make It Concrete: A Workflow That Works

Here's a concrete workflow that embodies this philosophy. Set up branch protection on your main branch, requiring a specific number of approving reviews and status checks to pass. Configure a CODEOWNERS file so the right people are automatically requested for review—just remember that on GitHub, code owners aren't auto-requested for draft PRs. Use a tool like SonarQube with a quality gate that enforces no new issues, 80% test coverage on new code, and no duplication beyond 3% in new code. Then, when a PR comes in, the automation runs first. If it fails, the author fixes it before a human even looks. When a human does review, they're looking at design, logic, and whether the change improves code health. They're not arguing about whitespace. This isn't hypothetical—it's how high-performing teams operate.

Bottom line

Stop using code review as a style police force. Automate the mechanical checks, keep changes small, and respond quickly. Then let your human reviewers do what only they can: evaluate design and mentor the team. That's the single best move you can make.

Sources

  • Google Engineering Practices (code review) - https://google.github.io/eng-practices/review/
  • Google Engineering Practices - Speed of Code Reviews - https://google.github.io/eng-practices/review/reviewer/speed.html
  • Google Engineering Practices - Small CLs - https://google.github.io/eng-practices/review/developer/small-cls.html
  • Modern Code Review: A Case Study at Google (ICSE-SEIP '18) - https://www.papercache.org/papers/mlsys/system/2026/03/25/modern-code-review-a-case-study-at-google
  • SonarQube Server Docs - Understanding quality gates - https://docs.sonarsource.com/sonarqube-server/2026.1/quality-standards-administration/managing-quality-gates/introduction-to-quality-gates
  • OWASP Top Ten 2025 - https://owasp.org/Top10/2025/0x00_2025-Introduction/

Share this article:

Comments (0)

No comments yet. Be the first to comment!