High Value First
You are a customer on an agile project and you are involved in the Planning Game. You are trying to decide which stories to schedule in the next few iterations or sprints. You are working only with a single customer, so that the relative value of individual deliverables is clear.
Stories have different business value. They have different development costs.
Therefore, build the high value, most essential, stories first. When the value curve and the cost curve cross, cancel the project. And note that no scaffolding was put in place to support these low value features since you have always DTSTTCPW. At any point, schedule the highest value remaining stories in the next available iterations. If the cost of a story is higher than its value you can often split the story into its essential and inessential parts. Once these parts are re-estimated you may be in a better position to proceed.
The value of stories will then generally decrease. The cost will generally increase, as it gets harder to incorporate new stories as you go along. Refactoring, tries to keep this rising cost curve as flat as possible by keeping the design coherent even as new things are added. At some point, however, the remaining stories are probably not worth building. Note that this is one of the major ways that agile processes can save money over planned development: the low value requirements are just dropped. It may also deliver you a product sooner.
In extremely volatile situations the crossing curves
effect may not occur. You might only learn of a high value requirement
late in the process so the value curve might take a sharp upward turn.
But this ability to quickly retarget the project toward a different goal
delivers value in a different way: you get a more suitable product.
Having done High Value First you can then follow with Change for Free and Money for Nothing. As an alternative, see the pattern ROI, which sacrifices short-term optimization of the ROI of individual elements to gain the highest ROI in the long term.
Author: Joe Bergin