Agile and Fixed Price Contracts


This is a guide to fixed price contracts and the alternative methods of delivery for software development. It is based on a discussion I facilitated at Agile Perth. It was a hot topic and generated an insightful discussion. Thanks for everyone who took part and helped shape our understanding of this common challenge.

What is a Fixed Price Contract

A contract to deliver software which fixes the price, outcome or scope and often the timeline

Scope

In a traditional sense a ‘fixed priced contract’ details specific scope, usually in a formal specification document.

Delivery Time

A fixed price contract will often also fix the delivery date.

Price

Clients are very keen to get a price up front for software build. This is understandable in an industry where projects, especially large complex ones, often go over budget.

Why do Organisations Seek These Types of Engagements?

The traditional fixed price contract is seen by many as the best tool for limiting risk of non-delivery. Organisations are used to drawing up contracts in this way for various elements of their business and feel comfortable with this approach.

Why This is a Problem - The Challenges Faced

Flexibility

Fixing a contract on specific deliverables makes it harder to change the requirements or technologies. Re-negotiations are likely to be required which can be tricky, especially if there is an unforeseen cost increases or if something needs to be descoped that has already been promised to a stakeholder. In software development the requirements often change as complex models are matured and better understood.

Easy to Blow Budget

Forecasting budgets for complex IT projects is proven to be very challenging. Quite often large projects overrun spectacularly. The larger and more complex the project the harder it will be to estimate up front.

Quality at Risk

It is often quality that suffers if a project becomes under stress. Thorough testing, reviews and refactoring are normally hit first - all important elements in code quality and on-going maintainability. This often comes about where there is a looming fixed deadline or budget and time is running out. The importance of quality needs to be gauged. Are you building a proof of concept or something with a short life span? Will the costs of maintenance or lost revenue add up and end up cost more over time if quality is poor? Is the system safety critical?

Can Cost More

A project can end up costing more as the management and time factors involved running a fixed price project adds additional overheads. Large projects might need months of analysis up front and contract negotiation. Then the customer might not see a release of software until completion and thus have less opportunity to user test or correct issues in the design until after post build (and re-negotiations and extra cost).

Change Management / Client Relationship

Change needs to be well managed and adds a additional complexity. Client relations can also suffer, as re-negotiation of contacts and extensions puts stress on a relationship. This is especially true if the original plan or estimate was incorrect and there was not an adequate buffer to account for unforeseen challenges.

Conways Law / Client Culture

The client culture can present a challenge when setting a method of delivery.

“The structure of a problem reflects the structure of the organization that created it.” Bill Corcoran’s version of Conway’s Law.

Large established corporations often have historic processes, procedures and rigid structures. These organisations might not feel comfortable or to be set up to support an Agile approach and as a result it can take considerable effort and time to embed new practices.

Despite this large clients are trying to break down these barriers to encourage a culture that supports innovation to remain competitive in markets that are constantly evolving.

Alternatives

Fixed Price / Variable Scope

Another way to fix a price of a contract is to agree a price for a fixed period delivery and have high level scope which will be the target goal. This is sometimes referred to as fixed price and variable scope or time and materials - the later term I do not believe suits the complex world of software delivery.

Control the Schedule

A project roadmap can be used to plan several of these fixed periods and the outcomes sought. This can be controlled and refined during delivery. Risk is limited to each of the agreed fixed price periods and the schedule matures and can become more precise over time.

Set Customer Expectations

Build up a strong working relationship based on trust and keep working on it. It is in the interest of both parties to succeed and deliver a solution. Explain why fixing detailed scope and budgets of complex projects in advance can put a project under stress and increased risk. Commit to delivering the best possible solution for the client and provide feedback opportunities.

Help the Client to Sell Approach to Stakeholders

One of the most difficult challenges is sharing the merits of an Agile approach with upper management and getting agreement. Help your client do this and provide them with the support they require. For example provide case studies, white papers, metrics or offer to meet the stakeholders and discuss the approach with them directly. Any time spent on this activity be well worth it.

Spike Early

If your client is keen on fixing a price then you can propose a series or spikes (proof of concepts) to build a better understanding. Keep doing this until both parties have an agreed understanding which will allow for fixing a price with better accuracy.

This will limit the perceived exposure on the client’s side but still give you one of the most important benefits of an Agile approach - which is not assuming and predicting too much up front.

Needs Instead of Wants

By having an emergent approach the clients can focus more on value of the backlog and have the opportunity to change their mind during the build. This can be immensely valuable, especially for projects where there is a high degree of complexity where new ideas and a better understanding of the problem will mature over time. Leaving commitment to the last reasonable moment will result in a better quality outcome and the more valuable features will naturally get more focus - especially if the software is demonstrated and tested with real users during the build.

Key Take Aways

Fixed Price Requires Better Risk Management

Fixing the price and specific outcomes up front agitates the risk and makes a complex project more likely to come under stress and to be challenged. As a result extra risk mitigation is often required. This can included; increased margin for budget, controlled change management process, detailed up front analysis, thorough negotiation and specific agreements on well defined deliverables.

Understand Your Customer

Get to know your customer, their business environment and culture. It is essential you understand the potential challenges so you can work out a delivery model that will work for them. Provide the right level of support and adequate pace when looking to implement modern approaches or improvements.

Forcing through a new approach rarely works, especially if there is no support from upper management. Being patient, listening and building trust are vital factors in order to maintain a health working relationship.

Smaller Milestones Preferable

Regardless of the delivery method, smaller milestones should be preferable as they provide a good opportunity to check against the original forecast.

Breaking down a delivery into potentially releasable iterations will allow for earlier feedback via demonstration of working software to clients and end users. These insights can prove to be very valuable and will quite often lead to changes for the better.