If you’re in charge of cost estimating for software development projects, there are several potential oversights you could make that may lead to faulty estimates and unwanted cost surprises. Let’s review a few common project process misconceptions and the added costs that you might be missing in your estimates:
1. Forgetting to incorporate infrastructure costs
Successful software development projects require more than just a few desktops and a network connection. Crucial infrastructure elements that need to be set up for the development team include configuration of the source code repository, artifact management servers, test environments for manual and automated test activities and virtual servers. You’ll also need to manage permissions for each element so that the right people have access as needed. While these may or may not be considered direct costs associated with your project, the fact that some of these basic requirements may involve help from other groups in the organization means that not considering them as part of your own plan could lead to delay and additional program costs.
2. Overlooking staff training and turnover
Technology is always advancing, so failing to keep up with changing tech needs or new systems can cause your project team to reach success slowly, especially if you don’t invest time and money in training your team on the latest relevant tools. Depending on the technologies you embrace, investments in training could be a boon to project success and lead to an increase in productivity over time. If your estimate includes the perceived benefits of adopting new technologies, it must also include the time, effort and cost associated with getting your team up to speed with those technologies.
Turnover should also be accounted for in your project estimate. The chances that your team of people will look the same at the end of the project as it looked at project kick-off is quite remote. Team members will come and go and this is especially true in the software development industry where expert-level skills are constantly in demand and people frequently choose to move for more money or better work experiences. It’s important to understand your industry and the appeal of your current technological landscape to accurately factor turnover into your estimate.
3. Miscalculating project dependencies and risks
It’s likely that most of your projects depend on external factors for success, whether it be capability delivered by another group in your organization, interface with an API, third-party COTS (commercial off-the-shelf) capability or open source capability. All of these dependencies add risk to your project; if the third-party or API solution doesn’t behave exactly as advertised or creates software or system-level conflicts with your application, it will take time and effort to iron out these conflicts. While it’s impossible to know in advance where these pitfalls will be, it’s certainly not impossible to understand the dependencies that your project has outside of your control. It’s essential to know the risks of these dependencies and work this into your estimate or at least into the project’s risk analyses, which should be a required component to the software development estimate you deliver.
4. Not planning for deployment and maintenance
Many projects are planned as though the software project will be ‘complete’ when the last line of code is written and the last test passes, but this is both unrealistic and shortsighted. As a project begins to wind down and the question of how to transition this application to deployment and maintenance is answered, the development team will be bogged down with tasks. This might involve bringing the deployment and maintenance teams up to speed, developing additional code to support specific deployment or installation tasks and leading training on the development processes and practices that need to be understood and followed through the maintenance phase. Your project estimate must also include the time and effort devoted to the transition of software to the deployment, operation and support teams if they are different from the development team.
5. Misunderstanding or miscommunicating the project management triangle
Good project managers know that there are three dimensions to every project: cost to deliver, time to market and quality of the finished product (the right stuff, done right). And we all know that tradeoffs are often required to get the product to market successfully. It’s unlikely that you can achieve all three dimensions completely, so it’s important to create an estimate based on as much consensus as possible among the project stakeholders regarding the project management triangle priorities. If some stakeholders hold out for different priorities, the project will be subject to churn and contention that will cause schedule delays with potential cost implications.
By definition, an estimate is not an accurate number, but there are many steps you can take to ensure that your software development estimates are sensible and more likely to be reflective of the final projects you estimate. While not exhaustive by any means, this list of errors provides the much-needed context to estimating that may be a little out of your traditional estimating wheelhouse but should be considered and incorporated into estimates nonetheless.