There are two rational reasons why customers of software development projects are still attracted to fixed-price contracts:

  • Budget predictability
  • Transfer of technical  risk to the provider

The title of this post calls that a myth because in exchange for offloading the technical risk, the customer usually assumes the risk on requirements uncertainty. Naturally, to take on a fixed-price project, the provider will demand a fixed set of well-defined requirements and a static Statement of Work.

So what happens? As the project starts, we naturally learn more about the competitive landscape, the real market requirements, new use cases. The technical requirements change and we are left with two options: (a) stick to the fixed-everything contract and develop a product that does not match user needs or (b) change the scope of the project and adjust the schedule/price accordingly.

So, the fixed-price project is not really.

Agile Development is about recognizing the reality that both market requirements and engineering estimates will change over the life of a project. So, the agreements and software releases are iterative, fixed  for short periods of time and adaptive to the reality of execution.  Most internal software development organizations have already made that transition.

Agile Outsourcing is about finding external development partners that will be able to share technical and market risks and work collaboratively to adapt to those changes and deliver the best possible result, within schedule and budget. Most external development organizations became good at minimizing per hour cost, but are still not able to deal with change in requirements. So most software development outsourcing is still based on small fixed tasks being managed by the customer.

It is past the time for that to change. Engineering organizations know that, but companies, particularly large ones, continue to focus on “cost per head” as the main reason to pursue external development. A shift towards more meaninful metrics would benefit both software developers and product groups alike.