After a long time working a project manager and as a program manager, I found a really toxic combination that can have unpredictable results for the company and the relations with the client. You need to combine the agile software methodology with a fixed price contract to get into trouble.
In order to fully understand the toxicity of this combination we need to explore each ingredient.
Agile software methodology
In this area fall all agile methodologies such as SCRUM, extreme programming (XP), agile modeling, kanban and many others. In a nutshell agile software development is based on iterative and incremental development. The product and the requirements evolve over time through collaboration between self-organizing, cross functional teams. Agile software development is great to use when all the requirements are not clear from the beginning or the requirements are changing frequently.
Fixed Price Contracts
Fixed price contracts put the risk on the side of the vendor. The vendor agrees to perform a specific work for a specific amount of money within a predefined deadline. Usually, fixed price contracts have an overhead because the vendor needs to clear all requirements and identify all the risks before agreeing to a price and accept the risk transfer.
The two definitions are not compatible from their basis. Agile allows a project to start without having all the requirements defined whereas a fixed price contract, in order to calculate the cost, has a prerequisite to know the requirements in detail before the beginning of the project. One thing is sure in software projects, that changes will occur to the requirements. In Agile, changes are incorporated, without effort, in the methodology. Changes, most of the time, have the tendency to increase costs. Fixed price contracts should have clauses to manage changes via a clearly defined change request process. The overhead that an Agile project will have to track all the changes in the requirements along with refactoring and code optimizations is very high and is also extremely difficult to follow the changes successfully. Time will be wasted in lengthy meetings, change request validations both of which are not compatible with the Agile methodology.
Avoid at any cost this combination. It is one of the certain ways to lose money, clients and bring bad reputation to your company.