Software development projects, many of the times, often exceed their estimated deadlines, resulting in budget overruns, lost revenue, lost market opportunities and, for software development vendors, service contract penalties.
To prevent these unwanted consequences from happening, project managers should adopt a systematic approach to evaluating project duration. Below, we share the method that helps Trustify Technology’s project managers to provide accurate estimates of outsourced software development practices. You can apply this knowledge as a general guide to determine the correct time expectations for your software development process.
Software Development Project Time Estimation
Step 1. Define a project’s complexity
You should consider the complexity of the project to understand the level of development risk that may affect the overall project timeline. Trustify Technology recommends dividing projects into three categories based on the Cynefin framework.
- Clear: this involves developing simple software with fixed requirements, for example, a straightforward e-commerce website for a small business. Here, estimates will be highly accurate, and the risks are also the lowest.
- Complicated: under this category, while core requirements are clear, some aspects of the software may need deeper analysis, introducing moderate risks. For example, Building a CRM system integrated with third-party marketing tools. Small risks may arise during the integration part of the project.
- Complex: Development involves innovation or specific technology or uncertain business requirements (or both), such as developing a predictive analytics software solution for the healthcare industry. Compared to the two categories above, this type of project is usually higher risks and uncertain timelines.
Understanding the complexity of a project helps technical managers determine how much time should be allocated to the project to make up for potential risks.
Step 2. Give ballpark estimates
Before making detailed time estimates, the client or internal decision-maker may need an overall estimate of project duration to establish expectations. In this case, after specifying the software complexity, you can give a rough estimate based on previous experience with such projects or industry standards. For example, “It will take two teams of 7 people approximately 3 months to complete this project.”
Step 3. Build and estimate the scope of work
To get an overview estimate of software development time, you should establish a scope of work that covers the software requirements and then estimate each individual requirement. Don’t forget to consider the software development methodology your project will use.
Traditional (Waterfall-like) methodologies
Traditional projects usually have fixed requirements that do not change over time. You can start by breaking down the system requirements into small, easy-to-monitor workpieces. Trustify Technology recommends using the Work Breakdown Structure (WBS), a tree structure that visualizes each stage of software development and the tasks involved.
After completing the WBS, estimate the time for the respective tasks. You can use the following methods:
- Similarities: Data-driven estimates based on similar activities in previous projects. If you can see that there is a difference between the estimated and actual time spent on a previous project, you will be able to determine which activities may pose a threat to the schedule. Therefore, they should allocate more time and effort to drive development.
- Wideband Delphi: A consensus-based group estimate in which group members individually estimate WBS tasks, compare results, ask questions, and interact with each estimate.
Note: For small projects, an accurate development time estimate is reliable enough. Whereas for larger waterfall projects it’s better to use min/max deadlines for each task or at least for each stage of development in the WBS. Therefore, you want to make sure that there are no problems that could change the course of the entire project.
Agile methodologies
Here the scope of work varies according to the requirements. Workloads are built based on value to the end user: the more value a feature brings, the easier it is to develop. Scheduled jobs appear in the backlog – usually as prioritized user stories.
When working on an agile project, we recommend not estimating the time required, but estimating the effort. You can use story points as participation units for user stories. To discover their values, project managers at Trustify Technology typically hold poker planning meetings with their teams:
- You start by estimating the complexity of an example of a well-known user story. For example, the story “Can I log in via the web”. Let’s say your team gets 8 story points. Now anyone can use this story example as a reference to judge the difficulty of other stories.
- You should review all user stories in the backlog and have team members assess the complexity of each story by selecting a value card and setting it aside. Once everyone is done, open the cards and talk about them.
Note: The value of each story is not defined by the average of the results. Instead, the team must reach a consensus and decide which of the proposed hypotheses is the most valid.
Using the results of the sessions, you can translate the workload into an estimated software development time when starting the project. You can do this by asking your team to implement example user stories. For example, if a story has 8 story points and your team completed it in 48 hours, then 1 story point would equal 6 hours. If you have a total of 1,200 story points, you can multiply that by 6 hours to get an estimated project time: about 7,200 hours.
Step 4. Add a risk buffer
You need to add a risk margin of 5% to 25% of the total project time, depending on the complexity of the project (from step 1), to avoid common risks:
- Problems that are difficult to predict (eg integration issues, software bugs as the user base begins to grow).
- The unpredictability of new technologies (such as third-party APIs that customers want to use).
- Conflict in a team can reduce productivity (for example, two senior developers with unique backgrounds have different views on the same thing).
Step 5. Make room for “time eaters”
Remember to add at least 20% of the project time to make up for “wasted time” such as team meetings, closing communication gaps, lost productivity, etc.
Combining the results of the above steps gives you a formula:
Project duration = Total estimated working time (E) + E * Risk reserve + E * Time sink.
Therefore, if the total project work time is estimated at 7,200 hours, the total project duration will be:
7,200 + 7,200 * 0.25 + 7,200 * 0.20 = 10,440 hours.
Still Not Sure How Long Your Project Will Last?
When estimating project time, you should rely primarily on business needs. If there is a lucrative market opportunity but a tight deadline, you can always try to speed up the project and stay on schedule. For example, you can use off-the-shelf components for your software or outsource parts of the project to reliable suppliers.
Trustify Technology can deliver your project with our best project managers. We set deadlines for your project and make sure it stays on schedule.