14
.
11
.
2023
8
.
11
.
2018
Ruby on Rails
Business

Time&materials vs fixed price - comparison of the popular cooperation models

Michał Krochecki
Chief Operations Officer

By reading this article, you will learn about the characteristics of the two most popular cooperation models with a software house. Sooner or later you will face a decision which will have an impact on the quality of your product, your budget, timeline and future planning. You will also learn how we do it and why. Enjoy the reading!

TIME&MATERIALS

With time&materials you pay only for the real, registered time spent on building the application. It is a flexible solution which allows you to make changes to the backlog, shift priorities, juggle with features, pivot, react accordingly to your current needs and the needs of your clients.

From Giphy

ESTIMATION

With the time&materials contract, there is a certain range of cost that you receive when it’s an application built from scratch that you need. You can choose different scenarios, shift the scope, choose an MVP approach and then iterate it, or demand a complete product.

FLEXIBILITY

As stated before, time&materials gives you the freedom to change, react quickly and adapt to the market in real time. You are in constant contact with a project manager and the team who can suggest a right course of action and support you with the planning of the new features. Time&materials helps in creating trust and strong bonds. Therefore you can expect a lot of flexibility in case of adding or removing developers from the team depending on the current condition of your business.

COST

A lot of people believe that when working on a time&materials basis, they won’t know the cost until the very last moment. It is not true. ** To avoid having uncertainties around, software houses give you estimations based on their know-how and experience.** Such a project is divided into stages/phases with most likely cost per each. On that stage, there is still time to make necessary modification to make the project most cost-effective.In case of the long-term development projects, the cooperation lasts for longer and it is fairly easy to plan the budget if you know how much you will pay for a full-time team.

When to use time and material?

  • when the project scope can change

  • you haven’t prepared:

    • a closed list of the requirements describing software you want to build:
    • product backlog in the form of User Stories
    • wireframes
    • workflows
    • graphic designs
    • integrations with external systems:

      • communication protocols to which your system will be connected (if they change during the development - you will receive deliverables which will reflect this specification.)
  • If you don’t want to pay the cap for unforeseen part of work and risks (which is added by the provider to the cost and schedule in fixed price, fixed scope, fixed time)

Fixed price

A fixed price contract is a contract in which a software house commits to deliver a piece of software or a complete application within a defined, unchangeable, therefore fixed budget. If the real cost exceeds the budget set in the contract, it’s not of the client’s concern.

from Giphy

ESTIMATION

If a software house finally decides to sign a fixed price contract, what may happen is that they add a safety buffer to the estimation as a precaution in case they encounter unexpected problems. It may increase the overall price to the point where a more flexible solution would be cheaper.

FLEXIBILITY

In case of the fixed price contract, any changes of the scope are endangering the agreed deadlines and budget, so a task once added to the scope needs to stay there. What happens if, after the development starts, a client decides to pivot? Fixed price makes it impossible to make any changes and even if a software house agrees to such an arrangement, be sure that the renegotiation will take time and the whole operation will be at risk.

COST

One is certain, the price won't change because it is in the contract, so it's good for the company's budget planning and stability. But when the application is delivered earlier than expected, you won’t get a refund.

When to use a fixed scope, fixed time, fixed price?

  • When you have thoroughly described a well-documented vision of the product you want to build.

  • When you have a very limited budget that by no means can be modified during the development.

  • When you have a short-term, fairly simple application to build.

