Hacker News new | ask | show | jobs
by tonecluster 3852 days ago
I have also found that the flatness fails quickly when the loudest, most aggressive, least-respectful-of-authority, best-dev-in-the-room type takes the (de-facto) leadership position, bullying others who challenge him. Schoolyard stuff, to be sure, and since most people don't like conflict for extended periods of time, you end up with a local "leader" (scare quotes intended) despite the intention to remain flat. It's the "rock star dev who's also a jerk", and eventually it creates chaos.
2 comments

Sounds like "The Tyranny of Structurelessness"
I actually think that's where flatness works best.

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.

Really? "Rock star dev who's also a jerk" is typically driven by ego, whereas the actual leader should be driven by the needs of the business and the needs of the customer, and be talented at balancing the two. He should also be a good consensus-builder and emotionally capable, which this guy is by definition not.

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.

I challenge you to find actual leaders in the past, ones we use as examples, who would fit your description of "an actual leader".

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.

"isn't the worst" is a pretty low bar.

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.

But why do you assume that "rockstar dev who's being a jerk" means a despotic leader who only screams at people? I read it as a leader who is a) very opinionated, b) doesn't tolerate bullshit, c) may express himself in an offensive way. You could say that e.g. Patton was a rock-star jerk of military warfare, but it didn't mean he screamed at everyone all the time.

> 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.

They meant catastrophic to your business, not catastrophic in some larger sense.
Eric Schmidt at Google was pretty close to that description. He made decisions effectively, but he also listened extensively to input, respected his employees, and would build consensus rather than shouting loudly.
"If you want to build a ship, don't drum up people to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea."
It works if you build a ship, little worse if you have to carve out 10 000 bricks from stone slabs before the end of the week. Working on your passion is something not many of us can experience, and is absolutely not the norm on the job market, even in tech.
I happen to agree with you, in this scenario the leader is someone who leads, not someone who is given a title.

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.

I hate the term rock star dev because it brings up an image of a node.js guy using MongoDB as an ACID data store and writing his own unknownium.js or something like that - if the rest of your team is impressed by that - you're in deep shit anyway.

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.

At my company the "rock star devs" are the probably-autistic guys who knows the answer to everyone's archaic legacy and interoperability questions, are the only guys who actually know assembly, catch the subtle mistakes at code review long before anyone else sees them coming, force us to move technologies when it is absolutely necessary and no sooner, and their code makes up roughly half of the code-base.

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've met (only a few) devs who are as you describe, but instead of socially incompetent assholes they were committed to humility, cooperation, and professionalism in the best sense of the word. They were better leaders than what you describe.

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.

> So you'll get "impressive" code that leverages sexy technologies that is also late, buggy, and not what the customer actually needs.

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.

The rock star dev is the one who thinks he's the best dev you have. Sometimes they overlap, but mostly they don't.
So your definition of the "rock star dev" is the guy who isn't the rock star dev, but thinks he is? I don't think that's how language works.
> The rock star dev is the one who thinks he's the best dev you have.

No, that isn't what it means. Your actual best dev is your rock star, that's the intended meaning of the phrase.

> a flat system ends up being a battle for leadership which puts the smart and commanding at the top

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.

> 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.

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.

I see a rock star dev as the guy that seems the best from the outside: most likely because he completes tasks fast at the expense of being maintainable, documented, or understood by the rest of the team. The rock star must be smart because they're using a ton of technologies that nobody else understands. But do you really want that?

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.

> I see a rock star dev as the guy that seems the best from the outside: most likely because he completes tasks fast at the expense of being maintainable, documented, or understood by the rest of the team.

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.

> That's not a rock-star, it's not what the term means.

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.

While I have no experience with an organization that is officially flat, I have plenty of experience with large dev teams with indifferent managers that effectively created a flat organization.

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).

Maybe it's worth distinguishing between developers who are opinionated about how something should be built because they care about the process/results, versus those who are self-promoting with whatever cause-du-jour is convenient.
Where I work we have a role called "project anchor". It comes with no extra pay, no special perks, no particular enumerated powers.

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.

Is there more info around about this style of project management? My google-foo is not getting any hits
I work for Pivotal Labs. Our starting point is XP for engineering, Lean for design and product management. Daily standup, weekly IPM, weekly retro.

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.

> a flat system ends up being a battle for leadership which puts the smart and commanding at the top

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.

Jerks aren't leaders. Tyrants at best... Usually just insecure people.