If you have ever received an estimate for a software project that turned out to be off, off by a long shot, then you’re not alone. The estimates of most software developers often miss by a factor of two to three.
Here’s an axiom you can bank on: The less experience the developer has, the less accurate the estimate. Yet, even seasoned veterans miscalculate.
Does it surprise you that we’d admit that? It shouldn’t.
Accurate quotes requires us to predict the unpredictable not only for ourselves but also for other developers on the team, for our clients, and for technologies that we use but don’t control.
On the rare occasion that we receive a comprehensive requirements document, we go over it with a fine-toothed comb. We price out each feature. We sift all those development hours and shake off the excess.
We feel proud when we quote with such precision. Doing so requires intelligence, expertise, and foresight. Then, a single variable beyond our control arrives on the scene and blows up the estimate:
- Stripe updates their API.
- iOS deprecates a function.
- Two technologies inexplicably stop playing well together.
Estimates are guesses, our best guesses.
Depending on the thesaurus, the two words are synonyms! “Accurate software estimation” is like hiking from San Francisco to Los Angeles.
You are not moving in a straight line.
That’s why good financing agreements, like good code, must anticipate such surprises and accommodate for more than the immediate issues. They have the backbone necessary to flex and grow with the project. They can adjust to unforeseen changes in scope that would otherwise threaten the project’s viability.
If you have participated in a software development project in the past, then you have probably heard of agile methodologies. Those short development sprints and rapid iterations can certainly help clients manage their risk and uncertainty:
“In two weeks after two sprints, they’ll be able to tell me how much work is left, how much it will cost, and their confidence level in both estimates.”
But which pricing models should you use and when?
At Clear Function, we take three different approaches to financing.
1. Fixed Bid
When the project calls for developing a fully functioning system by a certain deadline, many clients want a fixed bid.
Fixed bids seem straightforward, but development is not. Fixed bid pricing is thus tricky because it requires us to have a comprehensive understanding of project scope before the project begins. We must determine whether or not a certain change order or request from the client is still in scope and part of the original agreement.
If a client has already worked with another technical team or has developers on staff who are available to do some of the work, then a fixed bid becomes less risky. We can kick off the project without worrying overly much about getting hosed.
But in order to minimize chaos and maximize clarity, we must stay in close communication with our clients. Burning through hours of a client’s budget without their approval is a surefire way to damage their trust and compromise the project.
The only way to avoid such awkward situations with a fixed bid is to run to the client at the first sign of trouble. That way, we can figure out a plan of attack together.
How to Prepare for Fixed Bids
With fixed bid, it’s important to stick with the original plan. If the developers re-architect the application as they go, they will blow scope and their clients budget along with it.
What is in the statement of work? We must remember to not outsmart ourselves.
- Initiate a discovery project. If clients have never worked with a technical team, then we initiate a discovery project. To get started in these murkier scenarios, we take a wild guess at the overall size of the project. We then slice off a percentage of the project’s estimated cost and assign that to the discovery project.
For example, let’s say we estimate that a project will cost $100,000. In order to do a more thorough review of potential complications and realistic workload, we ask for 15% up front. Once our clients agree, we dedicate that $15,000 to helping them define their objectives based on their remaining budget.
Confirm the accuracy of the initial proposal. Then, at the end of that discovery phase, we can confirm the accuracy of our initial proposal. We have much more confidence because we have spent significant time uncovering roadblocks.
Vet the client. To be 100% honest, we also use the formal discovery phase to vet the client and the project. We like to work on projects we believe will succeed, ones that justify the opportunity cost.
When clients commit to our version of discovery, we achieve better alignment. They trust us to ensure that the project doesn’t break the bank and positively affects their bottom line.
- Set the right pace. Finally, discovery projects put the emphasis on quality as opposed to just speed. There’s no sense in building the wrong product quickly, but there’s a lot of sense in building the right product at a sustainable pace.
Retainers usually grow out of a relationship with an existing client.
Once we have completed their project, either party might identify a few lingering issues, enhancements, or small, follow-on projects. A retainer amortizes the budget for all those immediate or anticipated touch-ups across however many months.
Usually billed per month, retainer projects allow us to set aside an agreed-upon block of work for a set price.
What we love about the retainer model is that clients are “saving their places in line” with us. We’re letting clients know that they can depend on us for a given number of hours, and depending on the arrangement, that can sweeten our relationship with them and strengthen their product at the same time.
How to Prepare for Retainers
Time Tracking – With retainers we must stay proactive about our time tracking. How many hours have we spent each week on retainer clients?
Communication – If we foresee spending more time on a project than the contract includes, then we need to reach out to the client. We ask them if we need to put the brakes on or if they want to keep up the speed by paying for an extra block of time and attention. They appreciate this straightforward approach, and we avoid having to ask for money at the end of the month after we’ve already burned the hours.
Flexibility – With that said, we also give our clients the option to roll some hours forward from one month to the next to prepare for a big push.
3. Time & Materials (aka, Staff Augmentation)
This approach to financing means that either one of our developers will work for an extended period of time as part of our client’s staff.
Most of Clear Function’s Time & Materials engagements don’t require our employees to work off-site, or rather, on-site with the client. They stay in our office and work remotely, typically full-time, for as long as the client wants them.
How to Prepare for a Time & Materials Contract
Believe it or not, we really enjoy being a part of our clients’ teams from time to time.
With these contracts, we are not involved in constant discussions about which work is ours and which work belongs to their in-house teams.
Because one or more of our developers have, in effect, joined their teams, our clients are paying the negotiated hourly rate, based on seniority and skill-level. For example, they might choose to augment their team with a senior-level engineer who can guide their mid-level engineers for a season.
They trust us. They like our people, our culture, and our development process. So it’s easier and less risky to borrow one of our engineers for a season than to try to go out and recruit on their own. So this arrangement can work really well for both parties.
When a client needs an experienced (but temporary) project manager to oversee incremental improvements to a larger system or the roll-out a new product, time & materials work particularly well.
Hold on. Don’t say “Goodbye” just yet.
Financing your software projects doesn’t end after the ink has dried. As we deliver on your needs, you may discover new needs and necessary maintenance work that fall outside of the original scope.
We have an easy solution: We will keep communicating with you.
When we see things that will require ongoing attention—“By the way, this thing will need an oil change every 3,000 miles”—we’ll let you know. We can modify our existing agreements to keep the project moving forward, or we can begin handing the project off to your in-house team.
If your plans change, you know where to find us.