Although agile software development methodologies value customer collaboration more than contract negotiations, it does not mean that contracting is not important. In fact, proper contracting is critical to the success of a project (especially for multi-shore projects). Many projects become “Death March” because of inappropriate contracting.
If we look into the business of software offshore development (or outsourcing), there are three general contract models: fixed price, time and materials, and hybrid models. In this blog, I would like to talk about the fixed price contract model. I will discuss other models in the follow up blogs.
Fixed Price Contract
Fixed price usually means fixing time, price, and scope. Agile software development methodologies do not encourage the use of fixed price contract because it prevents you from making many changes. Fixed price model is best for the projects that the complexity is predictable\low, such as:
- The scope is small, stable, and completely defined. Typical example is maintenance/bug fixing of legacy system.
- The need for innovation is low.
- Low technical risk.
- Few dependencies.
For projects with high complexity and high risk, it is better choice to use other contract model (e.g. time and materials) if all possible.
Agile Way to Contract Fixed Price Project
Like it or not, in many cases we have to handle the projects with fixed price because of client preference. The key to reduce the risk is to keep the scope of the contract small.
- Try to break down the big project into smaller phases as much as possible and establish contract phase by phase. Small scope is easy to estimate and control.
- Identify and resolve dependencies. Dependencies will slow down the progress of the development.
- Establish scope control mechanism. If you discover any missing feature, you should evaluate the impact carefully and renegotiate with client.
- Involve the development team at the early stage of project to identify key technical unknowns.
- If you establish the contract with high level requirement, you should reserve the option to negotiate the detail requirement with client.