Rather than being whoever can kiss the most ass and not upset the boss (the usual system), a flat system ends up being a battle for leadership which puts the smart and commanding at the top. "Rock star dev who's also a jerk" is who should be the boss.
So you'll get "impressive" code that leverages sexy technologies that is also late, buggy, and not what the customer actually needs. And on top of it all you'll have a demoralized drama-prone team.
A leader is someone who can get people to get shit done. Usually it means convincing them that what the leader wants done is the thing to be done. Consensus-building can be done in many different way - in particular, a very good way is to just arbitrarily announce what the consensus is. In most fields, and in pretty much 99% of business, almost decision is better than prolonged periods of not knowing what to do. And if a leader is competent in the field in question, his arbitrary decisions will usually be good.
So as long as you can align their ego with business/customer needs, a "rock star dev who's also a jerk" isn't the worst choice for a leader.
As for your challenge, just about anyone I have worked for and respected. You don't know them, so you can use a No True Scotsman defense, I guess. That won't change that ego/jerkiness is completely unnecessary.
Bad decisions are catastropic in tech. That's a driving force for things like Agile. Running off and coding or building things without a plan is a recipe for disaster.
I can make you do something by screaming at you. That works to get you up over that hill to attack the pillbox. Doesn't work so well in tech where you will just quit.
> Bad decisions are catastropic in tech.
No, they're not. What's the worst that could happen? Your SaaS cats-on-Instagram-to-save-the-world startup will flop. Or you won't deliver some product that's being delivered by 2000 identical companies around the world. Or some people won't get to see some annoying ads.
We're not talking medicine or space travel here. If we were, we'd be focusing on whether a leader is effective, not whether he's a nice person.
The downside is that their goals may not align well with the company.
pros and cons to everything, but I think it's a mistake to dismiss the idea that the person who stepped up, took the responsibility, and was able to get others to follow isn't the person who should be the leader.
But I've noticed that in IT/programming people recognize and respect each other on skill and also form "respect based hierarchy" implicitly more than usual. Not suggesting that IT/programming is utopian meritocracy or anything just that from my impressions it's much more meritocratic than other professions I've worked in/by (print, news editing, management) - so it's more likely you get positive results with such open structure.
What's more, they are complete assholes. And yet, everyone under them respects them and marches to their drumbeat. Their teams get real work done.
If someone thinks there is a better leader than that I'm not sure who the hell they're talking about.
I actually don't get where this stereotype that the best in our field are inevitably jerks comes from. If you're smart enough to rise to the top engineering-wise, you're probably also smart enough to realize that ours is a collaborative field, no one is right 100% of the time, and that you catch more flies with honey than vinegar.
The rock star dev is by definition the best dev you have, so no you'll the best code you could from your team since the best guy would be spearheading it.
No, that isn't what it means. Your actual best dev is your rock star, that's the intended meaning of the phrase.
The problem is you've described someone entirely different, here, IMO.
A smart leader isn't the loudest. Because they know when to listen to their subordinates, and don't need to be the loudest to command attention when they do speak.
They don't need to be a jerk, or rely on bullying - for this is morale destroying counterproductive pettiness, and again unnecessary when it comes to commanding attention and respect. It might not chase away all of your talent, but it will chase away some of it, who will leave for greener pastures where they're respected.
In my experience, the "Rock star dev who's also a jerk" was both the worst leader and the worst dev. They wrote a bunch of short sighted hacks - making them "productive" "rock stars" - that constantly broke things that other people had to fix. They were quick to assume their half baked ideas of how to proceed were the one true way - and that you were an idiot for thinking otherwise - and quick to dismiss any and all concerns about things they overlooked in their plans. It was bad enough that the best way to get anything done ended up being to hide it from the "rock star dev who's also a jerk". This is the antithesis of what good leadership should result in. That they were too busy doing development to do any real leadership was perhaps a blessing.
That's not to say the ideal leader can't ever be loud, or stern, or a dev. These can all be useful qualities at times. But they're not "a jerk", and may find they have less time available to spend on development in response to the burdens of leadership.
Those are not rock star devs, those are just shitty devs. The term rock star means your best devs, not your worst, by definition. If you're applying the label to shitty devs, you've missed the point of the term. A rock star is someone who's awesome, that's the entire point of the slang.
Part of the disagreement is surely semantics: if you want to define "rock star" as the best, then I guess they're the best (however you measure that).
But being a jerk is not semantics. If that works for your organization, great. But I don't want to have to deal with that.
That's not a rock-star, it's not what the term means.
As for your main point, most people don't want to deal with jerks, so what? That doesn't mean anything when it comes to whether the jerk is a good leader or not. Lots of leaders are jerks, it's rather common to people who feel "they should be in charge".
Leaders are those who take charge, and lead. Naturally they find ways to take charge of a leaderless group and while you want to say they shouldn't be the leader, they are by virtue of being the only leader there. The smart guy you think would make a better leader, generally doesn't want to be leader and will let the jerk take charge; that actually disqualifies them as good leaders because a good leader wouldn't do that.
How are we defining "your best devs" then, exactly, if "rock star who's also a jerk" isn't a contradiction?
> As for your main point, most people don't want to deal with jerks, so what? That doesn't mean anything when it comes to whether the jerk is a good leader or not.
Do you not see the inherit conflict between being "a good leader" and "driving away the talent on your team"? If your leader is toxic enough that everyone would rather quit than work with them, how are they supposed to function as a leader? There's going to be nobody left to lead!
Let's say they're not quite that toxic. Instead, they're merely driving down morale, merely making everyone want to think about anything but work, stressing them out. Will these people be bringing their A game? And doing their best work? And communicating effectively with leadership so the correct work gets done, instead of avoiding the jerk as much as possible?
Let's say they're not quite that toxic. Instead, they just forgot to bring doughnuts into work on your birthday. Are they actually a jerk?
> Naturally they find ways to take charge of a leaderless group
No such thing. There may be no official leader, or no clear singular leader, but if nothing else people will always lead themselves. Anyone displacing that leadership must provide more value than what exists for their leadership to be a net positive. That may be a fairly low bar at times, but sufficiently toxic individuals won't clear it - as they'll be removing value instead.
> The smart guy you think would make a better leader, generally doesn't want to be leader and will let the jerk take charge; that actually disqualifies them as good leaders because a good leader wouldn't do that.
Well, I'd agree it isn't good leadership. I've seen people learn from this mistake.
No one said toxic. They said jerk.
I quite like working with a bunch of opinionated assholes that are willing to argue to the bottom of something, and have no personal investment in me liking them.
The great thing about jerks is that they don't take it personally. When you see the jerk the next day, you're still at square one. You will always be at square one.
Not friends, not enemies, just coworkers doing your job -- willing to step on each others toes to get things done the right way.
I've worked at places where everyone is nice. It's hell. "Nice" people are bad: morally, ethically, and for the bottom line.
Being a jerk is toxic. Being an asshole is toxic. If they're not toxic, why are you calling them these things?
> I quite like working with a bunch of opinionated assholes that are willing to argue to the bottom of something, and have no personal investment in me liking them.
I like working with opinionated people that are willing to argue to the bottom of something. So much so that I ended up following the most argumentative person from my previous job to my current one.
None of that required them to be an asshole. We have a boardgames night every couple of weeks now.
> The great thing about jerks is that they don't take it personally.
Jerks tend to make it personal. That's one of the main reasons they tend to be jerks!
> Not friends, not enemies, just coworkers doing your job
I'm entirely fine with professional relationships. Professional doesn't imply jerk.
> willing to step on each others toes to get things done the right way.
Sure. But a professional can do this without finding their cleats and stomping as hard as they can.
> I've worked at places where everyone is nice. It's hell. "Nice" people are bad: morally, ethically, and for the bottom line.
Your inconsistent air quotes betray the problem here, I think.
People who are bad morally and ethically are not nice people. They are jerks. They are assholes. That some of them are grinfucking everyone to appear nice doesn't make them nice.
And, conversely, the fact that some people aren't grinfucking you doesn't make them jerks. That they're willing to debate something honestly with you doesn't make them an asshole. That they're trying to do things right - and save your team from future stress, crunch, or whatever other consequences would come from doing things wrong - sounds like they're trying to do everyone a favor. If anything, they sound nice.
-------
EDIT: Ultimately, I wonder how much of this thread is you saying...
Rock star "jerks"
And me hearing...
"Rock star" jerks
Your edit is correct.
You don't seem to realize you're talking to more than one person.
In my experience, it's rare that the most "commanding" dev is also one of the more talented devs. If anything, my experience is the opposite: the stronger personalities are great examples of the Dunning-Kruger effect, while the best devs have more passive personalities (or just don't care enough to try to commandeer leadership of the team).
It's not like "kissing the most ass" is limited to kissing the ass of upper management. The same types that are exceptional at kissing the ass of management can also be great at playing Lord of the Flies with development teams (forming alliances, turning devs against eachother). It makes for a terrible work environment.
I much prefer strong hierarchical management, assuming management is competent enough to promote those with both development expertise and the people skills necessary for management (consensus building, mentorship, clarity of purpose, motivating people, etc).
The anchor does not determine product features or direction, that's the product manager's role. The anchor doesn't hire, fire, reward or punish other engineers, that's the engineering manager's role.
The anchor isn't necessarily the strongest engineer on the project, either.
Anchors are mostly there to break ties and hold project context over a longer time frame. A founding anchor has a strong influence on the project's technical direction, but it's not a fiat power. You still need to discuss it with your peers.
And it works pretty well, because the only reason you get asked to anchor is due to the feedback of your peers.
Then again, our hiring process has a notorious bias against rockstar jerks.
Lots of people know us mostly for Pivotal Tracker, which is built to support our daily and weekly workflow.
On any given engagement, we always argue for a minimum team of one product manager, one designer, two engineers. We used to be a purely engineering shop, but (before my time) the thinking grew to include all three roles in each project. Previously anchors were also de facto product managers, which is a tricky and exhausting doubling-up of duties.
When this happens now, we call it "super-anchoring" and it's seen as a project smell. I've had to act as a super-anchor once or twice; it's how I learnt that having a separate product management role is essential to a healthy project.
I like how we work. As an engineer I trust product managers to worry about what to build next and why, I trust designers to be across the user's needs and UX flow and conceptualisation. They trust me to pick a simple, robust engineering solution without gold-plating.
Anyone can give input, of course. I've had PMs make great engineering suggestions. I've seen engineers with UX breakthroughs. Engineers in an IPM ask all sorts of fiddly questions that will typically lead to product changes.
We ultimately own our own roles and get final say on them. It works because it's built on mutual trust and respect.
It ends up putting the person who's the least bother in that role compared to all the other roles they could occupy in charge. People you go along with while looking for another job, because at the end of the day it's not your company and it's not worth the enormous emotional cost of fighting them.