Once you decide to outsource software development, choosing the right type of contract is the first challenge you’ll face as a client. Usually, outsourcing companies offer three main contracts: Fixed Price, Time and Materials, and Scope Based Model. Each of them has its pros and cons so there is no one-size-fits-all choice that would suit in all instances.
To help you make a wise decision, we’ll outline the main characteristics of these most popular types of cooperation and give you some hints on which one to choose depending on the specifics of your project.
This type implies an outsourcing company and a client both set the total price, scope of work, and deadlines in advance and none of these parameters can be changed after the agreement is signed. To make accurate estimations, programmers have a clear vision of a final product before the first line of code is even written. If a client decides to add some features, all the terms, including the price, amount of work and timeline, are to be negotiated separately.
Settled costs. An outsourcing company cannot charge additional fees even if programmers spent more time on developing than it was initially estimated.
Predictability. A development process is well-planned and a client knows the release date from the very beginning.
Easy monitoring. Since there is a clear plan, a client can monitor the progress and see if everything is done on time without being deeply involved in the work process.
Not flexible. It’s hard to adjust a fixed-price contract to the new requirements or market conditions. Usually, any changes require signing a separate agreement.
Long planning process. Since developers need to understand all the requirements beforehand, everything must be discussed in detail, so planning takes much time.
Risk of overpayment. If the initial estimation is wrong and a team completes the work earlier than expected, a client pays more than the product actually costs.
Hence, a fixed-price pricing model works well only for the short-term projects and some MVPs, i.e. when it’s possible to define all the requirements and accurately estimate everything in advance. In all other instances, this type of contract is beneficial neither for a client nor for a development team.
Time and Materials (T&M)
Under T&M contracts, a client is charged for actual time programmers spent working on the project. All the payments are calculated based on developers’ hourly rates and made on a regular basis — usually at the end of a month or some other predefined period. At the same time, a client is free to modify the scope of work and requirements during the development process if, for example, some features have become irrelevant, stakeholders changed their minds, or a company set new priorities.
Flexibility. New ideas may be easily incorporated at any time. Features may be added or removed. All unpredictable challenges are resolved as they occur.
Relevant solution. Since the requirements are being constantly adjusted to the new conditions, in the end, a client gets the relevant product highly tailored to its current business needs.
No risk of the wrong estimation. Developers spend as much time as needed to build a high-quality solution and the client pays for actual development hours, so the risk of overestimation/underestimation is eliminated.
Quick start. With T&M pricing model, programmers don’t need to have detailed written specifications beforehand, so they can start coding right away.
Unfixed budget. The total costs of a project cannot be determined in advance.
Uncertain deadlines. As the scope of work is subject to change, it’s impossible to predict the exact release date.
Proactive client’s involvement. Important decisions have to be made throughout the development process, so a client must be involved all the time.
Summing up, a Time and Materials pricing model is considered the most optimal choice for any software development project, except for small-size projects with predictable requirements. The reason is that nowadays the new technologies are evolving quite rapidly and it’s just impossible to anticipate all factors that will affect the development process at the very beginning.
Scope based (per Milestone)
Here a client and development team define milestones iteratively, i.e. the next one is discussed and planned after the previous one is completed. A client approves the deliverables at the end of each milestone and only after that makes the relevant payment. An outsourcing company calculates the amount of money to be charged based on the number of hours developers spent to achieve a milestone goal.
Control over the scope and progress. A client knows exactly what piece of functionality is being developed and what results to expect at the end of each milestone.
Results-based payments. A client pays only after the milestone goal is achieved and the results are approved.
No risk of the wrong estimation. Like in T&M model, all payments are calculated based on the actual time spent on development.
Unfixed budget and deadlines. A client doesn’t know beforehand how much time and money the development of each piece of functionality will take.
Risk of disputes. If the criteria for a milestone goal are poorly defined, there is a high risk of disputes between a client and an outsourcing company.
All things considered, Scope Based model may be applied to the development of complex solutions which are to be built gradually. However, the mandatory prerequisite must be long-term and trusted relationships between a client and its IT outsourcing partner.
Putting it all together
The choice of the right type of cooperation must always depend on the nature of a project. In short, the Time and Material model should be your by default option. Fixed-price contracts fit well only a limited number of short-term projects when all the terms may be determined in advance. And Scope Based Model will bring the expected results only if you trust your developers and have established business relationships with them.