19

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"?

13
  • 2
    Im not sure if this question is suited for stackoverflow, but im interested in the responses as well. Sep 25, 2011 at 21:17
  • 18
    The quote says a great one is worth 10k times the price of an average one, nothing about "productivity" there.
    – Oded
    Sep 25, 2011 at 21:30
  • 4
    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, 2011 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. Jun 15, 2013 at 17:15
  • 6
    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, 2013 at 15:42

7 Answers 7

57

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"

7
  • 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, 2011 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.
    – NotMe
    Sep 26, 2011 at 2:36
  • 10
    +1. If the worth of a good software developer is 100, how many times more is that than -10?
    – Nicole
    Sep 26, 2011 at 6:34
  • 3
    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, 2012 at 21:17
  • 1
    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. Sep 26, 2013 at 19:15
46

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.

31

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.

3
  • 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!" Sep 26, 2011 at 7:03
  • The difference between a working and non-working solution to an nearly impossible problem approaches infinite, e.g. organization survives, vs. goes bankrupt, or something explodes in the lab and kills all the engineers (classic TV drama story line...), etc.
    – hotpaw2
    Feb 2, 2016 at 16:06
  • @hotpaw2: True, I wasn't thinking of anything so dramatic. I was thinking of problems with a bit of mathematical complexity, e.g. graph computations like topological sort. An average engineers may spend weeks writing a slow and buggy solution. A great engineer will map the business requirements to a well-known problem, then search for a published library or algorithm. Feb 2, 2016 at 18:12
9

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.

5

A great programmer very often doesn't just "take on their share of features, bugs and investigations" to earn a wage. They sometimes quit and start their own company, or join a startup, or start a new skunkworks project, 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, skill, 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 an occasional software startup: going public for million/billions, or getting acquired by Google or Facebook, et.al. for similar amounts, rarely happens to lathe operators (although at least one successful Silicon Valley tech company founder had a lathe in his workshop).

2
  • 5
    "....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, 2011 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, 2011 at 4:25
4

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.

3

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.

1
  • 1
    Wow. Talk about missing the point. Any measure of programmer productivity that starts with "typing speed" as an anchor point is bound to get an asinine answer.
    – riwalk
    Mar 7, 2016 at 21:58

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