The Inevitable Pain of Software Development:
Why There Is No Silver Bullet

Daniel M. Berry

Cheriton School of Computer Science
University of Waterloo
Waterloo, ON, Canada

Abstract:

Programming technology has improved immensely since its earliest days. However, no single improvement can be classified as a silver bullet, despite all claims of its proponents. A vexing question is why there has been no silver bullet. A variety of programming improvements, i.e., models, methods, artifacts, and tools, are examined to determine that each has a step that programmers find painful enough that they habitually avoid or postpone the step. This pain is generally where the programming accident meets the essence of software and its relentless volatility. Hence, there is no silver bullet. It is claimed no substantial programming improvement can avoid all pain; therefore there will never be a silver bullet.

Keywords: build-and-fix model, changes, configuration management, daily build, documentation, E-type systems, extreme programming, formal methods, inspection, open sourcing, pain, programming environments, programming methods, programming models, programming tools, rapid prototyping, regression testing, requirements engineering, silver bullet, software accident, software essence, structured programming, traceability, volatility, waterfall model