"Moneycode" not "Developernomics": My Hunch as to the Distribution of Software Excellence
Part 2: Why 10x Ticks Me Off
If this subject’s of interest to you, you might enjoy (or despise) the column on the subject I’ve been writing for SD Times for the past decade.
In order to understand my position on why I don't believe in 10x Superprogrammers, it may help to show my hunch as to how productivity is distributed in the software development world. I think that it is sadly the case that there are bad programmers ranging from utterly incompetent to simply inept and that they form a long tail of widely variant "below median" productivity. But I think that half of all professional programmers are quite good and that a median programmer is a good bit better than average. That is, that the bad professional programmers drag down the average.
In schematic form, my hunch is that the distribution is something like this:
Those who are highly productive face a headwind: increasing complexity, the frustrations of human communication, the limits of our tools, etc. All sorts of things, some of which are accidental, but some of which I believe are fundamental. It may be that at the tail of the distribution, there are some who combine technical genius with interpersonal genius with organizational genius and, I dunno', if they decide not to become Evil Geniuses, maybe they stay in software. But I do contend that such folk are vanishingly rare and one ought not base one's company's strategy on finding them.
I believe that the realistically-findable excellent programmers are perhaps 2-3x as productive as median programmers. I don't see that view as dismissive of their abilities in any way; a running back need not score 10x the touchdowns of a median NFL running back to be considered great, nor a batter to bat in 10x the median number of runners-on-base to be a star.
I feel that when an excellent programmer is felt to be much better than that multiple, it's almost certainly context-sensitive. It's highly likely that they are doing, in their excellent way, a task that they are familiar with: they are working with a codebase they've mastered, they are using an architectural pattern they've implemented before, etc.
Just as the Superprogrammer 10x distribution implies certain things for industry, so too does this distribution:
If developer productivity is Big O(context), then today's average programmer might be tomorrow's excellent programmer
Ditto for team productivity
If excellent productivity is a fairly small multiple of median productivity, then one's hiring should focus on "above median" not "superstar"
If excellent productivity is context-sensitive and a fairly small multiple, investing in changing near-median developers into excellent developers is much more cost-effective than seeking Superprogrammers and paying them premiums
If there's a long tail of below-median developers, the personnel strategy that one must embrace is ensuring that below-median developers are removed from the team
Although a circumstantial argument, this model fits better the industry I see. I think of it as the "Moneyball" model of software development excellence.