25 December 2009 9:58p Pacific

Programmers and “productivity”

by Matt Sherman

There have been some interesting posts lately asking the question, “if some programmers are 10 times as productive as others, why aren’t they paid 10 times as much?”. It’s a good question, though I don’t think the recent posts quite get to the heart of it.

Some have said that it’s a sociological thing – that we, as a culture, generally don’t accept great disparities in pay. Within a mediocre organization, that might be true. (James Kwak hypothesizes that the market price is set by these mediocre organizations.)

But markets tend to clear, which means that over time the value should accrue to the better performer. The 10x programmer at the mediocre company will have a great incentive to go out on her own; if her productivity allows her to take on 10 times as many clients, she will net 10x the pay.

The problem is that the original question is a fallacy. We don’t know, a priori, who these 10x programmers are. Simply asserting their existence, and then musing about their pay, puts the cart before the horse.

The 10x programmer doesn’t exist until they do. I agree with John Cook that measuring productivity is hard, but we do have a way. Call it Sherman’s Fairly Obvious Productivity Test:

If our newly-independent programmer does not make 10x the money, we must admit that she is not the 10x programmer we thought she was.

The essence of my argument is this: “productivity” is a metric in a vacuum. It’s incomplete and unempirical. The definition of productivity must have a relationship to the value of what is being produced. And the only way to measure the value is market response.

This market response might be measured in money that accrues to the programmer; in the case of open source, it might be measured in the hard value derived by users of the software (e.g., the ROI of a company adopting Linux).

An expertly-prepared steak, served to a vegetarian, does not make one a great cook. Driving a Prius in the wrong direction is not fuel-efficient.

And so the ability to solve technical problems, with great wisdom and elegance, does not a “productive” programmer make. The productive programmer must prove the ability to deliver things of value to their customer, broadly defined. Anything short of this test is academic.

--

PS. In fact, I do think these 10x programmers exist: they create startups with the windfalls that you hear about. They go by the names of Bill Gates, Linus Torvalds, Paul Graham, etc.

Comments

26 December 2009 9:01a Pacific #

Loren Pechtel
Your test doesn't work.  The problem is what one makes as an independent is a function of both one's skill at programming and one's skill at marketing.  If you are 10x as good at coding but stink at marketing you won't produce 10x the income.

Loren Pechtel United States |

26 December 2009 9:34a Pacific #

Matt Sherman
That's still cart before the horse. Until that programmer produces 10x more value, they are not "10x as good at coding". They just think they are. It remains unproven.

Matt Sherman United States |

26 December 2009 10:27a Pacific #

Tim Lee
I think it's a measurement problem. People who say some programmers are 10x as productive as others are stating the matter sloppily. What "productive" means in this context is generally not producing 10 times as many lines of code in a given amount of time, but in producing code that's 10 times as valuable in a given amount of time. This could be a function of being better at code re-use and so producing a 100-line program that achieves the same outcome as another programmer's 1000-line reinvent-the-wheel program. But it could also mean writing code with fewer bugs (meaning it saves the company 10x the programmer's salary in QA/customer support expenses) or it could mean making better architectural decisions that lead to more scalable, maintainable code down the line.

The problem is that only an above-average programmer can identify other above-average programmers ex ante--and even that's going to be iffy. In some cases, a non-programmer might be able to identify the best programmers ex post--say by counting the number of problems the QA team finds--but even that will be an imperfect measure since a dozen bugs involving minor corner cases is less serious than a deep show-stopper bug that's detected just before the project ships. And of course in any nontrivial code base, it's going to be hard to be sure which programmers are responsible for any given bug, to say nothing of more subtle issues with good architectural decisions.

This is a persistent problem with skilled professions. When I take my car to the shop, I don't have a clue if the mechanic did a good job or a lousy job of fixing it--even if it breaks later that doesn't necessarily mean the previous fix was incompetent. When I hire a lawyer, I don't know if I've made a good case until I win or lose my case--and even then I can't be sure if it was an easy case or a hopeless one. Likewise, if I hire a surgeon I don't know if he's good until I wake up after the surgery.

The fundamental problem is that what you're buying in all these cases is knowledge and judgement, and you can't evaluate those unless you already have them yourself. So the vast majority of the market under-values the best talent because it doesn't know how to identify it. And the small minority of companies that do know how to identify the best talent--like Google--pay a little more than average and make out like bandits.


Tim Lee United States |

26 December 2009 11:51a Pacific #

Giles Bowkett
If the only way to be a(n economically) productive programmer is to start a successful startup, then programming itself has no productivity. You're saying the only way to be a productive programmer is to develop skills in business. By your argument, productive programmers do not exist. What if you're right? What if productive programmers don't exist? What if Bill Gates is not an epic productive programmer, but an epic businessman who happens to be literate in programming? What if the same is true for all these guys?

I think you're right, and productive programmers don't exist, and further that programmers don't exist. I think programming is just a type of literacy. Most "programmers" are beauraucrats or assembly-line workers. Many are designers. A few are entrepreneurs. Only the entrepreneurs make real money. There's no 10x difference there. There's a 10,000x difference. You could take programming out of the equation and make the same statement about any area of the economy.

Giles Bowkett United States |

27 December 2009 2:28p Pacific #

Daron Robinson
This assessment is bang on I think, which has scary implications for all the "programming methodology" snake oil merchants out there peddling their method de jour to improve coder's efficiency.

Its the coders themselves that need to look closely at what is really required to become "successful", and it may have little to do with actually coding.

Daron Robinson New Zealand |

26 December 2009 11:56a Pacific #

Erik
Thank you for writing so lucidly about this. As and economist, the original question bothered me a lot, but the words didn't come. I agree wholeheartedly with this assessment.

Erik United States |

Comments are closed

Tell others

TwitterTweet this page
Digg!Digg this page
TwitterAdd to Google Reader

Experimental! Let me know how it works for you.

Shorten this page's URL

Learn more about the TinyASP URL shortener

ASP.Net jQuery Controls

Implement jQuery effects using familiar ASP.Net server controls. Learn more...

Recent posts

Alikewise learnings #1: DIY PR

Sherman’s law of prior knowledge, or, predicting the past

The busiest people at Apple right now…

When “infographics” jump the shark

HTTPS is the least of your problems

Stacking up

Beware the truth-tellers

Please don’t write “efficient” CSS

more...  

About us

ClipperHouse.com is brought to you by Matt Sherman and Fernando Chilvarguer, among others. Contact us here.