|
|
|
|
|
Introduction
Processes
General
Collaboration
Contracts
Risks and Rewards
Other Topics
|
Risks and Rewards of Agile Development
While fixed price contracts can be used with agile projects, flexible contracts fit more naturally with the agile approach.
But, under a flexible contract, how can we ensure that neither party is exposed to excessive risks? This page describes one solution. It is a very common solution, which I call "Cancel-After-Any-Phase". First, let's consider the traditional alternative...
In the traditional approach, scope is fixed up front. If you are a customer, then time and cost are also "fixed" from your persepective. OK, you know that things might take longer than planned, so the delivery date might slip. But, thanks to the fixed-price contract, the supplier will absorb the extra cost.
There are two well-known drawbacks:
The prevalence of change requests indicates that fixed price contracts don't actually guarantee you'll get what you need. They really guarantee you'll get what you think you need, at the start of the project.
There is also a lesser-known drawback to fixing scope, and it's very important:
The Agile Approach
Agile software development proceeds in a series of short stages, called iterations. Working software is released at the end of each iteration. At the start of each iteration, duration and effort can be fixed for that iteration. The functionality varies. If the work turns out to be too much for the current iteration some features are postponed until the next.
(This is a slight over simplification. In some agile processes, the software is not released at the end of every iteration. So, if you run an agile project in the manner suggested on this page, you should insist on actual delivery of software at regular intervals - say once every 6 weeks.)
Managing Risk
![]() So, how do you know how many iterations you will need? What if features keep slipping until you need far more iterations that you originally expected?
There are several good solutions. I'm going to describe the one that is probably most common in the agile community. I call it "Cancel-After-Any-Phase".
It works like this: Iterations are short, typically one month long. At the end of each iteration you receive working, tested software. So:
For these reasons, you should never be faced with a situation where you say, "This was only supposed to take 6 months, but its taken 12 so far and it's still not finished." Just don't let it get to that point. Cancel the project after 3 months if you're not satisfied with the rate of progress.
What's Fixed?
Is anything fixed under this approach? Time, cost and scope are not, so what is? The answer: Quality and value for money.
Agile methodologies aim to hold quality high, no matter what. To maintain quality agile processes use rapid feedback, simplicity as a design goal and, in many methodologies, rigorous automated testing.
More importantly, agile methodologies seek to maintain high value for money. I remember a manager who purchased fixed-price software, saying, "When we buy a system, only about 10% of it is really used." Agile methodologies help you buy more of the stuff you need, and less of the stuff you don't.
They do this by:
Summary
Cancel-After-Any-Phase creates a win-win scenario because:
Finally, I re-iterate that while Cancel-After-Any-Phase is the most widely-publicised structure for agile projects, other solutions are possible too. They include two-phase contracts and target cost contracts, which give greater certainty about scope.
Page History: Created 29 April 04. Last updated 22 Feb 07
|
|
|
Copyright (c) 2003-2007, John Rusk.
|
||