Wow, it’s been a really long time since I’ve posted anything. Booked has been keeping me very busy, but I’m going to make an attempt to publish more posts this year.
I was out to dinner with some friends the other night. These are guys that I worked with in a past life and some of the best teammates I’ve ever had, so I have a ton of respect for their opinions.
The topic of “rockstar” developers came up – I’m not sure how, but we’re a bunch of software developers so I suppose it was inevitable. The question was around if rockstar developers are good for a team.
Throughout my career I’ve heard leaders bellow from the towers – “[insert name here] is a rockstar! We need to hire more rockstars like [repeated name here].” Obviously, if we had a team of rockstars we’d build incredible applications so quickly and such high quality that our competition could never catch us, right?
Look, I’ve never met a literal rock star, but I’ve watched my fair share of VH1’s Behind the Music. Stars want to be stars. Maybe they don’t even want to be stars, I don’t know, but they seem to gravitate towards being the center of attention. There is an air of arrogance and ego, literally putting themselves ahead of the rest of the band.
Rock bands usually only have one front man – one star. Many frontmen have kept playing over the years, using the same band name but rotating through an assortment of supplemental musicians. To them it’s not about the group – it’s about themselves.
How good would a song be if you had 5 people shredding sick guitar solos at the same time? I mean, I’d watch it, but it would be a disaster and hardly resemble a coherent song. Or you’d have a bunch of people jockeying for the lead role. Here’s what happens when you put a bunch of rockstars on the same team. Don’t actually watch that – it’s not good.
Contrast that with a jazz band. Typically, everyone shines at some point, but while one musician is delivering their solo, the rest of the group is supporting them.
It’s a similar situation on most sports teams. There may be one person that scores most of the points most of the time, but teams rarely win having a single, dominating star. Even the best person on a sports team has to support, coach and mentor other people on the team if they want to succeed as a group. Jordan needed Luc Longley for the whole team to succeed.
I’ve been interviewing and hiring developers for a long time and spoken with more amazingly talented people than I can count. People who could program circles around me. But software development is about so much more than hands-on-the-keyboard development. Software development requires differing opinions, reciprocal coaching, and an ability to check your ego at the door.
A team full of big egos will spend more time debating theoretical performance of an algorithm than actually building a simple solution that solves the problem.
A team of passionate, competent developers who care about getting a working solution in front of customers will naturally select a solution that works. That solution may not be the most technically impressive, but it will solve the problem. And solve it correctly.
While the team of rockstars is fighting with each other about which framework is best for implementing a complex distributed messaging solution in order to save form data, a team of passionate, competent developers will have built an entire application that does everything needed. No more, no less.
A team full of big egos is truly a recipe for a toxic team. These types of people tend to believe that their opinions are always correct. These teams will bicker and argue incessantly over inconsequential details.
But what about a single rockstar? Surely you need that person to carry the rest of the team.
A team with a single rockstar will silence the more reserved people on the team, which kills great ideas before they are ever introduced. In my experience, the rockstars rarely pair program and rarely coach. They rarely write unit tests, let alone practice test driven development (if their initial instincts always right then the tests just slow them down!). They create a mirage of short term speed, hiding the fact quality is slipping and most of the team doesn’t know what’s going on.
A team of passionate, competent developers will support each other. Their ego doesn’t blind them to the fact that they are human and will make mistakes. They will find simple solutions. They will outperform a team of rockstars every time. This is the team I want.
What do you think? Have you worked on a team of “rockstars”? How did it go?