Related link: http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm

I’ve never liked the metaphor of software development as manufacturing. For one thing, it’s emotionally disturbing to hear programmers alluded to as assembly line workers. More seriously, it confuses intangible software with tangible items.

Reeves has it right: the source code is the design. That’s not intended as an excuse for cowboy coding, nor is it a proto-justification for agile development (though it is clearly connected in many intelligent ways). It’s just the fundamental nature of software — perfect duplication is easy!

As my friend Jim Shore likes to point out, it’s the compiler that actually builds software. There’s your assembly line. The most important part of the assembly line, as I see the metaphor, is the perfect duplication of a physical product.

Of course, the people on the other side of this debate seem to prefer the cheap hordes of replaceable labor as the important point of the image. I think trying to build software this way dooms you to mediocrity, at best, and spectacular, if unremarkable, failures.

As always, I could be wrong, though I managed not to use the epithet “Taylorism”. What do you think?