We are on a project where they hired someone to figure it all out first. The analysis team spent a year, with numbers around one hundred people, learning about the customer, researching technologies, and spewing out documents- in the thousands of pages. Then they came up with a schedule for someone else (eventually including us) to start delivering systems incrementally- and called it Agile (with a capital A): fixed-scope, fixed-schedule Scrum.Unsurprisingly, it didn't work. The analysis team missed half of the requirements for the most important application. Their technology selection process came up with numerous wrong answers. The first few incremental reviews were perceived as having come from a year of work. A battle began between the implementation and analysis contracts. It got ugly.
So they started over from a contracting perspective. Good-bye to fixed scope. Good-bye to fixed schedule. A new dawn for "real Agile"? Except that now the customer wanted a schedule- they wanted a price and a schedule for scope- scope that was not at all agreed upon.
We had a modest proposal- if you want a fixed cost, fixed scope contract, make it short. Make it a month or a quarter. Give the customer the option to cancel at any time. Use rolling wave planning. Of course, the customer budgets work years in advance, and uncommitted funds often disappear. So you have to write a contract that specifies these iterative and incremental development cycles for about the size of the team the customer can support. Use a little bit of data to at least put you in the wide part of the cone of uncertainty. Refine the estimates with each increment based on real evidence.
Stay tuned to see how it goes.
