It would take a whole lot of cognitive dissonance to get through a decent sized software project and imagine it is all flawless or couldn't be even slightly better in some way.
Both ends of behavior are the result of being confronted often with error, be it caused by wrongful action or caused by externalities. When a circuit goes up in smoke, its just physics being a harsh mistress; getting angry about it is useless, so we just skip the blame/anger part.
But it's often necessary to get programmers to change their behavior, since what they are doing is causing the problems, and programmers are no better than anyone else at changing behavior in response to criticism.
Design and code reviews are particular hot spots, which is why most I have seen had become just check offs.
The work of a programmer is to sit in front of a soulless machine that has no inhibition in telling the programmer made a mistake on his code at regular intervals.
You need to be pain intolerant to be a programmer, while in other roles pain avoidance is the norm.
And in fact, that is one of the techniques of conflict management between partners, addressing the problem instead of finding the responsible of it.
"@Dave, you seem to have made yet another type error on line 56. @jon recently committed code that didn't fail any integration tests. Why can't you be more like @jon?"
"Wow @Dave! that's the smartest code I've ever seen! just one thing, there's a probably-not-that-important error on line 56"
If you build a system which successfully encourages actual humans to say nice things about one another's code _and mean it_ while incorporating constructive feedback, it would work beautifully, but that is a markedly more challenging problem...
It's not much different to my mind, and I fall into that camp of people who always think they're wrong.
Try to tell me I'm completely right, I'll argue with you why I'm not