I think there's a delicate way to be both "firm" and "polite" - and that's to not be pretend to be "agreeable", but rather to separate the firmness on technical issues from politeness on personal description. That is, to say "this code is awful" while also a) going out of your way to praise the things co-workers/subordinates do well, and b) when it is appropriate to make general judgments on their performance, make it clear that they are appreciated.
The core of the idea of someone being "passive-aggressive" is the idea that you never know where you stand with someone; if you're very clear about what things you're unhappy about and also what you're happy about, that's less of a concern.
For specific structures, I've often heard people involved in military leadership describe a formula of "praise-criticise-praise", which seems to be an attempt to run this balancing act on a personal level. "Whew, this was a big project you got done! This bit of code is absolutely bonkers. Everything other than that looks great to me, though."
Another technique is to make sure that people hear things from you not just when you're annoyed about something, but also when you're impressed. (Or, when you're not super impressed, talk up their areas of basic competence.) That gives you more leeway to criticize bluntly without impacting morale, and also makes people more eager to please. (Yes, a lot of leadership practices are manipulative as hell. Try to manipulate people without destroying their mental health and happiness please, that's super abusive and also counter-productive.)
To me, the most important thing is to a) seperate the person from their product b) be constructive. By that I mean saying "this code you wrote is bad and here's why" instead of "you are a bad coder and you should feel bad".
Much modern management theory recommends against the praise-criticize-praise format, FWIW -- I noticed this while I was taking a required management course at the Mouse. Everyone knows what it is, so you wind up dissipating the value of the praise because it feels like something that you're just saying for the sake of the formula.
This comment is fairly irrelevant to the topic at hand.
Yup - that's the downside to any formula. I think it's more important, therefore, to understand the reasoning behind the formula so that you can play things a little more "authentically" and fluidly.
Something like "start soft and grow loud slowly, cuz if you start loud you can't tone it down later without looking weak or overplayed" is what my ex (a lawyer) used to say.
YES! Saying "this code is awful" in a code review is absolutely the wrong approach. What's your expected outcome? For the person who wrote it to say "oh yeah, silly me, I'll rewrite it so it's good"? They probably thought it was good, that's why they submitted it.
Don't make value judgements, point out what's wrong and how it causes problems
100% agree, assertive but kind is a wonderful skill and one which needs to be cultivated. My point is just that for whatever broad psychological reason, this seems to be a somewhat rare trait among very technically proficient people. It's the sort of personality trait that leads people to like and respect you.
I totally disagree that "assertive but kind" is a rare trait amongst the "technically proficient". Anecdotally, I know plenty who exhibit all of the above in spades.
The key is culture. Technically proficient people working within a community where "assertive but kind" is the norm tend to follow that norm.
I'll mention Doug Cutting as the ideal who melds technical proficiency, assertiveness, and kindness. I've often thought of Doug as a better role model for Open Source leadership than Linus Torvalds -- but it looks like after today I'll have an opportunity to reassess!
The core of the idea of someone being "passive-aggressive" is the idea that you never know where you stand with someone; if you're very clear about what things you're unhappy about and also what you're happy about, that's less of a concern.
For specific structures, I've often heard people involved in military leadership describe a formula of "praise-criticise-praise", which seems to be an attempt to run this balancing act on a personal level. "Whew, this was a big project you got done! This bit of code is absolutely bonkers. Everything other than that looks great to me, though."
Another technique is to make sure that people hear things from you not just when you're annoyed about something, but also when you're impressed. (Or, when you're not super impressed, talk up their areas of basic competence.) That gives you more leeway to criticize bluntly without impacting morale, and also makes people more eager to please. (Yes, a lot of leadership practices are manipulative as hell. Try to manipulate people without destroying their mental health and happiness please, that's super abusive and also counter-productive.)