(I originally posted this on my MSDN blog.)
Here’s one more thought on the subject of complexity in software development: software development is NP-hard.
Software development (in the sense of building large projects end-to-end) has these characteristics:
- A proposed solution can be easily proved correct or not correct.
- The cost of searching for the correct solution grows exponentially as the problem set grows in size.
- There are no known shortcuts that make the process of searching for the correct answer dramatically easier.
What’s the best way to deal with NP-hard problems?
Successive approximation and heuristics.