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:
- Reuse existing software when possible
- Invest in understanding the problem
- Develop incrementally
- Invest in people, not just tools