The author has not ever worked with the truly 10x more productive programmers. Most people do not get the chance to work with these programmers. They do get paid in proportion to their productivity. There are so many horrible programmers that you can be mediocre and be 10x more productive than the guy next to you. Thus you think you're in the 10x crew. But you really aren't. It's not because you're really that good. It's because the guy next to you is really that bad.
I thought I was pretty good until I worked with the guy who made Winamp. It took me a couple weeks to make some enhancements to their add-ons site. It took him a couple weeks to write his own version of Pro Tools. I made 80 thousand dollars. He made 80 million dollars.
I think this comparison is a bit unfair. The guy who made Winamp had significant experience in creating audio related programs. Winamp had a lot of audio tweaking/editing-like features also. By taking his investment of knowledge about audio programming, he saved a significant amount of time in recreating something similar with his pro tools v0.0.1. I wouldn't be surprised if he copied a good chunk of code from winamp too.
Also he was starting from square one. It might take me a few weeks to make enhancements to some add on website I'm unfamiliar with using clunky web tech fighting with a badly architectured framework, while it would take me a day to make the same thing with a concise and elegant API starting from scratch. Later on I might become faster in changing the website.
It's like a phd physicist talking about how that math phd clobbered him in an analytics course, when really he just had more invested.
Or as the article says: "“Hmm. I think I’ve seen something like this before."
Justin Frankel is the doubly rare combination of being extremely skilled at programming and being able to leverage those skills to make tons of money. Most uber-programmers aren't so rich.
It might be true that you are only 10 times better than the guy sitting next to you because he is 10 times worse than you, but this is something of a red herring. There are plenty of terrible programmers out there who are 10 times worse than me. Do I get paid 10x more than them? Not even close. This article is more about why a 10x productivity increase does not equate to a 10x pay increase than it is about the possible existence of programmers who are 100s, 1000s, or 10,000s times better than the worst possible programmer.
Try time the clerks in your local supermarket, I am sure you can find one which is twice as fast as the slowest, should he or she get twice the salary?
When it comes to programming there are relatively many bad programmers hired (on a base salary). Maybe the good programmers are underpaid, but definitely the bad programmers are overpaid.
Anecdotal evidence also suggests that programmers are generally bad at negotiating their own salary.
"There are so many horrible programmers that you can be mediocre and be 10x more productive than the guy next to you. Thus you think you're in the 10x crew. But you really aren't. It's not because you're really that good. It's because the guy next to you is really that bad."
So someone who is 10x more productive then their coworker isn't actually 10x more productive because their coworker is so horrible? Isn't "10x more productive" an explicit measure of productivity relative to the guy(s) next to you?
A small sample size would just imply greater deviation. There's no reason to assume the programmers outside your sample would be x10 better than those in your sample.
That only works when you can assume your sample is representative of the global population. Since people are not evenly distributed according to their abilities, that assumption will not hold.
I remember using Gnutella back in the day. It was horribly buggy and slow. Maybe Frankel didn't write that one or maybe being satisfying things half-working was the secret to x100 productivity.
I used Gnutella too. It was horribly buggy and slow. However, remember that they wrote it in a weekend, and what it was attempting to do really was pretty revolutionary.
Even brilliant programmers can only accomplish so much in a weekend.
Interesting information. This was the time when the bubble was expanding rapidly. Anything got sold for $80 million in those days.
I'm sure that Frankel is an excellent programmer, but this in no way an example that excellent programmers are generally rewarded according to their ability.
Maybe someone here who knows him can ask him and post the reply, oeven better, ask him to post. Once of the reasons I enjoyed "Coders At work" was that this question in (at least implicitly) answered by some great programmers.
I'm skeptical. What evidence do you have for this? Maybe some people who have a better start (those who are "naturally" talented) receive better instruction, or are more inclined to practice more often.
Programming ability is more like athletic ability than most people want to admit. Some guys just get better, faster. Some guys can't ever break certain plateaus, no matter how hard they try. In golf, it's probably possible for anyone to go from a duffer to a scratch golfer. But it might take 20 years of work for someone who isn't set up with the right natural gifts. Quality and amount of instruction and practice will determine some of the pace. But some people will just get it faster than others. And even "elite" golfers simply won't be as good as Tiger Woods, ever.
I used to be a good skateboarder. There were guys I skated with who could learn the tricks 5 times faster than I could. I don't know why. We all skated the same amount... in fact, some of the guys who were better than me skated a lot less than I did. They just had something clicking that I didn't have.
I'm a proponent of self-improvement. I think most average people can develop skills far and beyond what they give themselves credit for. I hate to be the guy who is arguing for mystical innate ability. However, it seems naive to claim that it doesn't exist.
To end this comment on a useful note, the one thing I noticed both with the good skateboarders and the good programmers I know, is that they would 'go big' when practicing. the skaters would try something hard and figure it out until they got it. They wouldn't just sit around and do the same kickflip in a parking lot over and over again.
Likewise, the good programmers I knew would always be seriously challenging themselves. For practice programs, they wouldn't just write a dumb fibonacci generator. They'd write a full blown throttling distributed network file copier, or a scheme compiler in postscript. Serious, hard projects for practice. Most programming is mundane and you can go for years without getting any better. The best guys I know are never complacent with doing the same boring shit all day - they'd always challenge themselves.
I think it may be more that there are certain mental blocks that can hold you back completely, but once you get over them, your skills improve rapidly. Some people are fortunate enough to start with the "right" way of thinking about those, and so they just sail over the blocks with ease. Others need a mental shift in perspective before they can understand the fundamentals, and so they're "stuck" for a long time with virtually no progress.
I sailed through math and physics and chemistry in high school. I suspect this is because my dad was a nuclear chemist. I didn't have to learn how to think scientifically, because it was ingrained in me from the age of 3, and it never occurred to me to think any other way. But I'm now in my late 20s, and it's the other kids in my high school class, the ones who struggled through everything, that are now finishing their chem Ph.Ds. Because they decided consciously that chemistry was something they wanted to be good at, while I decided my interests lay elsewhere and didn't bother breaking through all the other mental blocks that crop up when you do college-level hard sciences.
I think a lot of skills have this same pattern - hard skills that can take forever to learn, followed by a bunch of easy and flashy tricks that come easily once you master the basics. My violin tone improved markedly and rapidly once I learned to use "arm weight" instead of simply pressing hard on the string. When I was doing whitewater kayaking, the experienced kayakers would say "Once you learn to roll, your skills just shoot up, because you aren't afraid of trying things any more." Last Olympics, there was a video interview with the U.S. women's gymnastics team where they asked each of them "What was the hardest skill to learn?" Shawn Johnson replied, "The hardest skill for me was my kip." (For non gymnastics fans, the kip is basically a prerequisite for all bars moves, and is usually learned around age 7.) There's an Olympic champion, but if you looked at her gymnastics in elementary school, she spent well over a year on a really basic, fundamental skill that some people get in three tries!
I think this may be why a lot of software engineers ask about pointers and recursion as interview questions. Those skills themselves are rarely useful. But they are hard mental blocks that often weed out a lot of prospective programmers. And once you've got them, a bunch of other algorithms and data structures open up for you. If you understand pointers and recursion, you can learn about linked lists, balanced trees, dynamic programming, hashtables, and all those other fundamentals in short order. If you don't, you might forever be stuck using frameworks that other people put together for you.
I'm actually skeptical of "natural ability," and I find it... a cop-out to ascribe learning rates to it. I think presence of mind matters. All practice is good, but some practice is better than others. People who are continually conscious of their performance, and who actively try to figure out how to improve will probably learn faster than someone who practices passively and hopes to improve "by accident."
No one's figured out a grand unified theory of Physics either but they still have a lot more useful conclusions and solid research than we do on ability.
I thought I was pretty good until I worked with the guy who made Winamp. It took me a couple weeks to make some enhancements to their add-ons site. It took him a couple weeks to write his own version of Pro Tools. I made 80 thousand dollars. He made 80 million dollars.