27 October 2004
One of the basic tenets of agile development is that requirements changes aren't just expected, they are welcomed. This poses a particular challenge when an external company, like ThoughtWorks, is doing work for client. Many clients want a FixedPrice arrangement, which is really fixing scope because they see the FixedScopeMirage. But a fixed scope contract is totally at odds with agile development, so what is a company like us to do?
Over the last year or so we've been pretty successful at what I call Scope Limbering - starting with a fixed scope contract but working with the client to help them understand the way agile development works to overcome the FixedScopeMirage.
To illustrate, here's a specific example with a client that I'll call Nebbiolo. As is often the case with our work, we came in because another delivery company had failed (you'd recognize their name, but I'll spare their blushes). They'd spent a long time gathering requirements but got nowhere with development. So the client had detailed requirements which had cost a lot of time and money, and were feeling rather sore from the other firms inability to get things done. So they insisted on a fixed scope arrangement, based of course on those detailed requirements.
We took a look at those requirements and estimated it would take us about half a million dollars to build it. Like most people tackling a fixed scope project, we added a buffer - in this case quite a large buffer doubling it to a full million. This was still less than the original contracting company's estimate. (We charge much higher daily rates for our people, but since we have better and more productive people, we can actually do the job for less.)
We weren't at all shocked to discover that despite the detailed and heavily reviewed requirements, the requirements changes still came thick and fast. For each one we estimated the scope of the change and figured out how much it would cost, but didn't charge the client for the change. Slowly but steadily the changes ate up the buffer. After about six months or so the changes had used up the buffer completely. We'd been quite open with Nebbiolo during this whole time, so they weren't surprised when we told them that we couldn't afford to eat the cost of the changes any more. During that time we'd collaborated closely with Nebbiolo and they'd grown to trust us. We had no problem finding more money, indeed it took another half million to cover the requirements changes that were needed before we delivered.
At the end of all this Nebbiolo agreed that the fixed scope approach was a mirage, and we would do future projects together using a more flexible charging scheme.
I think the key to this story (and we have half a dozen similar examples) is that from the beginning we sought to put the relationship between our companies on a collaborative note rather than a confrontational note. The biggest problem with the fixed scope contract is it immediately pits the client and contractor on opposite sides where they are fighting each other about whether something is a change and who should pay for the change. An agile approach hinges upon replacing that confrontation with collaboration (customer collaboration over contract negotiation).
A tripling of actuals over initial estimates isn't unusual in our industry. Mostly I believe this isn't because we are so bad at estimating (although we aren't exactly stellar at it), but it's mainly because it's so hard to get a decent set of requirements. Many delivery companies take advantage of that by low-balling the initial bid and making profit on scope changes. But this approach sours the ongoing relationship with the client - which leads to the whole industry gaining a bad reputation. The story of Nebbiolo is one way to arrange things to keep the relationship in good shape, and I think we need more that for our whole industry.