The trouble is "asshole" is relative. As an engineer, I value disagreeable people. I want someone to tell me I'm wrong and disagree with me whenever appropriate. But to many HR types just the mere fact you're disagreeing and not blowing smoke up everyone's arse all the time makes you an asshole. People should also feel ok with calling out incompetence which, again, can make you seem like an asshole to some.
One can disagree without being disagreeable. “From my experience, this approach will have the following downsides…” is disagreeing. “Only an idiot would suggest that approach” is being disagreeable.
Too many engineers take the 2nd approach, and then tell themselves that everyone else is the problem when they get labeled as “disagreeable”. At best, they mean well but are sorely lacking in social skills. At worst, the cruelty is the point, and “I’m just telling it like it is” is their attempt at gaslighting others.
I feel like there's a language problem with agreeable/disagreeable and people take the words to mean "nice"/"not nice" primarily. But you'll notice the word "agree" is embedded in there and I didn't say nice/not nice.