“How much is this going to cost?” - “As much as you're willing to spend.”
“How long is this going to take?” - “As long as it necessary.”
“What am I going to get?” - “Whatever you tell us you want.”
These are the common questions that get asked at the beginning of any project. “Pure” agile has minimal constraints beyond the customers imagination. The high-level scope that is defined at the beginning of a project can be changed out of all recognition as the customer evolves the product backlog between iterations.
Sadly, this is commonly seen as the development team writing themselves a blank cheque, rather than putting the customer in full control. How then does an agile team define and scope a project where the customer requires fixed cost, time or scope.
Where a customer asks for a fixed price quote prior to agreeing to project commencement, but is flexible on what is delivered and how long it takes.
- Work in absolute customer priority order – reducing the time spent on technical helper tasks will help meet short-term budget constraints (at the cost of long term, post-project, efficiency)
- Release in short (1-2 week) iterations – similar to longer waterfall projects, longer iterations have a tendency to cost overruns to deliver on time
- Monitor velocity and burn rate – this is your key indicator of cost
Where a customer asks for delivery by a certain date, but is flexible in scope and cost.
- Work in absolute business value order – increases the number of user stories complete in a given iteration (high business value = simple, moderate-high priority)
- Enforce iteration duration – Your project will be defined by a fixed number of iterations, and extending an iteration will push out your final date
Where a customer asks for a fixed set of deliverables, but is flexible in the time it takes to deliver and the cost of delivery. This is sometimes known as “heavy agile”.
- Focus on backlog definition and estimation during Sprint 0 to ensure accurate scope definition
Fixed Cost and Scope
Where the customer asks for a fixed price quote for a fixed set of deliverables. In this situation, the final date for delivery is flexible. As well as the points in fixed cost and fixed scope;
- Increase the estimate risk during Sprint 0 – to ensure your quote for the project allows for unexpected delays (which would impact on your cost to deliver)
- Update delivery date as required
Fixed Cost and Time
Where the customer asks for a fixed price quote by a fixed time. In this situation, the exact set of features (or scope) for delivery is flexible. As well as the points in fixed cost and fixed time;
- Calculate total cost as cost per iteration – which makes your quote to the customer very simple.
Fixed Time and Scope
Where the customer asks for a fixed set of deliverables by a fixed time. In this situation, the total cost to the customer is flexible. As well as the points in fixed time and fixed scope;
- Pre-assign work to iterations during Sprint 0 – which will define the scope delivery timetable.
- Pad schedule with extra iterations – to cater to unexpected defects or technical debt
- Increase the size of the team 3-4 iterations prior to the end of the project if required – to ensure the set of features are completed in time.
Fixed Cost, Time and Scope
Where the customer gives no flexibility in the project.
- Cancel the project – this is not an agile project. This should be run using a waterfall methodology such as PRINCE2 (and even they are likely to fail without some flexibility)