Did he really say that?
February 18, 2009 4:56 PM   Subscribe

I've seen a quotation running around recently, attributed to Bill Gates: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight." Did he really say that?

At first glance it seems witty: airplanes are supposed to be light! But now that I think about it, it's rather lame. Building an airplane isn't the same as designing one. Its entirely reasonable to measure the progress of putting an airplane together by weight. Perhaps slightly misleading in that the engines contribute the bulk of the weight but not as flat out wrong as the quote implies.

So my question is, is this attribution correct, and if so, can anyone provide a greater context within which it was stated?
posted by pwnguin to Computers & Internet (17 answers total)
I don't know the answer but I'll contribute this comment, that the lighter the aircraft the better, and in a way the same principle applies to code, 'keep it simple stupid' and if you can achieve the same thing with fewer lines of code, it's often better. Inexperienced programmers often come up with huge bulks of code that could be 10x smaller, and faster, using better techniques and standard libraries. Re-inventing the wheel, when it's already there, they just don't know about it. Some examples are Boost and STL in C++ development.
posted by hungrysquirrels at 5:07 PM on February 18, 2009

Don't know if Bill Gates said it (on average [given the number of billg quotes] probably not] but according to a recent Cringely blog posting the quote is consistent with MS' interest in not rewarding people for the quantity of software (lines of code) produced but rather for its efficacy .

I should say I'm just reporting what Cringely said here .

Certainly from a personal point of view LOC thinking is pretty strange way of thinking about a development but, particuarly in COBOL days, it was a metric which could tell you something the nature of the development.
posted by southof40 at 5:08 PM on February 18, 2009

I have no idea if he said that, but the analogy actually makes sense. The goal in programming is efficiency and simplicity-- using the fewest lines of code to get the same outcome. THe goal in airplane building is to get a light plane-- the fewest pounds to get a plane that flies.

Measuring progress or success in either using those metrics is a bad idea because although in one sense you will get a measure of progress (more lines of code, closer to a finished program; more pounds, closer to a plane) BUT you could inflate either measure to make it look like you made more progress and end up with a less desirable product. Perfectly sensible analogy to me.
posted by parkerjackson at 5:08 PM on February 18, 2009

Upon re-reading, to clarify the Boost and STL comment, it's not knowing that these are available and how to use them that ends-up in code bloat.
posted by hungrysquirrels at 5:11 PM on February 18, 2009

I can't find an actual primary source, but it is used in this newsgroup post from 2001. So at the very least it's not recently invented.
posted by smackfu at 5:46 PM on February 18, 2009

FWIW, Steve Ballmer expressed a sentiment along these lines in the 1996 PBS series Triumph of the Nerds:

"In IBM there's a religion in software that says you have to count K-LOCs, and a K-LOC is a thousand line of code. How big a project is it? Oh, it's sort of a 10K-LOC project. This is a 20K-LOCer. And this is 5OK-LOCs. And IBM wanted to sort of make it the religion about how we got paid. How much money we made off OS 2, how much they did. How many K-LOCs did you do? And we kept trying to convince them - hey, if we have - a developer's got a good idea and he can get something done in 4K-LOCs instead of 20K-LOCs, should we make less money? Because he's made something smaller and faster, less KLOC. K-LOCs, K-LOCs, that's the methodology. Ugh anyway, that always makes my back just crinkle up at the thought of the whole thing."
posted by jquinby at 5:59 PM on February 18, 2009

...and then I went and read the Cringely blog post which contains the same quote. Sorry.
posted by jquinby at 6:00 PM on February 18, 2009

Best answer: ...but the Wikipedia discussion page for SLOC contains the following tidbit:

Is there any source for Bill Gate's citation? (talk) 13:21, 21 January 2009 (UTC)

apparently (I googled it a while back, and iirc it was attributed to Business @ the Speed of Thought - but I don't have a copy to verify that) Tedickey (talk) 13:31, 21 January 2009 (UTC)

So it might be from his book.
posted by jquinby at 6:05 PM on February 18, 2009

Don't know about the origin, but the version I remember hearing specifically referred to the aircraft design process, not its construction.
posted by decagon at 6:33 PM on February 18, 2009

Response by poster: Oh, I agree that lines of code is a bad measurement that winds up rewarding the wrong things. But I don't think high LoC nessecarily translates into large bloated programs. I can write memory leaks with only one or two lines of code ;)

But the quote as stated makes for a poor analogy. Hence I'd like to see whether it's context reveals anything.
posted by pwnguin at 7:01 PM on February 18, 2009 [1 favorite]

Every analogy breaks down if you pick it apart enough, and I think you're well into that territory. All an analogy has to do is get an idea across quickly, and if your initial reaction was that it seemed witty, than it did its job.
posted by GeekAnimator at 7:06 PM on February 18, 2009 [3 favorites]

LOC doesn't relate very well to programming progress. It's both nearly impossible to estimate a project's size using LOC, and it's a poor method for measuring a programmer's productivity.

Weight doesn't relate very well to a aircraft's building progress. While you can know what the aircraft will weigh when you're finished, you won't know how far along the builders are based on the current weight (it's not Lego), and it can reach the full weight before they're done building.

Seems like a fine analogy to me. I think you're trying to take this too literally in an attempt to get one up on Gates (a trendy pastime these days).
posted by Relic at 8:00 PM on February 18, 2009

I had a fine day programming today. I deleted about 100 lines of code.
posted by hexatron at 8:11 PM on February 18, 2009 [2 favorites]

Way back in the day MSFT shared the code base for OS/2 with IBM. MSFT uses to get in trouble as they'd send their revisions to the code base back to IBM who would measure that MSFT had made negative progress - there were fewer lines of code. This is the source of Balmer's quote and while I don't know if Gates ever said that exact quote, the sentiment is certainly alive at MSFT. Software, like airplanes, is often improved by making it lighter.
posted by GuyZero at 8:16 PM on February 18, 2009

Upon re-considering the question and quote... The bulk of weight of an aircraft that is under build is going to be the empty shell airframe. So, an outsider looks at it, and sees a plane. Why isn't it ready to fly? Because, it's heavy, but doesn't do anything. However, a lot of work afterward is what that person doesn't see. The outfitting takes a lot of fiddly time for wiring, hydraulics, instruments and other flight controls, plumbing for toilets, interior installation, etc.
posted by hungrysquirrels at 10:22 PM on February 18, 2009

I had a fine day programming today. I deleted about 100 lines of code.

An anecdote from Apple is that they instituted a weekly report for devs on how many LOCs they'd done; this involved each dev filling out a form on Friday. One dev took the code for the calculator that was running too slowly and heavily optimized it. When he sent in his report, it said -2000 LOC for the week.

They stopped doing LOC counts after that.
posted by fatbird at 10:32 PM on February 18, 2009 [1 favorite]

The Apple anecdote (Andy Hertzfeld): -2000 Lines Of Code
posted by JonB at 1:14 PM on February 20, 2009

« Older Plan my roadtrip.   |   Hi, I'm your big brother. Remember me? Newer »
This thread is closed to new comments.