There seems to be a ton of willingness today for companies to modify their legal relationship with their clients. Maybe we are finally at a point where we realize that holding people’s feet to the fire doesn’t produce the kind of results we had hoped for. What I’m talking about here is commonly referred to as “Agile Contracts.” A legal arrangement with your client to deliver a product in iterative, incremental way. For starters, Agile contracts should have some basic components.
- Make clear that both parties are “co-invested” in the success of the project.
- While you will require a basic list of requirements to start, the contract should make clear that this list is subject to change after every Sprint. This will benefit both parties.
- Client is billed for the working software delivered as part of every Sprint. Some people have suggested using a pay-per-story model. I have found this to be problematic. Paying a fixed price for each Sprint seems to provide the most robust “tit for tat” relationship.
- The client may take delivery of the software (or not) and cancel the project at any time. (you may choose to use a pro-rating clause if necessary)
- Increased or decreased throughput (not velocity) will require an adjustment to the per Sprint compensation.
- Require client participation every 1-4 weeks as part of the Sprint Review. This is where the client will “inspect” the working software and help you think through what to do in the next Sprint.
You will have to work with your legal team to determine how you should phrase your acceptance, termination and warranty clauses as they require quite a bit of finesse due to the nature of shared risk.
Craig Larman has an excellent Agile Contracts primer here: http://agilecontracts.org/agile_contracts_primer.pdf
Some of Jeff Sutherland’s ideas here: http://scrum.jeffsutherland.com/2008/10/agile-contracts-money-for-nothing-and.html
There are other discussions on this that have happened at various conferences, talks and in chat rooms. However, I think the above is enough to get you started.