March 31, 2006
Software contracts and agile methodologyPosted 4016 days ago on March 31, 2006
We are having some building work done on our house. Bricks and mortar are not like software; since the work has to be pre-approved by planning authorities it pretty much has to follow a "waterfall" pattern. Another critical aspect is cost. We've done what we can to make the cost predictable, getting the builder to agree to complete the work for a specified sum. There could still be unexpected costs; but we're trying to avoid surprises.
Now consider software. Many software projects proceed on a similar basis, particularly the smaller-scale affairs. An organization identifies a need, specifies the requirements, and contracts with a developer or software company to build the software. Both parties want to know what the cost will be.
The question is how to reconcile this with agile methodology. Kent Beck used a phrase that has stuck with me: the customer is part of the team. As the work proceeds, priorities may change; the team (customer included) might decide that feature x must be enhanced or it will not actually be useful, while feature y is less important and can be dropped. This process does not assume unlimited budget or resources; rather, it is working with limited resources in a collaborative manner.
But what about the legal side? Lawyers like to nail things down and to protect their customer's interests. Open-ended agreements to proceed on a collaborative basis aren't a good fit with the legal model. It's more reassuring (from a legal perspective) to append the requirements document or specification and state that this work will be accomplished to a satisfactory standard by a certain date; just as we are doing with our builders. Typically there are clauses allowing for variations to be agreed in writing; however, I doubt many organizations have lawyers frantically scribbling new supplementary agreements at the end of every Scrum meeting.
Is it possible that development contracts actually obstruct agile development? Alternatively, what kinds of contracts can protect the interests of both clients and developers while not being hostile to agile methodology? Apologies for ending the post with a question; I'd be interested in comments.
Comments are closed
Recent postsUsers plead with Borland to give up .NET
IE7 to be released 18th October,...
If Microsoft doesn't use UAC, why...
Google's unsettling lack of direction
Vista security: now prove it