Recently I had some conversations with the members my Cincinnati APLN Chapter about setting up contracts to deliver software services using fixed bid. Here are some thoughts and recommendations that evolved from these discussions:
1. According to traditional project management phylosophy, a project is successful if it is delivered on time, on budget, on quality and with full scope. Depending on the complexity of the project, the accuracy of the estimate for each work package can easily be a factor of +/- 3 or even 4. The only solutions to accomodate this from consulting stand point are:
- inflate contract price
- come up with a low estimate and a very tight change control system
- take a loss trying to satisfy all requirements
- take a quality hit as you are rushing to deliver
2. When we, as consulting professionals, work with the business, we need to help them transition from a question
“We know everything about the project, can you provide time and cost estimate”
to
“I can afford to spend $X of my budget on the development of Y that will add value to my business. How much real business value can I deliver?”
3.Here is one way to structure your project:
- Use fixed-price approach to help the customer come up with the initial product backlog. Let’s say time and material for one consultant for 2 weeks
- Work with the customer to prioritize initial backlog. Again, this can be fixed to X days at time and material
- Create initial estimates for all of the features on the backlog using story points. Time and Material
- Kick-off the project with a two sprint discovery period to remove architectural unknows, baseline the velocity and estimating accuracy. Each sprint can be fixed in price.
At this point you have burnt through a certain amount of the budget but you have eliminated a lot of the uncertainty in the project estimate. You know the estimate for the project in story points. You know your velocity and estimation accuracy. Based on the initial scope, you can come up with a number of iterations that it will take to deliver 100%. When you calculate the cost of each iteration and add the fixed amount spent upfront, you will most likely come up over the initial budget. Ironic how it always happens this way…
The good news at this point is that with high certainty they probably do not need every single item on the backlog and if your calculation that considers every single story point is over 10% or so, that is the 10% that will most likely drop off as the requirement evolve further during the implementation. However, this is not a good language for a contract, so here are some thoughts
- for a fixed price of XXX (initial budget minus fixed amount spent upfront) we will deliver YYY remaining story points at the rate of ZZZ points per sprint. As the requirements change and they will chance, they will be re-estimate using relative estimation techniques such as story points.
What this essentially means is that you are not fixing the scope, after going throught a discovery phase, you are fixing the number of story points that you commit to per iteration for a certain number of iterations. The beauty of agile is that it is quite possible that by the 10th iteration out of 20, you may already realize 80-90% of business value and at this point it may make sense to stop the project. This may seem scary to you as a consultant but there is an early completion clause that can be built into the contract to provide you as a consultant with an incentive to finish early…But that’s a totally different topic for some other day.
Filed under: Fixed-bid contracting | Leave a Comment »