Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

"A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer." - Bill Gates

Say there's a "great" software engineer and an "average" software engineer on the same team. How can you account for one engineer being 10,000 times more productive? I can't quite fathom this, given they're both taking on their share of features, bugs and investigations, and consistently deliver with quality. Would my description possibly justify them to be above "average"? "great"?

In a corporation like Microsoft, what % of software engineers are "average"? What % "great"?

share

migration rejected from stackoverflow.com Sep 30 '13 at 12:24

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as primarily opinion-based by Giorgio, gnat, Jim G., Bart van Ingen Schenau, thorsten müller Sep 30 '13 at 12:24

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Im not sure if this question is suited for stackoverflow, but im interested in the responses as well. –  Austin Henley Sep 25 '11 at 21:17
14  
The quote says a great one is worth 10k times the price of an average one, nothing about "productivity" there. –  Oded Sep 25 '11 at 21:30
3  
In fact, a great programmer might be far less productive than an average one. Instead of doing his "job", he did something better that was off the radar, and perhaps even created an entire new product line that obsoleted the productive programmer's job. –  hotpaw2 Sep 26 '11 at 4:18
2  
The one thing I'm certain of, is that you need both if you want to both innovate AND get !@#$ done. –  Erik Reppen Jun 15 '13 at 17:15
5  
Abe Lincoln once said "If I had eight hours to chop down a tree, I'd spend six hours sharpening my ax" , this is never more true in programming, where doing a "good" job far outweighs a quick job. The good programmer might appear to be less productive, but he is preparing for all the problems that lie ahead. –  BeardedO Sep 26 '13 at 15:42

7 Answers 7

up vote 45 down vote accepted

The point of the quote isn't that one is 10K times more productive, it's that one is 10K times the worth of the other. Software has the unique condition where a defective design or implementation can lay dormant for years (a part that is machined wrong will usually just "not work" and not make it into the field), well into the life-cycle of the product until one day it rears its head in an intractable situation.

Everyone should be familiar with the exponential cost of fixing a defect as it moves from design, to implementation to testing to production to maintenance.

When you account for possible liability as well as corporate reputation, it is easy to conclude that the developer who knew enough to avoid the problem is worth 10,000 times the one who ignorantly or naively implemented a poor solution.

Edit (Spring 2014): "Heartbleed"

share
1  
Subtle that it would be the lack of liability that makes a programmer worth 10,000 times more than another. Didn't think of that originally, thank you. It seems like an incredibly difficult thing to measure though. –  TheImpact Sep 25 '11 at 21:53
2  
@TheImpact: It is difficult to "measure" as it usually only becomes apparent well after coding is done and the project is out in the world. Performance and Reliability and generally after thoughts of an "average" programmer; whereas they are built into the very fabric of the design that comes from a great programmer. –  Chris Lively Sep 26 '11 at 2:36
9  
+1. If the worth of a good software developer is 100, how many times more is that than -10? –  NickC Sep 26 '11 at 6:34
1  
There's also the issue of supply and demand. Raymond Chen: "I trust only about five people in the world to write code that is this advanced, and I'm not one of them. - blogs.msdn.com/b/oldnewthing/archive/2011/04/15/10154245.aspx ." This is particularly true of security-related coding, as the problems may lay unnoticed (or at least, unnoticed by the white hats) for years. Schneier comments that most programmers can write an encryption algorithm which the programmer himself cannot break. I note that this does not imply someone better can't do so...unless the writer is the best. –  Brian Dec 17 '12 at 21:17
    
Consider the first launch of the Ariane V rocket. There was an uncaught divide by zero that caused the rocket to be destroyed. Not only that but the code in question had ceased to have any value the instant the rocket was lit. Think of the millions they would have saved with a better programmer. –  Loren Pechtel Sep 26 '13 at 19:15

I'll try to tackle this in terms of the differences:

A great engineer will do the following better than an average one:

  • Design - produce designs that will need less modifications and be more flexible. This translates to savings throughout the lifetime of the software.
  • Features - these will be implemented fasted and be cleaner implementations.
  • Bugs - will be found faster, be fixed well and not introduce less future bugs.
  • Investigations - will be concluded faster with better resolutions and results.

Taken together, these would save the company lots of money in development time and make the company lots of money in extra opportunities.

