I’m convinced that having only A players on a team is neither possible nor desirable. Just imagine you would assign rock stars developers like Anders Hejlsberg, Linus Torvalds, and James Gosling to a project. What do you think the outcome would be? I wouldn’t be surprised to find them all dead within 24 hours…

You certainly do need A players. They are usually full of energy and highly creative. But in my experience, they often lack persistence and they get bored easily when they are assigned mundane work, especially over an extended period of time. Just like athletes permanently want to put their muscles to the test, A-level coders permanently want to challenge their brains.

Unfortunately, they don’t always use their brains to invent and implement awesome features that customers are willing to pay for. Instead they love to try out new technologies and spend countless hours tinkering with questionable language features.

Very often, these alpha coders have strong opinions, behave like prima donnas and are — let’s face it — not exactly what you would call great team players.

On a real-world project, you need B players, developers who don’t shun away from grunt work. Even if they are not brilliant all the time, their main strength is getting things done. Instead of just conceptualizing features, they actually implement them — in good-enough quality. They rarely gold-plate or over-engineer; instead, they live by the Extreme Programming maxim “The simplest design that could possibly work”. They are what Joel Spolsky calls “Duct Tape Programmers”.

To be successful as a company, you will need both, A players and even more B players. Use A players as lead developers, to generate ideas and to develop prototypes; employ steady performing B players to ensure that your products actually ship.