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.