It sounds bizarre, but software development can start months (if not years) before the first line of code is typed. Moreover, the earliest strategic decisions are usually made by a customer before the contract is signed.
One of these early decisions is the choice of a software business model that will fit the customer’s business needs, expectations, and budget.
A time-and-materials contract is one of the options.
The name of the time-and-materials business model is pretty self-explanatory. The customer is paying for the time and the materials that the contractor has invested in the development of a product. In the case of software development, it means that the customer pays for the developers’ time according to their rates and additionally for the tools and infrastructure the developers will need to deliver the product.
It’s important to avoid confusion here. The client is actually paying not for the amount of work but for the man-hours it takes to deliver a product and push it to the market. So there’s a risk for the client to get stuck with a dishonest vendor who will inflate the time it takes to deliver the project (thus increasing their own earnings) into infinity.
Luckily, there are two simple rules for the customer that help negate the risk:
Don’t work with shady contractors. If the price for their service seems too good to be true, you probably won’t get the results you need.
Understand how the time-and-materials model works and use it to your advantage when drafting the contract. Speaking of which...
How does the time-and-materials model work?
A well-designed time-and-materials contract will ensure that you only pay when the work is done. In the contract, you establish milestones and deadlines, and you will receive the functionality you’ve paid for when it is due.
Once it’s all set and done, you will settle on the IT team that fits your scope and requirements, and the team will start the development process according to the workflow.
The time-and-materials workflow resembles a loop. Here are its stages:
Setting the goals: You and your vendor will divide the project into separate parts. You will receive estimations for each of them and an approximate scope of work. The flexibility of this “pay-as-you-go” model allows you to make changes and add new requirements along the way, which is great for fast, feedback-driven development. Remember though that every unplanned addition will expand the scope of work and, as a result, the sum you will be charged at the end of a milestone.
Doing the work: Your contractor will oversee their developers as the actual coding magic happens. You’ll be working with an established team and a fixed hourly rate for each member. It’s a good idea to interview the people who will be working on your project to make sure that their rate adequately reflects their experience and level of technical skills.
Billing: This part is fairly simple and straightforward. Multiply the hours by the rate of your development force and pay for the completed work. Do note that you only pay for the work you need. You can’t be billed before the project manager receives your approval.
The stages repeat for as long as you need the vendor’s services.
Flexibility to make feedback-driven changes, continuous communication, and overall control over the development cycle are the most obvious benefits of the time-and-materials model.
Let’s take a closer look at the trio.
Continuous communication: Many people get this wrong. Continuous communication is not about your constant meticulous work on software requirements. You may lack the specific skills or background to craft appropriate technical documentation. Maybe you just don’t want to spend much time communicating with your team. Task formulation and ongoing communication within the team are the job of the project manager. It is also the job of the project manager to take your business objectives and convert them into development requirements. Your role in continuous communication is that you can keep your finger on the pulse of the development cycle, receive updates, and provide feedback.
Flexibility to adapt or change on the fly: The time-and-materials model works best in sprints, so you will be receiving new functionality every month or even twice a month. It means you will have time to test, experiment, and receive feedback from real users. The scope is as flexible as you need it to be. You can introduce changes into the scope without having to reconsider the project as a whole.
Overall control: Continuous communication and flexibility of development enhance your control over the project’s implementation. You get even greater control if you have access to project management tools like issue trackers or Kanban boards. You can clearly see if there’s a bottleneck somewhere in the process. More on the matter, the vendor knows that you can see the real progress at all times. Use it as a lever to keep them on the right track.
The model’s three cons, interestingly, sprout from its greatest strengths.
Better control leads to more involvement: Continuous communications has its drawbacks. You can find yourself in a position of bottleneck and without your involvement some development process might stop.
Higher flexibility can mean unplanned spending: The ability to add, remove, or change features and functionality on the fly is almost a necessity in today’s competitive world of fast-paced software development. That said, any change means more work, so the sum on the bill can be higher than it was initially planned.
Risk of falling victim to a shady vendor: If you can’t check whether the rate is justified, there’s the risk of being deceived by a vendor who charges you by the hour.
Now that we are settled with the pros and cons, let’s try to find a fitting strategy for mitigating the negatives.
Let’s start with keeping your budget safe by understanding some pivotal terms.
Labor rate is a tool that’s used to fix the cost of any labor-related service. Be it the work of developers, QA engineers, UX designers, project managers, or any other specialists, the rate needs to be set in stone.
Material markup is the price the customer pays for the materials needed for development: for example, third-party software, cloud infrastructure, or data storage. Expect to see retail prices unless specified otherwise.
Maximum labor hours are the limit you set as the customer. This is a fine way of controlling development costs by specifying the number of hours for which you are willing to pay.
And lastly, there’s the not-to-exceed point. It is similar to maximum labor hours but focused on the budget as opposed to the scope. The not-to-exceed point is your budget ceiling. Combined with maximum labor hours, it protects you from being overcharged due to unexpected changes in the development scope or due to any other reason.