Mastering Software Project Estimation
Software development isn’t just one thing. It’s many things, and all these things are constantly moving and reconfiguring. This makes it very challenging to provide accurate estimates for timelines and resources. At Daring Bit Assembly, our unique approach to this fuzzy problem is systematic and multi-faceted, resulting in estimates that are reliable for our clients.
Discovery: A Crucial Foundation
The first and most crucial step of project estimation is ‘discovery’. It’s one thing to have a beautiful idea, but quite another to have a concrete understanding of the work required to bring that idea into reality. If you don’t understand the work, then you also don’t have any basis for estimation. In order to ‘discover’ the concrete requirements of a project, we collaborate closely with the client to identify the major deliverables. These deliverables are then broken down into their constituent parts, which include the user actions, application screens, user flows, and other necessary elements that will need to be built.
It may be tempting to skip over such a granular examination of a project’s requirements, but it’s important not to rush the discovery phase. We have found that thorough discovery not only results in a higher degree of accuracy for estimates, but also a higher likelihood that deliverables are delivered closer to the optimistic side of estimates.
Without proper discovery, any estimate is likely to be off the mark. It is through a careful, comprehensive discovery process that we go from idea to a set of well-defined, scoped deliverables from which we can build reliable estimates.
Scaling Mount Uncertainty
Once the deliverables are defined in a concrete way, project estimation can be approached mathematically. At DBA, we create a detailed document listing all of the elements that need to be built, like screens and actions, and estimate the required developer-days for each item. These preliminary estimates are not the final word, however, because most software projects involve a lot of uncertainty. No matter how detailed your discovery phase is, there are almost always new, emergent requirements and shifting goal-posts.
In order to account for these margins of error, we apply scaling factors.
Scaling Factors for Devs
Over many years of experience, we have found that all developers’ estimates are off by a predictable factor. This factor is different for every developer, and we track historical data to take this into account. Additionally, we have our developer teams track their own scaling factor so they know how to scale their own estimates.
Scaling Factors for Verticals
At DBA, we work across a number of different industries, each with their own unique sets of challenges. Consequently, our estimates need to be industry-specific for them to be accurate. For example, financial and healthcare projects tend to have higher delivery costs due to the complexity and regulatory environment of these industries. We apply a unique scaling factor to account for these industry-specific characteristics.
We have found that professional project management is key to delivering projects on time and on budget. In order to account for this, we add 20% to our estimates to provide for project oversight, budgetary controls, timely service, regular updates, and product development.
It’s always important to have the right tools for the job, and that’s true for project estimation. At DBA, we have built our own web applications and spreadsheets to help us manage this complex task efficiently and accurately. Having a set of standard tools customized to your estimation process is critical, not only for the immediate needs of a specific project, but because it serves as a destination for future improvements. After one project is complete, it’s very easy to migrate everything you learned back into the standard template, so that future estimations benefit from your cumulative knowledge.
Every team is different, but with AI and the no-code ecosystem, even small teams can build custom tools.
After applying the scaling factors to our preliminary time estimates, we’re ready to begin putting together our final project estimation. The developer-days required for the project is multiplied by the number of hours in a standard work day to give us the total number of development hours required. The resulting figures are distributed across various job types (front-end, back-end, QA, etc). Some hours are added for handling product launch and squashing initial bugs. The total hours are broken down into a week-by-week, hourly estimate, within a spreadsheet that builds the cost associated with the time estimates.
Once the final estimate is complete, we walk through it with our clients. Thanks to our comprehensive approach, we are well-prepared to answer any questions that may arise. Once our clients are satisfied that the expectations we’ve set are reasonable and well-justified, we can move confidently into the implementation phase.
Revisit, Revise, Reset
Project estimation isn’t necessarily over just because we get to the implementation phase. Rather, estimation is part of our end-to-end project workflow. During implementation, we continually cross-check the estimate with how long the project is actually taking. This helps keep everything on time and on budget, but it also helps us to identify factors that may have been unforeseen. Regular check-ins with clients and stakeholders are vital to address any concerns and to adjust estimates as needed.
When a project is complete, we maintain a historical record of how well our estimate lined up with the actual result. This valuable data ensures that future project estimates reflect our cumulative learning from real-world scenarios.
Worth Your Time
One of the most common pitfalls in software project estimation is rushing the process. It may be tempting to begin a project as quickly as possible, but failing to adequately scope the deliverables only results in unrealistic expectations and, ultimately, eroded trust between you and the client. Even with our many years of experience at DBA, we understand that you can’t take anything for granted, and that every project is unique. That’s why we often invest more than ten hours in preparing a reliable estimate that sets realistic expectations, and builds trust between our team and the clients we partner with.