Bill Taylor has an article on HBR that introduces some very misleading ideas about developer effectiveness, which I’d like to address. Here I set out some reasons why excellent developers are actually disproportionately more effective than average developers, despite what Bill might lead us to think.
Last month, in an article in the New York Times on the ever-escalating “war for talent” in Silicon Valley, Facebook CEO Mark Zuckerberg made a passing comment that has become the entrepreneurial equivalent of a verbal tick — something that’s said all the time, almost without thinking.
“Someone who is exceptional in their role is not just a little better than someone who is pretty good,” he argued when asked why he was willing to pay $47 million to acquire FriendFeed, a price that translated to about $4 million per employee. “They are 100 times better.”
At first blush that does indeed sound like an awful lot of money. Bill goes on to draw comparisons with (and evidence from) football, ice hockey, and top performing Wall Street analysts. He concludes that environment or situation is also highly significant, and that great developers’ worth is significantly overstated. Undoubtedly environment does play a part, but his central claim remains that Silicon Valley employers are vastly overestimating the value of great developers, pointing to that Mark Zuckerberg quote and also to Marc Andreessen (“Five great programmers can completely outperform 1,000 mediocre programmers”).
He then hammers home his position with these stark rhetorical questions:
If you are building a company, would you prefer one standout person over one hundred pretty good people?
If you were launching a technology or developing a product, would you rather have five great engineers rather than 1,000 average engineers?
Hahahaha! Crazy! Who in their right mind would… hang on a minute. I know several really smart, digital people, with proven track records, who would have that preference. Hell, even I’d make that choice a lot of the time, and I wear a suit. I’d do that because I’ve had experience of working with such people: greater skill in software development really does pay off disproportionately.
By way of objective explanation, let me try to bust three myths which are probably held by the sceptics, even if unconsciously…
Myth 1: Writing software has a one-time effect
False. This is not like football. Scoring a goal has one-time effect — you score, your team win a point, and that’s that. Hopefully your team can build on that success, but the goal has no more impact beyond the moment at which it is scored.
By contrast, software has a lifespan than only just begins when it is written, and only ends when it is switched off or deleted. This means well-written software has a positive impact that continues: others understand it, can work with it more easily, and so it makes their work quicker and more reliable. Poorly written software is opaque, other developers avoid it and work round it due to fear or confusion; the system becomes more complicated, less reliable, more difficult to change and negatively impacts those who use it.
A better developer will more consistently write software better, which means the benefits multiply.
Undoubtedly writing software is creating something, but it is also creative in that it benefits greatly if the developer has imagination and intuition.
Consider the lower levels: with modern tools and frameworks there are myriad ways to tackle the same problem. A really great developer will make creative leaps, or introduce new ideas, that evade others and bring simplicity and elegance never previously imagined. The result? Faster delivery, greater flexibility, more reliability — effects that (as discussed above) ripple far beyond the initial point of delivery.
And consider the higher levels: a really engaged developer will see new opportunities — for features or entire lines of business — because they see links and alignments between the system and other technologies that just aren’t visible to others.
Myths 3: Developers are there to do what you tell them
“Do this thing this way” will probably get you want you think you want, and will almost certainly not get you what you really want.
Good developers will work with you to find out what you really want. They will quiz you on your real motivations, and ask “why?” a lot. And what will often happen is that they end up doing something utterly different to what you originally anticipated, which allows you to do what you want more directly and more completely. Sometimes it requires writing no software at all, and simply pointing you in the direction of something that already exists. This is someone who has leapt beyond “doing the thing right” and is addressing the issue of “doing the right thing”.
By making these myths explicit I hope I’ve shown that stronger developer produces disproportionately greater benefit than one who is not so strong.
Some truths remain
Of course there are some truths in Bill Taylor’s article, but I don’t think they’re at all controversial. Yes, of course some developers are overrated (and some are underrated). Yes, of course there is more to long term performance than individual excellence. Yes, of course situation impacts performance. Yes, of course your colleagues influence your effectiveness.
And maybe Mark Zuckerberg paid too much for FriendFeed. But maybe not that much more. His “100 times better” comment should not be taken literally — it’s a rhetorical flourish for the media, not a formula in a spreadsheet. If he’s paying $4m per employee then it’s not a 100x valuation on each: there were 12 employees, and we can guess they were each earning $80k to $100k, which makes that a 50x valuation on each individual. Reduce it further by recognising that he’s bought the whole team, which (we have acknowledged) does influence each individual’s effectiveness. Reduce it further by any number of other factors: scarcity, preventing them going to a competitor or impacting Facebook, money to outside investors, and so on. I reckon that’s roughly a 20-30x valuation on each individual. Maybe a bit high, maybe not, but far from the flashy “100 times” claim, while still recognising that great developers are disproportionately more effective than less great ones.
There are a couple of other truths to mention, too.
One is that, of course, sometimes you’re dealing with something really, really big — when it just won’t be delivered with five engineers (however outstanding) and you do need nearer 1,000. The other is that “five great engineers [or] 1,000 average engineers” is a false dichotomy. Mark Zuckerberg understands that, too: you can expect him to have 1,000 great ones.