How Do I Get an Accurate Custom Software Estimate?
Since software development requires a variety of technical and design skills, getting an upfront estimate that is accurate can be frustrating and difficult. Even the simplest software projects involve more than just writing code. When estimating a software project, one must minimally include time for requirements specification, user experience design, technical design, user interface development, logic development, quality assurance testing, and project management. Each aspect of design from User Experience Design to Technical Design involves making numerous decisions, each of which can impact the implementation estimate. Regardless of what type of software methodology is being used, forecasting the project’s cost in advance requires a complete and detailed understanding of the project from start-to-finish. Oddly enough, technology-related challenges are far less likely to cause project overruns than poor planning and shifting software requirements during the project.
Lack of precision in requirements and software design lead directly to inaccurate effort and cost estimates. Developers are best able to estimate at the task level but are unable to do so when they do not have a clear understanding of what the software is supposed to do and how it is supposed to do it.
It has been our experience that most companies that are looking to develop software do not realize the level of detail required and the volume of questions that must be answered to support a detailed and accurate estimate. If a business user lists out a set of detailed business requirements and asks a developer to provide an estimate without allowing for a solid design process, it’s reasonable to expect that a developer must make 5 or 10 assumptions per requirement in order to deliver that estimate. With so many assumptions being made in the estimate, it is rarely a good idea to use those estimates for making solid business decisions or setting stakeholder expectations. How can you avoid entering into a business relationship with an estimate and timeline that will most likely change during the course of the process?
The Discovery & Design Process is KEY
It seems axiomatic, but a solid estimate cannot be developed without an extremely clear picture of the end product. It would be like asking a builder how much a custom home will cost before any of the architectural and design choices have been made. Two-story or Ranch? What kind of tile in each bathroom? A kitchen island or large dining room… or both? Would you like a terra cotta roof, shingles, or a flat roof with stairs leading up to it so it can be used as an extra place to entertain guests?
Building custom software is very much the same as there are a myriad of options, choices, and decisions that must be made before an accurate estimate can be completed. It helps to start by asking these three basic questions:
1. What are the objectives of the project?
What often happens is that the stakeholder thinks they have a clear idea of the project’s objectives. Many unseasoned software developers take that initial information to develop an estimate not realizing at the onset that many future decisions will have a greater impact on the cost than they originally imagined. Inevitably, when you estimate a project with insufficient discovery and design, you will soon find yourself discussing “design clarifications”, “scope creep” and “cost overruns”.
If you are thinking, that’s just common sense, you are almost right, it’s uncommon sense. The reality is that it’s extremely common for executives, managers, clients, and stakeholders to require estimates to be generated before they are willing to spend time and budget on a design process. We couldn’t tell you how many times we’ve been asked to provide an upfront estimate and the request usually starts like “I won’t hold you to it but … “
We cannot state it enough – the more detailed the vision, the more accurate the estimate.
2. What are the technical aspects of the software?
Even if you get the requirements completely nailed down with sufficient detail and specification, there are many technical implementation decisions that can dramatically impact the estimate and costs of building the software. What are the technical decisions that must be nailed down? Will the software be used in the cloud or set up locally? Will legacy software need to be considered? Will every aspect be customized or will existing platforms be incorporated? Will it be predesigned, or will a design engineer need to be involved?
Technical due diligence is just as important as crystal clear requirements’ specifications and you will often find that different developers will suggest different technical approaches to the same problem. For this reason, we feel strongly that initial design work should be performed by a seasoned Solution Architect. The decisions made in early design can greatly impact the project budget but more importantly, these core decisions will drive the long-term success or failure of your application. It’s easy to fix a software issue or bug during development but much more difficult to fix architecture level mistakes. Performing upfront design will take some time, effort, and budget but it can help you avoid some very costly mistakes and increase the likelihood of your development team hitting their estimates.
3. Have you selected a capable technology partner for this project?
Nailing down the requirements and technical design details are prerequisites to creating an accurate development estimate but far from a guarantee of getting one. Certainly, there is a human factor involved where some developers are better than others at creating accurate estimates. Experience is a key factor here as you can’t expect to get an accurate estimate from a tech partner who is not experienced in all of the various disciplines of software development. Much like the medical industry, technologies tend to specialize in certain areas such as back-end development, front-end development, and mobile development. Just as most software projects are delivered by the collective efforts of a team of specialists, so too are the best software estimates. Be wary of an implementation estimate that is generated by a single engineer as it is rare that a single engineer has experience in all of the disciplines required to deliver a modern software project.
Get the benefit of working with a full-service development company that employs specialists that can work together to deliver a high-quality product across all layers of your application.
Getting an accurate software development estimate can be difficult, but it can be accomplished. Taking the time upfront to do proper due diligence prior to estimating a project can sometimes be a tough sell to management but it can also help avoid major misses and failures during project execution.
Completeness and specificity of project requirements and technical design will not only support more accurate estimates but will also improve project delivery through reduced scope creep and mid-project clarifications. The detail and energy that you put into getting an accurate estimate will make a huge difference to staying within budget.
Our downloadable eBook, The 5 Pillars of a Successful Software Project will help you break down your project’s requirements into more manageable pieces.