Mistakes I see engineers making in their code reviews

Blocking vs non‑blocking reviews and what “approval” means

  • Major debate around whether non‑blocking comments can be safely ignored.
  • One camp: if you approve without blocking, you’re explicitly saying “OK to merge as is”; expecting changes anyway is confusing and unfair.
  • Opposing camp: any comment pointing out a potential problem should normally be treated as de facto blocking unless clearly marked optional; ignoring such comments is seen as careless or arrogant.
  • Some teams avoid “changes requested” and rely on comments + eventual approval; others treat a comment‑only review as “I don’t approve yet.”
  • Concern that early blocks serialize work and slow delivery, especially when reviewers are unavailable.

What counts as a blocking issue

  • Strict view: there’s no such thing as a “non‑blocking issue”; if it matters, block.
  • More pragmatic view: spectrum from serious bugs to “janky but acceptable for now,” tech debt, or minor polish; blocking on everything would stall progress.
  • Suggested practice: block only for things that will break existing behavior, fail to deliver the stated feature, or clearly violate agreed standards; treat the rest as suggestions or future work (tracked via TODOs/tickets).

Professionalism, responsibility, and culture

  • Disagreement over whether failing to block on a suspected bug is reviewer negligence.
  • Some see ignoring non‑blocking comments as acceptable disagreement; others see it as refusing to engage and “not doing your job.”
  • Frustration with toxic patterns: floods of nitpicks, PRs used as weapons, passive blocking by never approving.
  • Several people stress that authors remain responsible for their code even after review; review reduces accidents, not willful bad decisions.

Number and nature of comments

  • Article’s “don’t leave too many comments” is contested. Some think 100+ comments is never productive; others say big or off‑standard PRs may justify many, but prefer pairing or a call in those cases.
  • Broad agreement that style and formatting comments should be automated by linters/formatters and CI, not human reviewers.

Consistency vs personal taste

  • Widely accepted that reviews shouldn’t enforce arbitrary personal preferences.
  • Strong counterpoint: consistency and predictability in a mature codebase (naming, patterns, architecture) are crucial, even if rooted in someone’s “taste,” and are legitimate review concerns when tied to documented conventions.