21 Jan 2009

YAGNI and the cost of change curve

YAGNI is not a practice - it is just a bet. When someone says YAGNI they are betting that something is unnecessary.

  • If we win the bet, we win lower costs and less complexity.

  • If we lose the bet, we have to do it later, and it may be more expensive to do it later.
With traditional "waterfall" approaches it is accepted that it gets more expensive (often much more expensive) if we make changes later in the lifecycle.

Agile approaches aim to hold that cost of change constant throughout a products lifecycle. If successful, the difference in cost between leaving something until later against doing it now drops toward zero (or less if we discount cash flows).

So back to YAGNI...

If we are Agile, when we win the bet, we get our lower costs and less complexity. But if we lose the bet, we pay no more than we would have to pay now. This means we are more likely to bet YAGNI, and the more often we bet the more often we win.