12 Secrets to Overcoming Software Estimation Challenges
Geoffrey Parker | November 7, 2018 | 5 Min Read
Are you tired of your development team under-estimating project work? Been burnt too many times?
Attempting to quantify the associated effort and cost that goes into software development is not an easy task. Based on our experience gained from working across a wide breadth of mobile, desktop, and web development projects, estimating the overall effort required does not need to be a hair-raising experience. Estimation can be reliable provided your team follows some basic principles.
1. Does Everyone Know What We Are Building and Why?
Lots of projects start without everyone being aligned on goals and objectives. Yet, those differing perspectives inevitably come to the fore creating conflict, uncertainty, and frustration. Resolution comes – but with changes in direction and scope, delays, and increased costs. Does everything need to be defined in excruciating detail as the old waterfall days? No, however, to estimate an agile project, alignment is still needed on what is being built and why. If you don’t have it, get the necessary people into a room, and work on achieving it until you do.
2. Get Two Perspectives On The Project
Irrespective of approach – bottom up, top down, features, tasks, or having more than one person develop the estimate – ensure that you have more than one scenario. Each approach will look at the problem differently and this will provide a more holistic perspective on the things that need to be done.
Once completed, compare the estimates and resolve the differences. What is factored into one estimate that is not in the other? Is there any double counting of some pieces of work? Where can you get efficiencies from doing things that are similar? Rinse and repeat until you get a tight enough range that you’re comfortable with it.
3. Use Past Knowledge
Get input from people who have done this type of work before – but only use it as a guide. Every project is different in terms of technology, integration points, and priorities – otherwise, why aren’t you using what’s already been built? When looking at past estimates, consider what has changed and how it helps or hinders this effort.
4. Involve The People Who Will Actually Do The Work
To do this effectively you need to provide enough context so that they see the project in the same way you do. Listen to what they say and discuss the differences between what you think and what they are telling you. You want to arrive at a consensus where they feel included and are willing to take ownership of the estimate. However, at the same time challenge their estimates so you understand what they are including or not including.
5. Factor In The Partnerships
Most software projects aren’t built in isolation. There is collaboration between departments, teams, and technologies. How do all these groups work together? Are they responsive, or does it introduce delays, meetings, and integration effort?
6. Identify and Investigate High-Risk Items
Three-point estimates are a great way of identifying what you’re afraid of (e.g. the new API that steals two weeks of effort as you figure out that it doesn’t work), and where to focus initial efforts to de-risk the project. Often a little effort here goes a long way to reducing the estimate envelope.
7. What’s Your Level Of Polish?
Ask anyone what they want in their software and it typically includes all the bells and whistles – top quality, amazing user experience, inspirational visuals, and to have it completed yesterday. In short, they want the absolute best. However, when the price comes into the picture, few people are willing to pay for the Ferrari. What are the tradeoffs and is everyone in agreement?
8. What Is The Timeframe?
Know it, and then ignore it for your first estimate. If you focus on timeframes when estimating, it encourages the silent cutting of corners. Estimate the project first, work out a realistic timeline, and then:
- reduce scope based on business priority and/or;
- increase the team size;
- and factor in the extra inefficiencies you are creating.
9. Allow for the Unknown “Unknowns”
Establish a buffer that allows for unplanned activities or things that you just typically miss in an estimate (for example, bug fixing or the possibility of having your lead developer leave the company). Next, refine the buffer over time based on outcomes. It feels a bit like cheating – probably because it is – but without it, you’re almost certainly going to be wrong.
10. Where Is The Magic?
Is there a piece of this project where someone painting the project big picture waves their hands, mumbles, and then something great happens? If there is, highlight it because it is not as simple as it is being portrayed. You may have already caught this in your three-point estimate, but the magic feature is going to take more than a magic hand wave and mumble.
11. Invest Some Time and Effort Into The Estimate
Give me a few minutes, and I can probably give you an order of magnitude guess for how much a project is going to cost. However, will your finance department be happy with the difference between $200,000 and $800,000? Estimating takes time – time to know the project, understand the priorities and evaluate the options. In the end, you will get what you are willing to put into it.
As you go through all these things, you are going to get a range of different numbers. Fear not, this is actually good because it means that you are considering different aspects of the project at different times. Last of all:
12. Does It Pass The Sniff Test?
If I am building this product by myself and I have the right skills to do it, do I think I can build it in x person months or years? If the project is large and you are concerned that you won’t live to be 168 to complete it, break it down into components and reapply the sniff test at the component level. Ask yourself how long it will take to integrate the components and then add the estimates together.
If, after all that, it feels good and you’re not wildly over or under, then trust yourself and go with it. It may not resolve all your anxiety, but it will keep your feet out of the fire.
Get Email Updates
Get updates and be the first to know when we publish new blog posts, whitepapers, guides, webinars and more!
Applications of Voice Assistants in Healthcare
Discover how organizations across the continuum of care can leverage the growing consumer demand for voice-enabled devices to achieve an extensive list of objectives from increased patient engagement to improved outcomes and lowered care costs.Read More
Structuring Multidisciplinary Software Teams
5 strategies we've learned from working with the biggest names in software for structuring multidisciplinary software teams to get amazing software out the door fast.Read More
Health Information System Integration
In this webinar, we discuss interoperability in healthcare and answer attendee questions on Health Information System integration. Download the webinar Now.Read More