Code Review Essentials
Code review is where another developer reads your code before it goes into production. That’s it. But that simple practice prevents more bugs, security holes, and production incidents than almost any other technique.
What This Is
Code review is the practice of having teammates examine your code changes before they’re merged into the main codebase. Someone looks at what you wrote, checks if it makes sense, points out issues, asks questions, and either approves it or requests changes.
It’s not about catching every possible bug—that’s what testing is for. It’s not about enforcing personal style preferences—that’s what automated linters are for. It’s about bringing a fresh perspective to the code before it ships.
Why This Matters
You’ve been staring at this code for hours. You know what it’s supposed to do, so your brain fills in the gaps. A reviewer sees what’s actually there, not what you meant to write.
Code review catches:
- Logic bugs you missed because you were thinking about the happy path
- Security vulnerabilities that seem obvious in hindsight
- Confusing code that will baffle future developers (including you)
- Missing edge cases you didn’t consider
- Better approaches someone else knows about
It also shares knowledge across the team. When you review someone’s code, you learn how they solved a problem. When they review yours, they learn about the part of the system you’re working on.
Minimum Viable Understanding
If you’re just starting with code review, these three principles will keep you out of trouble:
1. Everything Gets Reviewed Before Merge
No exceptions for “small changes” or “hotfixes.” Those are exactly when bugs slip through. Set up your Git repository so code literally can’t be merged without approval.
2. Focus on Three Things
Don’t try to catch everything. Look for:
- Correctness: Does this actually do what it claims?
- Clarity: Can I understand what’s happening?
- Maintainability: Will this make the codebase better or worse?
Security and performance matter too, but start with these three.
3. Be Kind and Specific
Code review is the most interpersonal technical activity you’ll do. How you give feedback matters as much as what you say.
Real Red Flags
Here’s what code review looks like when it goes wrong—and how to fix it:
❌ Vague, Judgmental Feedback
“This code is terrible.”
“Why did you do it this way?”
✅ Specific, Helpful Feedback
“This function is hard to follow because it does three different things. Could we extract the validation logic into a separate function?”
“I’m having trouble understanding the flow here. Would it help to add a comment explaining why we check X before Y?”
❌ Massive Pull Requests
PR #847: “Rewrite user authentication system” Files changed: 47 | Lines: +2,847, -1,203
Nobody can meaningfully review 2,000 lines of code. They’ll either rubber-stamp it or get lost in details and miss the big issues.
✅ Small, Focused Changes
PR #847: “Add email validation to signup form” Files changed: 3 | Lines: +43, -8
PR #848: “Extract user validation into separate service” Files changed: 5 | Lines: +127, -89
Each PR does one thing. The reviewer can actually think about it.
❌ Rubber-Stamp Approvals
Approved 2 minutes after PR was opened
Comment: “LGTM 👍”
The PR adds database migrations and changes authentication logic. There’s no way they read it, tested it, and thought about edge cases in two minutes.
✅ Engaged Review
Approved 45 minutes after PR was opened
Comments:
- “Nice catch on the null check in line 47”
- “Question: What happens if the email address is already in use?”
- “I tested this locally with an empty form and got a 500 error”
You can tell they actually ran the code and thought about it.
❌ Endless Nitpicking
23 comments on spacing, variable names, and formatting
0 comments on the logic bug that will crash production
✅ Focus on What Matters
“Let’s add a pre-commit hook to handle formatting automatically. Meanwhile, I’m concerned about this loop on line 93—it looks like it could create an N+1 query problem.”
Fix the important stuff first. Automate the trivial stuff.
The Review Checklist
When reviewing code, check these five things:
-
Does it work?
- Actually run the code if you can
- Think about edge cases: empty input, null values, huge lists
- Check error handling
-
Can I understand it?
- If you have to re-read a section three times, it needs to be simpler
- Function names should tell you what they do
- Complex logic should have a comment explaining why
-
Are there tests?
- New features should have tests
- Bug fixes should have a test proving the bug is fixed
- Tests should actually test something meaningful
-
Is it secure?
- No hardcoded passwords or API keys
- User input is validated
- Database queries use parameterized queries (not string concatenation)
-
Does it fit the codebase?
- Matches the existing code style
- Uses the same patterns the team already uses
- Doesn’t reinvent something that already exists
If the answer to any of these is “no,” that’s what your review comment should address.
Quick Validation Test
Your code review process is working if:
- PRs sit for less than a day before getting reviewed
- You find bugs in review regularly (but not constantly)
- Reviewers ask questions about your code that make you think
- You learn something from reviewing others’ code
- Nobody dreads the review process
Your code review process needs work if:
- PRs sit for days or weeks
- Reviews are just “LGTM” with no actual comments
- Review comments feel personal or nitpicky
- Bugs still slip through to production regularly
- People route around the process with “emergency” merges
When to Bend the Rules
Two scenarios where you might skip review:
-
True emergencies: Production is down, customers can’t access the system, you’re losing money every minute. Fix it first, review after.
-
Documentation-only changes: Fixing a typo in a README probably doesn’t need a full review. But adding documentation for a complex feature? That should be reviewed.
Everything else goes through review. “I’m in a hurry” isn’t an emergency.
One-Sentence Maxim
Code review is where the team decides together what code is good enough to ship.
What’s Next
This gives you enough to start doing code review without creating more problems than you solve. Keep it simple: small PRs, kind feedback, focus on correctness and clarity.
For systematic review practices and what specifically to look for, see the mid-depth content. For building review culture at scale and advanced techniques, see deep-water content.