share

Say there's a "great" software engineer and an "average" software engineer on the same team. How can you account for one engineer being 10,000 times more productive? I can't quite fathom this, given they're both taking on their share of features, bugs and investigations, and consistently deliver with quality. Would my description possibly justify them to be above "average"? "great"?

That is a lot of "givens" for an "average" software engineer. In reality, the great software engineer solves problems in hours that the average engineer will never solve correctly. The great software engineer solves ordinary problems in one-third the time with one-fifth as much code and one-tenth as many bugs. The great software engineer's code runs in O(n) while the average software engineer's code runs in O(n^3) time. The great software engineer can adapt his solution while you wait, while the average software engineer complains about late changes to the spec and says it will take weeks to meet new requirements now. These are all real differences I have seen when a great engineer redoes the work of the average engineer.

share
6  
+1: unfortunately it's pretty common that problems don't get correct solutions. It's insane how often there are workarounds and clutches that only "fix" the immediate problem, but are almost certain to produce even more problems in a few weeks. "But that's in a few weeks, let's let our future selfs deal with those problems!" –  Joachim Sauer Sep 26 '11 at 7:03

A great programmer usually doesn't "take on their share of features, bugs and investigations" to earn a wage. They quit and start their own company (or join a startup or, in the olden days maybe, joined a nationally renowned blue sky R&D lab), and innovate some product that no one thinks they even needed, or thought was possible to do with software, before that great programmer's insight and sweat.

A lot of this programmer "worth" is about proportionate reward for risk. The programmer might have even gotten fired for thinking about such crazy software products, rather than getting paid 2X or so more.

What happens with software startups (going public for million/billions, or getting acquired by MicroSoft, et.al. for similar) rarely happens with lathe operators (although at least one Silicon Valley tech company founder had a lathe in his workshop).

share
4  
"....going public for million/billions,..... " Despite the media rhetoric this rarely happens for software engineers either. For every one that "makes it", thousands fall into obscurity and/or go though one too many VC rounds and go back to a 9-5 day job with nothing more than bitter taste in their mouth... –  mattnz Sep 26 '11 at 4:20
1  
@mattnz : With probably slightly better than the 10,000 to 1 odds that go with that programmer's 10,000X alleged worth. –  hotpaw2 Sep 26 '11 at 4:25

There are some solutions that only the best programmers are going to be able to solve. Throwing thousands of mediocre ones won't work. It's also more difficult to coordinate their efforts even if they could collectively combine the pieces of their knowledge.

Answering questions on SO is no different. There are many problems where out of a group of average developers, one is able to come up with the answer. These websites probably do a much better job of coordinating efforts than most development teams which is sad.

share

The average olympic swimmer can swim around 2.5 miles per hour at a distance.

The average person (who can swim) can swim about 1.5 miles per hour ata distance.

This means that the average olympic swimmer can swim the English Channel in about 8 hours.

It would stand to reason then that the olymic swimmer is 60% faster than the average and that the average swimmer would take around 13 hours to complete the race...

Except that if I, an average swimmer, were to attempt to swim the English Channel, the only way I'm going to get across is washed up on the shore a week later.

Many aspects of programming are like swimming the English Channel. It is sink or swim. I do not even know if 10,000X better is really even accurate way to describe the distinction between completed software that works and incomplete software that does not work.

share

I think there is some empirical evidence that supports Gates' quote. I remember reading (though I don't recall the source) that in typing pools the difference in output (easily measurable for a typing pool) between those in the 5th percentile and those in the 95% percentile was something like 3 to 1. But after word processing software became available, the ratio rose to something like 10 or 20 to 1, because those who could use the advanced features of the software gained even more relative advantage.

Presumably for software development the ratio would be even higher, since there is even more freedom to take advantage of all kinds of tools, techniques, etc. It's harder to measure the differences, but most attempts come out with at least 10 to 1, and that's presumably underestimating the difference because it's only measuring what's easy to measure.

In something like typing or operating a lathe the people in the top 1% are probably pretty close to hitting the physiological limits of what is possible. In the case of programming they clearly are not (the ratio of how long it takes to write code versus how long it takes to type out code is enormous) so there should be room for much more variation.

share

Not the answer you're looking for? Browse other questions tagged or ask your own question.