- Published on
Software Estimation
- Authors
- Name
- Estimator Tool
The most challenging part of my early years as a software engineer was giving estimates. How long will this piece of work take? Can you do it by tomorrow? These questions always use to fill me with dread because I never knew the answer. On many occasions I use to crumble under the pressure and just say what management wanted to hear. This made my life a lot more difficult because I then had to work to deadline I did not actually believe I was able to do.
Over the years and after many missed deadlines, regular burnouts and having to deliver bad news to stakeholders I actually have not got better at estimation. However, I have accepted one important truth about developing software. Software Development is not a linear process.
##Software development is not a linear process When you build an application or feature, you start from A with the goal of getting to B. However, the journey from A to B is in many cases an highly abstracted viewpoint. This is because when we start to work on a new thing “we don’t know what we don’t know” (and in some cases the Dunning-Kruger effect effect can also be an issue here).
The things we don’t know or the problems we have not solved before are the ones that throw our initial estimates out. So how can we get to a place where we can improve our estimates.
The first step would be to use some kind of framework that allows us to be aware of the things we do not know about and then using this framework as a basis for making estimates. Below is a list of questions that you should ask yourself when making an estimate.
- History - Has this work been done before
- New or existing technology - Are using new technology we are not familiar with
- Dependencies - Do we have dependencies on other teams (internal/external)
- Level of architectural change - Will the work require a significant architectural change
- How big is the work - Will it require big or small changes to existing functionality
Based on your answers to these questions you can begin to create an estimate. Check out the estimation tool to see how this might work in practice