No Silver Bullet - Essence and Accidents of Software Engineering

Examined technologies that promised breakthroughs. Each one addressed accidental, not essential complexity:

  • High level languages removed machine-level accidents
  • Object-oriented programming introduced better code structure, but same conceptual complexity
  • Automatic programming only works when you can specify the program precisely
  • Graphical programming doesn’t make sense since programming is not inherently spacial
  • Program verification verifies code that meets spec but doesn’t help write the spec Instead of seeking silver bullets:
  1. Reuse existing software when possible
  2. Invest in understanding the problem
  3. Develop incrementally
  4. Invest in people, not just tools