- A feature doesn't add any value
- Our code is unmaintainable
- We have duplicate code (or other quality problems)
- A developer introduces a new defect
- We've broken an existing feature
- What we're building doesn't match what was expected
- A feature is costing too much to be worth implementing
- A feature is unusable
- A feature works in isolation but not when integrated with other features
- The entire project is costing too much
- The project is going to cost too much
In addition, how long from a the time a feature is requested to the time that it hits production?
There are certainly other things that can go wrong with a project, but I think that reducing feedback cycle duration (time between event and feedback on the event) requires applying many agile principles and practices.