Let's say someone made a critical error in their code. Now, it would be nicer and kinder to say "Perhaps you could have done that better, it might have harmful impact on users" and you can also tell the person "This is really bad, you messed up, this type of a mistake is unacceptable and horrific" which uses lots of sharp words and feels abusive, so which is better? It makes the person feel bad for sure with the second option, but isn't that the best way to communicate just how bad what they've done is?
It reminds of how Linux Trovalds tears into people sometimes, I disagree with him most of the time (takes it too far) but isn't the sentiment correct? In other words, you need people to feel very bad about what they've done, not as an attack on their personality, character or even competence but to help them understand the severity of the situation.
Personally, I have struggled with this working in the context of infosec, some mistakes are putting people's livelihoods and even their persons in way of harm. My conclusion so far is to draw a line, be direct but never say anything to anyone that you wouldn't want said to you if the situation was reversed.
I want people I work with and talk to (including here on HN) to communicate clearly and directly with me (and vice versa), without sugarcoating things when it comes to technical discussions and we shouldn't conflate directness and bluntness with being an asshole, just as much as genius (what is that anyways and who cares?) with asshole.