paint-brush
Effective Software Estimation: 5 Top Techniques to Use (and 4 to Avoid)by@alexomeyer
430 reads
430 reads

Effective Software Estimation: 5 Top Techniques to Use (and 4 to Avoid)

by Alex OmeyerApril 18th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Software estimation techniques are vital for successful project delivery. I discuss the best techniques to ensure accurate planning and efficient delivery.
featured image - Effective Software Estimation: 5 Top Techniques to Use (and 4 to Avoid)
Alex Omeyer HackerNoon profile picture


Software estimation techniques are critical to the success of any project.


Accurately estimating the time, resources, and cost required to complete a project during software planning can mean the difference between success and failure.


This is especially true for SaaS companies, where timely delivery of high-quality software is essential for customer satisfaction and business growth.


However, not all effort estimation techniques are created equal.


Some are more useful than others, and some are more problematic than others.


I'm going to explain and offer some thoughts on 5 useful software estimation techniques, and 5 that you might want to avoid.

5 Good Estimation Techniques

Every software development team can benefit from understanding a range of techniques.


While it's true that software estimation methods have some inherent flaws and pitfalls due to the limitations of human experience and intuition, a combination of techniques can help mitigate estimation risks. It increases the chance your teams will make informed decisions, manage risks, and deliver projects on time and within budget.


Teams should review the product backlog in whatever project management tools they use, whether that be Jira, Asana, Linear, or something else, and have a thoughtful and routine effort estimation process.


You’ll notice that there are pitfalls in every estimation technique. My view is that AI will soon be ready to help estimate far better. Understanding different ways of estimating will help us to be critical in how we think about AI-assisted estimation. More on that later.

1. Planning Poker

Planning Poker is a consensus-based estimation technique.


During a Planning Poker session, team members estimate the effort required for each task using a deck of cards with numerical values. The team then discusses their estimates and tries to come to a consensus for a story point estimate. This process continues until all the tasks are estimated.


Planning poker cards. Credit: Midjourney


It promotes collaboration, tries to avoid anchoring bias, and ensures that every team member's opinion is heard.


Planning Poker is a great technique, but it can take a while, especially if you have a big team or a complex project.


Good for: small to medium-sized teams, small- to medium-sized projects, and projects with uncertainty about scope or complexity.

2. Three-Point Method

The Three-Point Method is used to estimate the time required to complete a project by considering the best-case, worst-case, and most-likely scenarios.


These estimates are usually represented using three values: optimistic, pessimistic, and realistic. The average of the three values is then used to calculate the overall estimation.


The Three-Point Method is particularly useful when dealing with uncertain tasks or projects. It helps teams to account for the best and worst-case scenarios and consider the likelihood of each scenario.


One problem with the Three-Point Method is that it sometimes doesn't yield accurate estimates for uncertain tasks or projects. It's important to ensure that the team has enough information about the task or project before starting the estimation process.


Good for: Large teams (though works at any size), complex and uncertain projects.

3. PERT Estimation

The Program Evaluation and Review Technique (PERT) is a statistical estimation technique used to estimate the time required to complete a project by considering the expected duration of each task and the dependencies between them.


Team members identify the tasks required to complete the project and estimate the expected duration for each task. The team members then identify the dependencies between the tasks and create a network diagram. The expected duration of the project is then calculated using a weighted average of the expected duration of each task.


PERT estimation is particularly useful for large and complex projects.


It helps teams to account for the dependencies and has the potential to provide a more accurate estimation of the overall project duration.


But it can be time-consuming and requires a lot of information about the project.


Good for: Large teams (though works at any size), complex and uncertain projects, and projects requiring risk management.

4. Analogous Estimation

This method estimates the effort required to complete a project by comparing it to similar past projects.


Start by identifying similar past projects and estimate the effort required to complete the current project based on the effort required for the past projects. This process is particularly useful when dealing with similar projects or tasks.


Analogous estimation should be a quick and easy technique to use as it relies on past project data. It helps teams to save time and resources by avoiding the need to estimate each task or project from scratch.


You need to watch out for false positives – some similar-looking tickets may not be so simple under the hood. Diving deeper into requirements can help.


Good for: Any situation where historical data is available and easy to access and analyze, unless you have AI help. You'll need strong codebase knowledge (or AI) in your team to capitalize on this method.

5. Large Small Uncertain (LSU)

LSU categorizes tasks based on their size and uncertainty. Identify the tasks required to complete the project and categorize them as large, small, or uncertain.


The effort required for each category is then estimated, and the total effort for the project is calculated.


The LSU Method is particularly useful when dealing with projects that involve a mix of small and large tasks with varying degrees of uncertainty. It helps teams to account for the size and uncertainty of each task and provides a more accurate estimation of the overall effort required for the project.


One potential problem with the LSU Method is that it may be difficult to categorize tasks accurately, especially if the team members have different opinions on what constitutes a large, small, or uncertain task. It's important to ensure that the team has a shared understanding of the task categorization before starting the estimation process.


Good for: Teams with strong codebase knowledge. Projects with uncertainty and risk.


Popular but Problematic Software Estimation Techniques:

1. T-shirt sizing

T-Shirt Sizing is an estimation technique used to estimate the effort required to complete a project by assigning t-shirt sizes (e.g., small, medium, large, extra-large) to tasks.


Its simplicity attracts many agile teams as a method to assign story points, but it's a magnet for inaccurate estimations. It's just too reliant on subjective opinions rather than objective data, and too reliant on a system that is open to interpretation – in my experience projects driven by T-shirt sizing often go sideways unexpectedly.


Stack of purple T-shirts. Credit: Midjourney


2. Bucket system

This one's really similar to our T-shirts. It works by dividing the project into buckets or categories based on the level of effort required. Too much lack of clarity, too much opinion.

3. Affinity mapping

Affinity Mapping is used to estimate by grouping tasks based on their similarities. Grouping is, again, too open to interpretation and usually based on intuitions and not data. Complexity and uncertainty simply fly under the radar.

4. Dot voting

Dot Voting estimates the effort required to complete a project by allowing team members to vote on their estimation using dots. Same stuff – subjective opinions with no built-in chance to surface underlying complexity or uncertainty.

The future of estimation

Human estimation is flawed. We can't help it. Our experiences and cognitive limitations bias us. This results in inaccurate and unreliable predictions.


I think AI-powered prediction models are a solution ready to make widespread change.


They leverage vast amounts of data and sophisticated algorithms to generate highly accurate predictions that are free from human bias. In sports, for example, teams that use AI-powered prediction models have a significant competitive advantage over those that rely on human estimation alone.


These models analyze large amounts of historical data, identify patterns and trends that humans might miss, and generate reliable predictions for everything from player performance to game outcomes.


As AI-powered prediction models continue to evolve and improve, they will become an essential project-planning tool for any organization that wants to stay ahead of the competition. Optimized resource management and task management will rely on AI.


Those that fail to adopt these technologies risk falling behind and losing their competitive edge. In short, the future belongs to those who embrace AI-powered prediction models.

Conclusion

We all know the impact bad estimates have on projects. No one estimation technique is the answer. Combining them and understanding how they work increases our chances of success.


I'm excited about the use of Artificial Intelligence (AI) for software estimation. AI with access to reams of rich data could, in principle, offer radically better estimates that stop projects from getting out of hand.


Also published here.