When a firm seeks a custom software estimate, they sometimes carry over assumptions from other – often very different – types of endeavors. Some clients think in terms of construction. Others approach a project with the mindset of a manufacturer.
At best, these assumptions can become distractions; at worst, they can derail the entire development process. Software is a distinctive craft — and creating custom software often means bringing something utterly new into the world, through a methodology that is largely unique to software.
This fact has important implications for the custom software estimate process, so we’ve assembled five things you ought to consider when seeking estimates from a custom software development partner.
1. What you want will change.
Lots of firms — maybe most firms — think they know exactly what they want at the outset of a project. In practice, we’ve never seen a project end with the same features it started with.
Once you see a feature in practice, you might find that it doesn’t work the way you expected, or accomplish what you wanted. Or perhaps as you collaborate with your software partner, you will simply discover a better way to accomplish your goal. Software development is iterative, constantly building on the lessons of what came before and finding new opportunities for improvement. Your estimate, then, is for a project that will likely look very different when you’re done.
This may seem like discouraging news – but in fact, it’s the very opposite. The estimate process is really the beginning of the development process, a stage where you start to gather a range of expert perspectives on where your project will take you.
2. One size rarely fits all.
When a client comes to a software company, they’re asking for the most accurate projection of cost and project timeline at that time. Some less reputable software partners will offer one-size-fits-all solutions, claiming to leverage open source tools to keep costs down. But custom software solutions typically require careful tailoring of every component to the task at hand. Be wary of partners that promise an easy road.
A more reputable development partner will collaborate with you to get a good, high-level overview of project. They will ask questions. That doesn’t necessarily mean uncovering every detail, but it means taking a thoughtful snapshot of your needs and putting numbers to it all, folding in time for project management, bug fixing, and testing in a way that accounts for the particular needs of your particular project.
3. Cost, schedule, and features are a balancing act.
Software developers have a concept called the Golden Triangle of Development, which in its simplest form states that you can never achieve the ideal features in the ideal time for the ideal cost. At best, you must choose two of these to prioritize.
This is, of course, true of many types of projects, but it’s particularly important to cultivate realistic expectations at the outset of a software engagement. Facilitating an effective balance and sheparding a project to completion require a high degree of engagement from clients.
4. You can’t always add developers to speed things up.
If you add more bakers and ovens to a pie project, you’d expect to speed up your pie production accordingly. Shouldn’t software be the same?
Unfortunately, no. You can’t always add x developers to speed up a project by y speed. Often, more devs means more project management overhead, explaining and spreading out tasks so they don’t overlap. And frequently, there are only so many discreet tasks an individual developer can work on.
5. References are essential.
The very best thing you can do as you start to collect custom software estimates is talk to other clients about the process. How did it go for them? What did they create, and how much did they end up spending? These conversations will give you valuable context for the project you’re about to pursue.
Custom software can be transformative for a business, but in order to make the development process most effective, it’s important to begin with clear goals and informed expectations. When these elements are in place, you’ll be well-prepared to make your software as effective as it can be.