The Alchemy of Software Estimation: Part Math, Part Magic

Ollie Spear
The Tech Collective
4 min readMay 9, 2023
Photo by Dollar Gill on Unsplash

Welcome to the wonderful world of software estimation, where we combine the precision of math with unforeseeable whims of wizardry. That’s right, software estimation is part math, part magic, and all headache. But fear not, dear reader, for I am here to guide you through this tricky landscape and hopefully provide some insight and calm around the wonderful and whacky world of software estimation!

What Is Software Estimation?

Ok, back to basics. Essentially, software estimation is the process of predicting how long it will take to complete a software project, how much it will cost and how many resources (tools, people etc) will be needed. Sounds easy enough right? Wrong.

The Math

First let’s talk about the math. There are countless variables that can affect the outcome of a software project. Some of these variables are easy to measure and predict, like the number of people on a team, or the amount of code that needs to be written. But others are much harder to quantify, like the amount of bugs that could materialise unexpectedly during testing or an unexpected serving of scope creep.

The Magic

Now, for the magic.

Magic, really?

Yes, magic. Allow me to explain.

Despite our best efforts, software estimation isn’t an exact science. Even the most carefully thought-out plans can be derailed by a number of unaccounted variables. A key team member could become ill, or a crucial dependency changes at the last minute, or an opportunity presents itself without warning, or perhaps the client changes their mind about what they want. Thus the art of software estimation becomes a delicate dance between math and magic since these factors are frequently abundant, impossible to predict with pinpoint accuracy, and cannot be foreseen with any quantifiable confidence.

Story Points

Story points are assigned to user stories (a user story is a small, manageable and defined piece of work that is ready for any engineer to start working on when they are ready). These story points are an abstract unit of measurement that express an estimate of the overall effort required to complete any given user story and provide rough overall timelines to complete a software project.

The Fibonacci Sequence

Ah, the Fibonacci sequence. A mathematical concept that’s been helping software engineers score points in Agile projects since time began (or at least in the past few decades). The Fibonacci sequence for those who are unaware is a series of numbers in which each number is the sum of the two previous numbers. Here’s the first few numbers of the Fibonacci sequence as an example:

0, 1, 1, 2, 3, 5, 8, 13

Let’s run through the sequence. We start with the first number, 0. If we then take the first and second numbers of the sequence and add them together, 0 + 1, we get 1, the third number in the sequence. If we then take the second and third numbers and add them together, 1 + 1, we get 2, the fourth number in the sequence, and so on.

The Fibonacci sequence can be represented mathematically like so:

F(n) = F(n-1) + F(n-2)

The goal here is to arrive at a predicted estimate of the overall effort required to complete a task without getting bogged down in the details of said task. This technique involves assigning each user story a number from the Fibonacci sequence based on its relative complexity to other tasks. The sequence of numbers increase exponentially in size, making it easier to assign point values to user stories based on estimated effort, the more effort a story is estimated the more complex it is considered to be.

The key to remember when using the Fibonacci sequence for estimation is that it’s all about relativity, and by using a relative scale like this, development teams can begin to make more accurate estimations about how much effort it would take to complete a project and therefore how long it will take whilst also accounting for the inherent variability of software development.

Conclusion

And there you have it! The art of software estimation is a harmonious blend of math and magic that requires a good level of logical thinking and a flexible mindset. While we can employ a multitude of tools and methods to aid us in this quest, the key is to remain adaptable and embrace the unexpected. So don’t be afraid to let your inner wizardry shine, estimate with confidence and most importantly, embrace the chaos!

--

--

Ollie Spear
The Tech Collective

Software Engineer writing about software development and programming languages