Code review is conflict management with a technical object in the middle. The technical object — the code — gives the conversation a focal point that isn't a person's ego, which is theoretically useful. In practice, the technical object is intimately connected to the author's judgment and decisions, which means criticism of the object is often experienced as criticism of the person. The technical focal point doesn't dehumanize the conversation; it just displaces the wound slightly.

Effective code review requires the same skills as effective conflict resolution: the ability to separate the person from the behavior (the code from the author), the ability to describe impact rather than intent ("this makes the function hard to reason about" rather than "you wrote this badly"), the ability to ask questions rather than make assertions when the issue is unclear, and the ability to recognize when the disagreement is about values rather than facts.

Some code review disagreements are factual. One approach demonstrably performs better, or is demonstrably more correct. Most are values conflicts: clarity vs. performance, explicitness vs. terseness, familiar patterns vs. better patterns. Values conflicts don't resolve by argument — they resolve by negotiation, by appeal to agreed-upon principles, or by someone with legitimate authority making a call.

Learn to distinguish the two. Arguing facts with values tools, or values with facts tools, is how code reviews become miserable.— JP, from the void.

Keep Reading