Why we chose to use time&materials model at Visuality?

  • Onboarding, a team to a project, is cheaper for the client and at later stages, it is easier to scale-up the size of the team.

  • Our customers are having a business continuity and knowledge flow (https://en.wikipedia.org/wiki/Bus_factor)

  • The team greatly benefits from sharing challenges and ideas. It is proven that teamwork positively affects productivity and long-term motivation. Such circumstances are possible thanks to the time&materials cooperation model.

  • We were able to achieve very low staff rotation ratio because of company’s culture and high standards of work quality (e.g., professional project management, code reviewing, pair programming, investment days, etc.)

  • We can make sure that every engineer is dedicated to one project. We can witness the bond and engagement on both sides. Low turnover, dedicated developer, long-term project all that makes the cooperation smooth and pleasant.

  • We can manage the budget and time efficiently. The client pays only for the exact time spent on the development. The administration of sick-leaves, holidays, it’s all on us. Therefore the client can focus only on the product.

from Giphy

What do you think? Which model suits you more and why? Please let know in the comments or send me an email at m.krochecki@visuality.pl

Michał Krochecki
Chief Operations Officer

Check my Twitter

Check my Linkedin

Did you like it? 

Sign up To VIsuality newsletter

READ ALSO

How to become a Ruby Certified Programmer Title image

How to become a Ruby Certified Programmer

14
.
11
.
2023
Michał Łęcicki
Ruby
Visuality
Vector Search in Ruby - Paweł Strzałkowski

Vector Search in Ruby

17
.
03
.
2024
Paweł Strzałkowski
ChatGPT
Embeddings
Postgresql
Ruby
Ruby on Rails
LLM Embeddings in Ruby - Paweł Strzałkowski

LLM Embeddings in Ruby

17
.
03
.
2024
Paweł Strzałkowski
Ruby
LLM
Embeddings
ChatGPT
Ollama
Handling Errors in Concurrent Ruby, Michał Łęcicki

Handling Errors in Concurrent Ruby

14
.
11
.
2023
Michał Łęcicki
Ruby
Ruby on Rails
Tutorial
Recap of Friendly.rb 2024 conference

Insights and Inspiration from Friendly.rb: A Ruby Conference Recap

02
.
10
.
2024
Kaja Witek
Conferences
Ruby on Rails

Covering indexes - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Ruby on Rails
Postgresql
Backend
Ula Sołogub - SQL Injection in Ruby on Rails

The Deadly Sins in RoR security - SQL Injection

14
.
11
.
2023
Urszula Sołogub
Backend
Ruby on Rails
Software
Michal - Highlights from Ruby Unconf 2024

Highlights from Ruby Unconf 2024

14
.
11
.
2023
Michał Łęcicki
Conferences
Visuality
Cezary Kłos - Optimizing Cloud Infrastructure by $40 000 Annually

Optimizing Cloud Infrastructure by $40 000 Annually

14
.
11
.
2023
Cezary Kłos
Backend
Ruby on Rails

Smooth Concurrent Updates with Hotwire Stimulus

14
.
11
.
2023
Michał Łęcicki
Hotwire
Ruby on Rails
Software
Tutorial

Freelancers vs Software house

02
.
10
.
2024
Michał Krochecki
Visuality
Business

Table partitioning in Rails, part 2 - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Backend
Postgresql
Ruby on Rails

N+1 in Ruby on Rails

14
.
11
.
2023
Katarzyna Melon-Markowska
Ruby on Rails
Ruby
Backend

Turbo Streams and current user

29
.
11
.
2023
Mateusz Bilski
Hotwire
Ruby on Rails
Backend
Frontend

Showing progress of background jobs with Turbo

14
.
11
.
2023
Michał Łęcicki
Ruby on Rails
Ruby
Hotwire
Frontend
Backend

Table partitioning in Rails, part 1 - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Postgresql
Backend
Ruby on Rails

Table partitioning types - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Postgresql
Backend

Indexing partitioned table - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Backend
Postgresql
SQL Views in Ruby on Rails

SQL views in Ruby on Rails

14
.
11
.
2023
Jan Grela
Backend
Ruby
Ruby on Rails
Postgresql
Design your bathroom in React

Design your bathroom in React

14
.
11
.
2023
Bartosz Bazański
Frontend
React
Lazy Attributes in Ruby - Krzysztof Wawer

Lazy attributes in Ruby

14
.
11
.
2023
Krzysztof Wawer
Ruby
Software

Exporting CSV files using COPY - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Postgresql
Ruby
Ruby on Rails
Michał Łęcicki - From Celluloid to Concurrent Ruby

From Celluloid to Concurrent Ruby: Practical Examples Of Multithreading Calls

14
.
11
.
2023
Michał Łęcicki
Backend
Ruby
Ruby on Rails
Software