What every client wants to know.
One of the first questions asked by nearly every client is “What will this project cost?”. It is a perfectly reasonable question. Few of us have enough money to not worry about how much a project will cost. And all clients would like to know exactly what the price will be before undertaking a project.
The most easily understood pricing model is Fixed Price.
Fixed price contracts are simple in theory. Clients tell developers exactly what they want built. Developers respond with a price. A contract is signed. At the end of the project the product is delivered and the final check is cashed. Simple, right?
Yes. Except that reality seldom cooperates. Custom software is so full of unknowns that the best specified project is inevitably riddled with uncertainty both to the client and the developer. As a result, fixed price contracts are subject to constant and expensive renegotiation and nearly always cost more or deliver less than what you need. Or both.
What are you buying?
Fixed pricing is what most of us are used to in everyday life. We go to our local supermarket to purchase food items and expect to see the price clearly posted next to the milk. We call our local pizza parlor for a delivery and quite reasonably expect to pay the price we saw in the advertisement. Every few years we may find ourselves at the car dealer. A price is negotiated and we drive off in our shiny new vehicle. It would be absurd to be told that the price of our new car couldn’t be determined until after the contract was signed. But it works because the grocer, pizza shop, and car dealer all know exactly what the cost of their product before they deliver the goods.
There are two ways to buy a home. One is in the existing home market. You call realtors and tour a variety of options. Is the home the right size? Are the building materials of high quality? Is the heating and plumbing in good condition? Is the neighborhood one that you want to live in? After considering these questions and more, you negotiate a price and sign the contracts. The price is what you were willing to pay based on the known features of the property.
Or, you may decide to build a custom home. Now things get dicey. While purchasing your lot will go pretty much according to the fixed-price plan (find a lot, negotiate a price, sign a contract, write the check) from now on uncertainty plays a much larger role. You might hire an architect to design the home for you. You can provide a budget up front, but it is highly unlikely that you’ll find a contractor who will promise your home for that budget. Instead you will likely be offered a price range within which the contractor thinks your home may be built. Contractors know by experience that it is the rare custom home that is configured in the end how it was described at project start. It works that way because nobody really knows all of the decisions will need to be made along the way. And countless design changes occur as the home-owner-to-be thinks more about the home he wants to live in. Ultimately, you are buying a somewhat unknown set of materials and a whole lot of contracting time. You are engaged in a time and materials contract.
Why Time and Materials works
Custom software projects are always subject to schedule and budget constraints. These are real issues that require concrete responses as early as they are known. The response should not be educated guessing. And every estimate at the beginning of a custom software project is an educated guess. So recognize it for what it is.
A Time and Materials contract reduces cost and time required to (almost always unsuccessfully) hash out every detail of how an app will work ahead of time. It reduces the risk of unmet expectations because the flexibility inherent in the model allows the design to change as more insight is gained about how the system will work. And it creates an environment where client and developer can become team members working toward the same goal, the completion of a product that is good enough for success without wasting energy in conflicts over project scope.
Ultimately you, the client, decide when the project is complete. If you need custom software to enhance some business process or you have a great unique idea for a custom software product, don’t fall into the Fixed Price trap. The product will be better and you’ll be happier in the end having maintained control over the ultimate product. Find a development company you trust. Make them your partner. Everyone wins.