Why Fixed-Price Software Development is a Death Spiral
When hiring developers to build an app, most people want to know the cost up front. After all, how can you manage your budget if you don’t know the cost?
We have resisted the pressure to provide a fixed-price quote and have, at times, lost work because of it. The recent collapse of high-profile app development company Appster has validated my stance on this issue.
Appster disrupted the app development market by claiming that fixed priced development was the only way to go and anyone not working this way was unprofessional. Co-CEO Mark McDonald wrote on the Appster website: “First, I advise you to NEVER agree to pay an app developer or an app development company by the hour. This is a great way to end up throwing your money away… Professional, responsible app development companies know how long it takes to develop an app, and will have no problem quoting you a fixed cost.”
I started reinteractive in 2010 and, while I feel for the founders, I know that the specific business model they chose to work with of fixed price app development is simply unsustainable for any software business and leads to bad outcomes for the clients. There are numerous reasons why this is so dangerous.
Over the years, I’ve done my fair share of software development, I’ve even created a mail handling software library that is now beyond 147 million downloads and counting. If you sat me down right now and said, “give me a fixed price to rewrite that software library”, after the fact, I could give you a very accurate quote.
In fact, if I built an app for you, and then afterwards you asked, “how much would it cost to write that again?” I could give you another very accurate price, because I had just done it. The key word here is “after”.
The ability to do give an exact, correct fixed price quote prior to building an app quite simply can never happen. Every app is unique. Sure, there are similarities between applications, but you wouldn’t be willing to spend tens or hundreds of thousands of dollars if it was going to be exactly the same as another app! You want it developed it because it doesn’t already exist off-the-shelf. If it did, you could just purchase it and be done with it.
An analogy is asking an architect to accurately price the design and build cost of a one-of-a-kind, unique home after giving them a few pages of brief as well as a couple of block diagrams showing you want rooms here, here and here with a bathroom there. While a good architect could give you a broad price range, we can all understand that in a situation like this, the devil is in the details. Changing the finishes of various items such as a vinyl floor to solid oak obviously would have a massive impact on the end price. There is exactly the same situation we face in app development.
So, fine, fixed price quotes are hard to get right, why is this a problem?
When you get a fixed price quote, the developer is going to maximise on doing as little as possible to achieve the letter of that scope, while the client is going to maximise on trying to get every little extra included in the fixed price.
Additionally, if you are wrong on your estimate (and you almost certainly will be), then you won’t get paid any more to handle some unforeseen complexity or additions from the client. Now you have a developer working for free and not earning income.
This might be OK if the sales are rolling in thick and fast and you have money to burn, but three or four of these in a row and suddenly a significant portion of your team is a pure cost AND you aren’t earning in money from selling them.
What happens then is a choice. Either you cut your losses and refund the client. Or, you sell a new customer, get some cash, and put the developer on a new project while trying to complete the old project at the same time.
This second option never works out well. The developer gets overworked, and unresponsive to the old customer. The old customer with their now seemingly unreasonable demands takes up more and more time of the team and saps morale. And if the new sale doesn’t come in then voila, you are in liquidation because you can’t keep the cycle going.
This is why, in our eight years of continuous 30% year on year growth, we have never done a fixed price job. Our model works because the client gets what they pay for. Detailed scoping sessions with clients clearly brings a quote into an accurate range, but there always has to be contingency factored in regardless.
We continuously deliver our work every week to the client and they can tell if they are getting their money’s worth. We are completely transparent with daily standups and the clients know exactly what the developer is doing on a daily basis and we are agile. If at any time they feel like they are not getting value, they are free to take their code and work with another development team. But this is extremely rare.
Working on a Time and Expenses basis on software development works best for the client and the developer. I have yet to meet a developer that “went slow” to earn more money. Not only is that unprofessional, you would soon be caught out and be out of work. Reputation and referrals from satisfied customers mean everything in this business.
Running a business is difficult and statistics show that more than half will fail. It is never easy, but each time we take with us some excellent lessons for our next venture. I am sure that Josiah and Mark, the founders of Appster, will recover from this experience and again be a force to be reckoned with in the development space.