It is surprising why regularly project scope is not reduced when projects last too long and are too expensive.
The Drama of the Failed Project
- complexity expands exponentially
- people add features (expected value ≠ actual value; bonus: they don't verify their feature's assumptions upfront)
- people incorrectly assume adding their feature adds a linear effort (while complexity drives effort exponentially)
- effort to completion increases faster than capacity to complete the project
- people defend their ideas
- it is harder to remove features than to add (politics)
- no one wants to take responsibility to remove features in a failing project
- key architectural decisions are not made (a system's performance optimised for A goes down if it tries to do A and B together, provided A and B conflict in their parameters)
- time to market = backlog / implementation capacity
- backlog effort increases exponentially (as more features are added)
- implementation capacity at best remains constant
- no overarching data structure
- the architecture cannot be established (too many conflicting features)
- if the product had be completed, it would already have been outdated by changed market conditions
TL;DR: people increase effort to completion, time to market prolongs, no overarching architecture.
Operationalization: 25/25 principle
- terminate 25 % of effort with least expected value
- terminate 25 % of effort with least expected value of each remaining task
Result: Value per effort goes up at constant working capacity, resulting in faster completion.
The Turnaround
- A project trying to cover almost everything, does not really know what it really should solve.
- time to market = backlog / implementation capacity
- reduce backlog by removing features (recursive 25/25; prioritisation criterion: value/effort)
- make key architectural decisions to establish overarching data structure
- realise shorter time to market
- user value meets market timely
- increased iteration speed
- pre-screen feature requests: verify a feature's assumptions upfront (not by implementing the feature directly)