I agree with that list of priorities, but I don't know what you mean by "feelings"- I wouldn't use that word in my own division of goals. I would just call it "effective communication", not "feelings". You're phrasing it as if the the scenario people are trying to avoid is some brutally honest truthteller vs. some hypersensitive weenie who can't handle the truth, and that people are claiming that it's more important, in that situation, to preserve the weenie's feelings than it is for truth to be expressed. That's not the intention of CoC's or workplace etiquette or professionalism.
Think of that truthteller vs. weenie scenario: in cases where one person is potentially hurting someone else's feefees over professional criticism, there is for sure some subset of those cases where that's exactly what's happening. One person is 100% correct, and is being brutally honest with someone else who is both incompetent and hypersensitive, and deserves that brutally honest criticism because that's the only way to get through to them.
That's a subset of those situations. I don't know how much of a subset- 25%? 50%? My gut says more like 1-5%, but my gut is naturally biased (like everyone's). But in 100% of those situations, I guarantee that the brutally honest truthteller THINKS that's what the situation is. In my experience, the brutally honest truthteller is expressing their own confidence in themselves far more often than they're expressing an objective measure of cold hard truth. Some subset of them are expressing cold hard truth that can't be ignored, but all of them think they are. If they had really truly done their homework and knew what they were talking about, they would have eventually learned humility and skepticism, and would be much less likely to jump into the brutally honest truthteller role in the first place.
Simple example of productive etiquette: when criticizing someone's work, it's generally much more effective to phrase it in such a way that it doesn't come off like a personal attack. Meaning, some variant of "this code is bad" works better than some variant of "your code is bad". In the latter case, natural and common cognitive biases (i.e., human nature) are such that people will almost always feel at least a little bit defensive, and are more likely to reject the rational aspects of the criticism because they sense that the other person is criticizing their work for personal rather than rational reasons. I'm totally aware of these biases in myself and I'm still almost as susceptible to them as anyone. It makes it easy to brush off the criticism as coming from an irrational place, on a subconscious level that never even rises into the conscious mind. Making it personal diminishes the credibility of the criticizer in the eyes of the criticized.
So, as a rule, I have found that it's much more effective to make an effort to phrase things as objective criticisms rather than personal attacks. This isn't tiptoeing around someone's feefees, it's literally just making an effort to communicate in a way that is most likely to produce a positive outcome (in terms of production, not feefees- the preserved feefees are just a pleasant side effect). In my experience, that's all that most CoC's or calls for workplace civility or whatever are advocating. Some people are used to working in large organizations full of big egos and unbalanced people from all over the world. Other people have spent their professional lives in much smaller bubbles, and never had cause to think about any of this stuff. But successful open source projects resemble the former much more than the latter, and can require similar social awareness to keep things running smoothly. Things like CoC's, ideally, just make sure that everyone's on the same page in as harmless and nonintrusive way as possible. I'm sure they've been misused or poorly implemented in specific situations, but in principle it all seems eminently reasonable to me.
I’m not OP, but I don’t think you need to convince anyone of your position.
This is not a problem that requires resolution in order to succeed. Different people have different ideas and philosophies. Build software with a group that’s compatible.
Done. Problem solved. There’s enough cool projects that if you disagree over something that one side of the argument thinks is trivial then you don’t have to stay married for the kids. (Or even get married in the first place)
It seems like a Jainist marrying a Baptist and then trying to really convince the Baptist to go veggie. It’s a big deal to the Jainist, part of their core beliefs, really important. The Baptist doesn’t care. Only cares because they’re married.
Now imagine it’s a stranger on the street that the Jainist is attracted to and goes into “quit meat so we can date.” The stranger is likely going to not respond. Eating meat is not an issue for the stranger, even though the Jainist thinks it’s really important (and millions of other Jainists do as well).
PS- Jainists are cool, and while I don’t know all Jains, I’m pretty familiar and never met one with such an unreasonable approach.
We agree completely assuming that the other less skilled programmer doesn't twist any code criticism into personal attack and that project leader cares more about project quality than about feelings.
When I review or comment the code I couldn't care less if you have three hands and a hump, in fact I am least gentle about my own code. When every dialog goes like Me:"This code is bad" -> Other guy:"Why are you attacking me" there is little room for staying completely politically correct.
I was actually suggested never to use 'this code is bad' in any form in the last place I worked, because that can scare away less skilled colleagues.
a) Quality b) Feelings c) Having as many as possible people 'collaborating' d) Getting job done
Pick two. They are not excluding others but I wonder what the priorities are.
I pick A and D, C is welcome but not priority, B only if it doesn't clash with any of other goals.