Chapter 16. No Silver Bullet—Essence and Accident in Software Engineering
There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.
All software construction involves essential tasks, the fashioning of the complex conceptual structures that compose the abstract software entity, and accidental tasks, the representation of these abstract entities in programming languages and the mapping of these onto machine languages within space and speed constraints. Most of the big last gains in software productivity have come from removing artificial barriers that have made the accidental tasks ...