Software is not a production activity

The paradox [of software development] is that productivity is often at odds with benefit. Benefit is maximized by taking chances and venturing into new territory. Productivity is improved by familiarity and repetition. When we make software into a production-type activity by “systemetizing” the way we build a certain kind of product, we can get much better at building products of that type. Is this progress? Why do we need so many products that are so much alike? Have we missed an opportunity to build one meta-product from which many instatiations can be generated instead of building the many clones, each one as a separate project? In most cases that is exactly what has happened, and you can see why. Building hundreds of cloned products can result in low risk and high “productivity” for each of the hundreds of projects. Building one meta-project is highly risky and likely to result in far lower productivity, but the total cost of the one risky project may be much lower.

Software is not a production activity. It is a research and development activity, for it is in software research and software development where the only real benefits can be produced.

All the attempts to make software into a production activity are doomed to failure. Companies that “suceed” in this are just creating opportunities for the Mike Hammers of the world to suggest, “Instead of pushing your software factory from CMM level three to level four, why not just close it down? It’s not building anything very useful anyway.” Hammer would call that Business Process Reengineering. I call it Turning the Brain Back to the On Position.

Tom DeMarco, “Why Does Software Cost So Much”, Essay 2

No Comments