At Terralien, I work with entrepreneurs to create great custom web and mobile applications. Few people get to be part of taking so many new ideas from the backs of napkins to actual revenue generating products. One of the challenges to getting things started is dealing with the question: “Can you tell me how much this is going to cost and will you agree to do it for exactly that price?”.
h2. Understanding Fixed Price
A fixed price payment model is easy to understand:
- You describe what you want (a spec); the developer gives you a price.
- You sign the contract; the developer builds exactly what you described.
- You approve the project; the developer cashes the last check.
It’s a great process except that I’ve never seen an early stage custom software development project work this way.
When it comes to custom development – that is, building something that’s unique and 100% suited to your needs – a fixed price agreement will almost always cost more and give you less than you need.
How’s that possible? Let’s use the analogy of buying a house. When you look at an existing home, you look to see whether or not it has what you want. Does it have the right number of rooms? Are the materials what you expected? You negotiate a price based on what you see in the house plus the anticipated cost of making changes so you’ll be happy to live there. This is the maximum you are willing to pay based on what you see at the beginning.
If you chose to build a custom house from the ground up, there’s nothing to see at the start. It would be difficult to negotiate a final price for the house before you start the work. Instead, you find a builder you trust and talk in terms of your overall budget. You list what you think you want in a house and the builder makes suggestions. The first step is to draw up some plans and work through what’s possible. Once you’ve got a plan, you’ll have a much better estimate on what the house will actually cost. Since it is a custom house, the builder will almost always give you a price range. That’s because builders know that home buyers make many changes between the plan and completion.
Building custom software is similar to building a house.
I hear successful entrepreneurs say the product they actually created isn’t the one they set out to build. That’s because they had an idea about the business but remained flexible throughout the process. This allows them to test what they think their customer wants and make changes based on the feedback they receive.
Time & Materials – a controlled alternative
The early stage custom software development projects I see are almost always pressured by time and budget constraints. These pressures are real and quantifiable. Your response to them should be as concrete as possible – this isn’t the time for guessing.
Instead of taking an educated guess at a price and locking into the risk of costly changes, a Time and Materials (T&M) agreement with your developer will keep you in control and significantly reduce the risk.
Time and Materials agreements:
- avoid the increased cost and time required for hashing out infinite details of how the app will work,
- reduce the risk of unmet expectations, and
- give you the speed and agility to adjust to new information you learn from developing your customer.
The goal is to spend as little of your money as possible to get the core feature set working at a ‘good enough’ level to prove people will buy it.
At Terralien we make this work by using a process that gives you daily visibility into how your money is being spent and allows you to make adjustments along the way. No punishing spec revision cycles. Just responsiveness and new code. You (not the spec or the agreement) decide when the software is ready.
If you have a great, unique idea that can only be brought to life by custom software development don’t get caught in the fixed price trap. Find a team you can trust and make sure they’ll give you a Time & Materials agreement. You’ll end up with more control over the development process and an app with real revenue to talk about at your next meet up.