The 10x developer is not a myth
brikis98.blogspot.com
brikis98.blogspot.com
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.
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 :)
[1] http://www.quanthockey.com/Distributions/CareerGoals.php [2] http://www.nhl.com/ice/player.htm?id=8447400 [3] http://www.nhl.com/ice/player.htm?id=8448782 [4] http://en.wikipedia.org/wiki/Men's_100_metres_world_record_p...
In that case, running 100m in 10 seconds rather can 20s could easily mean you can catch 10 times as many animals.
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)
>> 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.
* [1] http://www.joelonsoftware.com/articles/fog0000000069.html * [2] http://en.wikipedia.org/wiki/Software_testing#Economics
This is not to claim that Gretzky is not "The Greatest" but: 1.5x Mark Messier(center) 1.5x Gordie Howe(right wing) 1.5x Ron Francis (center) ...
When we consider p/g Gretzky has a 1.98 (great!) but the 250th on the list has .7 p/g, which is a 2.8x ratio.
10x is imo simply a silly label that doesn't actually apply IRL but is great at ego-stroking.
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.
Given that modern sport is an industry this is the sort of thing that team owners would also take into consideration.
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.
"Yeah it is!" "No it isn't!" "Yeah it is!" "No it isn't!"
I do like your other article about converting imperative list processing code into functional style, though. http://brikis98.blogspot.com/2013/05/10-recipes-for-turning-...
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.)