Why Bill Taylor is wrong about great hackers
I've just been reading Bill Taylor's article titled 'Great people are overrated' over at the Harvard Business Review's blogs section where he critiques the increasing tendency of companies like Facebook to buy other companies, kill their products and absorb their people just so they can get hold of top talent. He tries to make his point by drawing analogies between a software team and ice hockey teams, basketball teams, football teams and wall street analysts (in that order). He then uses these analogies to draw the following conclusion:
Most of business life isn't really a choice between one great person and 100 pretty good people, but if that is the choice, I'm not sure I'd make the same choice as Mark Zuckerberg — especially if those 100 pretty good people work great as a team.
This isn't the first time I've heard the "Five great programmers can completely outperform 1,000 mediocre programmers" quote questioned, and as with most things in life, sweeping generalisations are wrong at least some of the time. However, Bill Taylor completely fails to take into account some basic truths about software teams (and teams in general) while making his argument. He's wrong in his conclusion because he's made a simple mistake - there aren't two kinds of developers in our business (good and great), there are three.
Lets talk about these three types by giving them labels for clarity and then briefly describing their behaviour patterns:
- Type A - Great developer. Wants to do a great job, self-motivated and driven to learn and get better. Stellar performer.
- Type B - Good developer. Wants to do a good job, is willing to improve, but only learns new things if taught, typically by a Type A.
- Type C - Uncaring developer. Wants to get the job done (for the most basic definition of 'done') with as little effort as possible and go home and 'do something interesting' that does not involve improving their work related skills.
Bill starts the article discussing a quote comparing Type As with Type Cs; he then starts conflating Type Bs with Type Cs which is when he starts to go off-track.
Once we start distinguishing between Type B and C, it isn't hard to see why any number of Type C equivalent football players would still lose to a small number of Type A and B players. Basically a Type C sportsperson would tell their coach that they didn't want to practice because 'they want a life.' A team of 1000 Type Cs has a high likelihood of failing when working on relatively complex or highly fluid problems simply becasue they don't care enough to do a good job and all this even before we factor in the waste created by large software teams. Somewhat orthogonally, this behaviour pattern displayed by Type Cs was what I discussed a few months ago in my article 'Is expecting expertise unreasonable?'
Taylor makes a second flawed assumption later in his article when he says Zuckerberg is making 'a choice between one great person and 100 pretty good people.' He isn't. Let me provide some context before I explain myself further. The typical distribution of professional developers between A, B and C in my subjective experience is 1:10:100 in the first world; in India and other emerging economies where jobs are hard to come by and IT employees make good money, I'd say that ratio would look more like 1:20:500 simply because more people are studying CS without really being interested because it's a safe option. Most large firms developer populations reflect these ratios; some few, especially those that do a lot of low-end maintanence work will tend to have more Type Cs.
Now, Zuckerberg already has thousands of employees and from what I know of top technology companies, they're all Type As and Bs. For technically demanding projects, a team that manages A:B::1:5 is a good structure, but hard to set up because you're already bucking the external demographic by increasing the A:B ratio. This is over and above the initial difficulty faced and effort expended in trying to filter out Type Cs in a job market that is flooded with them.
This is what Zuckerberg (and indeed, all of us that are working to create teams to do quality work) are looking to do - increase the A:B ratio by hiring Type As where we can get them and having them work with (and consequently improve the capability of) Type Bs, while consistently filtering out the noise that are the Type Cs. None of us are looking for lone wolfs - we're simply looking to create balanced teams in a difficult market. So, finally, let me answer the two questions at the heart of Bill Taylor's article with the appropriate shades of grey coloured in:
If you are building a company, would you prefer one standout person over one hundred pretty good people?
We'd take the hundred Type Bs over the one Type A, though we'd then be looking to hire ten to twenty Type As to strengthen the team.
If you were launching a technology or developing a product, would you rather have five great engineers rather than 1,000 average engineers?
We'd take the five over the thousand any day. Looking for a recent practical examples of how a few smart people can make a difference? How about Color vs. Instagram.