A while back I talked to a CEO of a contract development shop. He wondered how Agile could help him with fixed price, fixed scope contracts to deliver software.
Of course, the requirements that come with these contracts are never complete or completely accurate. The first thing that comes to mind is to stop making impossible contracts. For this CEO, that doesn’t seem possible, at least at this time, given the context he does business in.
In any fixed cost/scope contract there comes a time when the two parties must have a conversation about the short-comings of the requirements, the delivered software, and the budget.
In a waterfall delivery, all progress reports are proxies. You’re reporting on intangibles–designs, test cases, or code that isn’t fully integrated or tested. This is all reporting on faith, because it is not verified by working software.
When a change request does come up, it’s unanchored from the experience of how actually using the software. It’s only words, and the impacts are made tangible in cost thinking, how much it will cost to modify existing artifacts, ripple effects through the code, test cases, documentation. There’s usually some accounting for the benefit and risks, but those tend to feel subject to inflation, based on conjecture, squishy. What does feel clear is that the change request process takes up time, and approving the change will cost more money. More often than not, the interaction feels like a tug of war. One side is arguing to spend more money, and the other is working with equal vigor for the opposite.
When the moment of truth arrives–the long tail of testing–it becomes apparent that all the progress reports up until that point weren’t reliable. After you’ve made the up-front promises and signed on the line, you have one big opportunity to build trust. If you blow it, you’re sunk. At that point, it’s difficult to have a conversation about meeting goals–especially when the lawyers get involved.
However, if you are using agile methods, you demonstrate some small piece of software every few weeks. People on both sides of the contract see tangible progress. They have a chance to correct misunderstandings about requirements, and fill in the gaps in each others understanding. People on both sides of the contract can see and experience the short-coming in the requirements, so it’s not the tug of war a traditional change process sets up. People on both sides have more reliable data on which to make decisions.
Most important though, both parties have had many opportunities to build trust based on something real–working software.
So when that point comes, when both parties to the contract must have a conversation about meeting the aim of the contract, it’s a very different conversation. The moment of truth will probably come sooner, when people have more options. The conversation will be based on shared understanding of progress and trust. And that’s a very different conversation.
Great article, but I would like to see this topic taken further. This is exactly the paradigm that I have lived for 10+ years. When you are talking about multimillion dollar mutli year projects, how do you get a client that is not technology savvy or who really understands what agile or scrum is to sign up for this type of project? They want to know three things up front: what am I buying; when will I get it; and how much will it cost. Not that the traditional method does a good job of delivering this, but it does get contracts signed. I’d be interested in more info / articles on this topic if you have any to share.
Thanks,
Steve
I agree with “Steve” — what would be extremely helpful is suggested methods and words with which to coach non-technology savvy clients that this is the proper approach to take.
I think its a very hard sell to go from a typical fixed price/fixed scope contract to an agile contract. It’s so different from the dominant model of contacting, that it’s hard for people who haven’t experienced it to imagine how it could possibly work.
And, using language that doesn’t register (“agile”) wont’ make the sale, or will register in a negative way. Mis-matching language tends to create the perception that 1) you aren’t listening, 2) you don’t understand the problem 3) you aren’t safe and trustworthy.
I read a lot of contracts that are premised on reducing the buyers risk, maximizing sellers risk, and establishing remedies for the buyer. That’s not a great basis for starting a relationship based on trust and collaboration. But trying to sell a different kind of contract can scream “risky.”
I have clients who, for legal reasons, can’t write “agile” contracts. But they work in an agile way, inside the fixed contract. They say things such as “as we make progress, we’ll show you what we’ve completed so we can get your reaction to it.” They go the client and show pieces of working software.
Over time the trust dynamic can shift. That’s the time to change contract language.
There are several research papers and experience reports available on this topic…many of which are in the proceedings for the Agile Conference.