My problem with the notion of the 10x developer is that I've never seen a reasonable study into what a 1x developer is. An order of magnitude gap in productivity between the best and the worst is a massive understatement. I've worked with programmers with net-negative or zero productivity, and being ten times more productive than that is trivial. Thus, the real question is whether or not the people who are a tenth as productive as the very best developers happen to be average, and to answer that we'd first need a much better idea of what the "average" developer is.
There's a bit of a difference between science, where you are trying to find insight on unanswered questions, and engineering, where the problem space is usually well understood. In the former a single brilliant individual can have a huge impact, whereas in engineering it is usually teams that do so. My problem with the "rockstar developer" idea is not so much that it is incorrect, it is that it places the emphasis on the individual over the team, which is the real unit of productivity.
"Star" athletes are an interesting example. Are they 10x better than the average professional athlete? Well no, probably not. Pick whichever objective statistical measure you like, and you'll probably find that the top five players in the world are maybe 2-3x better than the average pro.
Similarly, it's trivial to find thousands of guitarists on YouTube with enormous technical ability, who will never become famous.
I'd suggest that the top 10-20% of developers are actually quite good, and being obsessed with the top 0.01% isn't very useful.
First of all, some star athletes are statistically far more than 10x better than the average. For example, the average NHL player scores less than 50 goals in his career [1] whereas Gretzky scored 894 [2] and Mario Lemieux scored 690 [3]. And that doesn't even count their assists, leadership, defense, name recognition (bringing in fans), etc. And I'm not even comparing these guys to other pro hockey players, such as the minor leagues and leagues outside of the US.
However, not all sports have "points" that scale the same way, so the 10x number is not as easy to apply. For example, Usain Bolt is not literally 10 times faster than the average professional sprinter; his best 100m is 9.58 [4], where as any moderately fit male can easily hit sub 20 seconds, and I believe any professional sprinter will go under 11 seconds. Nevertheless, I'd guess that in the 100m sprint, a difference of 1 or 2 seconds represents an order of magnitude (or two) difference in ability, even if it's only 10-20% of the time. What kind of odds would you give him in a race against an "average professional"? 10:1? 100:1? 1000:1? Usain is roughly as far above other pro sprinters as Gretzky and Lemieux were against other pro hockey players.
I'd also mention that "fame" is a bit of an x-factor. The world is not a perfect meritocracy and there is so much luck and so many external factors that go into being famous that it's not necessarily true that only famous scientists/musicians/writers are the only ones who are 10x. Of course, the famous folks are the only ones I can reasonably use as examples, and fame likely correlates with talent, though that talent may just be at being famous :)
> the average NHL player scores less than 50 goals in his career [1] whereas Gretzky scored 894 [2] and Mario Lemieux scored 690 [3]
But what are the numbers per season? If Gretzky had a career ending injury at the end of his first season he still would have been better than a mediocre player, even though an average player could play for years and rack up more in a career than the best could in a single season. My point is did players like Gretzky and Lemieux score ten times as many goals per season than the average player?
I'll assume I'm an average engineer (since statistically speaking this is the most likely case), it blows my mind to think there's a large number of people out there who in just a few hours could knock out everything I spent all of last week on. (I'm not saying 10x devs don't exist, I just think they are very few and far between, the NHL afterall has only had one Gretzky in its entire history)
Actually, in the case of Gretzky and Lemieux, I believe they did average ~10x more points (and other contributions) per season than the average player. Also, don't forget that the NHL is just the best of the best; there are many hockey players that are "pros" but never make it to the NHL. When you factor them in, players like Gretzky may be several orders of magnitude better than average.
>> it blows my mind to think there's a large number of people out there who in just a few hours could knock out everything I spent all of last week on.
First of all, as I wrote in the post, 10x programmers are rare. There isn't a "large number" of them.
Second, it's not about producing more lines of code per minute or per week. It's about producing the maximum value (for lack of a better word) in a time period by making good decisions.
I'm not a 10x programmer and the results on my own work week are pretty obvious: when I look at it closely, I realize that I spend a lot of time dealing previous mistakes. I lose days because I made a solution that's too tightly coupled and it's hard to adapt the code to a new situation; I didn't add enough tests and waste lots of time fixing regressions; I didn't add enough documentation and can't remember why I made certain decisions; I've created designs that don't scale and need to be replaced entirely; and so on. Since it's harder to read code than to write it[1] and since the cost of fixing defects increases dramatically later in the software process[2], these bad decisions eat up an enormous amount of time.
However, as I learn more, I've noticed that I spend a much higher proportion of my time solving the "real" business problem instead of dealing with previous mistakes. In other words, I'm becoming dramatically more productive than I used to be, not because I'm typing faster, but because I'm avoiding/reducing entire branches of work that used to eat up my time.
These sorts of effects multiply: for the 10x programmer, the gain in productivity can be huge and they will be able to get an order of magnitude more done than the average coder.
250th on the list of all time NHLers? That's still a tiny percentage of all players that have every played (~1500/year, obviously with some overlap from year to year). And that's only counting those in the NHL; there are many hockey "pros" who could only dream of making the NHL. Factor them in and the Gretzky performance is even more remarkable.
And you're only looking at points scored. How does a star's leadership affect their team? How did their mere presence affect the other team's entire strategy? How many seats does a star fill in the stadium every time they played? How many jerseys and other merchandise did they sell? Hockey, like software, is a business and I'd be that someone like Gretzky brings in an order of magnitude more money than an "average" hockey pro.
Denying the possibility that there could be someone 10x better than you is the real ego stroking. I know there are developers an order of magnitude better than me. I find that inspiring, as it gives me something to work for every day.
Just saying, if 250th of all-time are about half/a third the p/g of Gretzky, I find the 10x label lacking. Comparing him via pts scored to goalies and defense is questionable at best.
Re-read my reply above. You're comparing a fraction of Gretzky's contribution to a fraction of all the professional hockey players, even if you only look at forwards. Even then, he ends up 2-3x better than this already elite group.
Star athletes may not be 10x better at their sport than other players in the same league, but they are probably (at least) 10x better at bringing in the fans and money for their sport and club than other players.
Given that modern sport is an industry this is the sort of thing that team owners would also take into consideration.
As I have pointed out before I have seen on first hand the difference between someone who is great and someone who is filling out the blanks. This is from a few years ago:
The "10x" consultant would delete hundreds of lines of code and keep the functionality. He would rewrite things and make them simpler. And in between he was helping the rest of us, explain architecture and generally make sure we were able to follow.
On the other hand I have seen other consultants, who were definitely smart[1], who would still do things like:
Use tiles (a templating framework for java/struts) to implement authorization. (Cleaning up this fell on me. : )
Add style tags to the body of the page (once the designer found and fixed this it solved all the perceived performance problems we had.)
[1]: If you had seen that code you would have agreed. It was some kind of weird artwork :-/ It worked perfect but every little change took full concentration, a significant amount of time and added to templates spanning hundreds of loc.
One of the skills, I think, of being a 10x developer is picking the right tool for the job--picking a language and level of abstraction that will as cleanly and simply solve the task at hand.
It takes a good amount of experience and knowledge to know when to, for example, prefer assembly to C to C++ to Bash to Ruby to Prolog--not only that experience and knowledge, but the wisdom to see how that choice affects the other people on your team or future people maintaining the code and environment.
(This is an area in which I wish I was further developed.)