I mean I can think of multiple times over the years where projects absolutely failed even though people politely pointed out the flaws but did not push to correct them because they did not want to rock the boat and knew it would make them unpopular or "a jerk".
Sure there are _actual_ jerks that theoretically this would "catch", but it seems like competent managers would give them a warning and if they weren't obviously improving, eliminate them by necessity.
Another aspect of this is that politically connected (office politics) people in the organization are often immune to this type of thing, and calling them out in a review could be career suicide.
This requires lots of political skills that only few people have.
Well then, then that sounds like a pretty valuable skill that should be given greater focus during performance reviews, doesn't it?
Rather, being a very rational person instead of being pissed off by arguments, is a skill that should be given greater focus during performance reviews for programmers.
Being opposed should be encouraged even if it's just a way to internally test ideas; being obnoxious should be discouraged.
You, your team and your manager should be able to make that distinction. If work at a place where disagreement is systemically taken personally, look for another place to work at.
The problem is that if 9/10 have a bad idea, the 9 decide whether the dissenter is simply opposed or obnoxious.
Or it could be that only 3/10 have a bad idea, and 6/10 are afraid to side with 1/10 out of fear of likewise being considered obnoxious.
Any filter on honesty is a hazard IMO.
The lines between "opposed" and "obnoxious" are very blurry and depend a lot on whether the respective person is very socially adept or not.
vs
"I don't think this is a good idea. I still think xyz is a more optimal solution".
(This works for our industry. May not work for most people on the planet, for whom abandoning a job is quite literally life-threatening. But that's an entirely separate topic.)
This is often an issue in big corporations by my experience. People complain about others behind their back, but never in the face, feedback just doesn't get back to originators so little changes. Its all nice and quiet and then bam! and the person is fired. Or not.
1. Don't tolerate jerks regardless of their level of "brilliant". And simply not being likeable isn't enough to categorise someone as a jerk.
2. Give your employees honest reviews focusing on their actual skills, performance and impact. Don't come up with artificially soft language and treat them like children who need to tiptoed around.