If the golden spiral seems familiar to you, it’s probably because (1) you’ve seen it on the cover of science textbooks, or because (2) the theory behind it, the Fibonacci sequence, is used basically everywhere across a variety of industries.
It’s common to see the Fibonacci number sequence used as a reference for decision-making in trading, investment, design, and even music; but did you know it’s applied in agile software development too?
The Fibonacci sequence, derived from Indo-Arabic mathematics and made popular by Leonardo Fibonacci in the 13th century, is a series of numbers that was first used for calculating breeding patterns of animal populations and emulating biological spirals in nature, like pinecones and branches.
How does the sequence work?
The rule is Xn = Xn−1 + Xn−2, but let's simplify that.
The series begins with 0 and 1. To get the third number, the previous two numbers (0 and 1) are added together, resulting in 1. To get the fourth, the second and third numbers (1 and 1) are added together, resulting in 2. And you get the drill, the series goes on and on with the next number being the sum of the preceding two numbers.
The sequence looks like this:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...
Now that we know what Fibonacci numbers are, let’s address the question of the day: Does using the Fibonacci series lead to more accurate agile estimates?
How is the sequence used in agile? Let’s start from the top.
In the discovery phase of a software development project, before a team begins developing a product, a lot of estimates are to be made based on project requirements. This includes how long the project will take to completion and how many sprints it will require, taking into consideration the team’s velocity and various other factors.
There are many ways to make estimates in agile, and one way is with user stories and story points.
A user story is a brief and general explanation of a software feature written from the end user’s perspective, using hypothetical personas. It's expressed as an end goal instead of a feature, e.g. “As Melissa, I want to invite my friends, so we can interact on this platform.”
Story points are assigned to user stories. They are a unit of measurement that expresses an estimate of the overall effort required to implement specific product backlogs. A team’s estimate of each story’s effort must include factors such as complexity, the amount of work, and any risk or uncertainty.
Story points aren’t quantifiable like kilograms or millimeters, but that’s also why they’re used. Sizing stories relatively is an integral part of agile estimation.
When doing this, the relative size of a story is the focus. In other words, a story that’s assigned 2 story points should be twice as heavy as a story assigned 1 story point. In the same way, an 8-point story should be four times as hefty as a 2-point story. It doesn’t matter how team members individually perceive how heavy the workload for ‘2 story points’ should be — what matters is relativity.
So, why not just use the regular number series? Relative sizing can still be done with linear sequences right? That’s true, but the Fibonacci numbers serve a much more abstract, psychological purpose.
The Fibonacci series reflects the inherent uncertainty in estimating larger, heavier tasks.
For example, with the regular scale (0, 1, 2, 3, 4, 5, 6, 7, 8,...), an epic task might be assigned up to 10 story points, but with the Fibonacci scale (1, 2, 3, 5, 8, 13, 21, 34,...), the same task may be assigned 89 story points. The difference is huge, and we’re more likely to perceive a story with 89 story points as much more complex than one with 10 points.
The growing gaps between the numbers in the Fibonacci series serve as a constant reminder that the larger a story or task is, the more we run the risk of making uncertain and inaccurate estimates.
Since splitting big stories or epics into smaller, more manageable tasks is one of agile development’s best practices, using the Fibonacci series is perfect for reminding us of the reality of complexity and our tendency to underestimate larger tasks. It forces us to note the epics as more complex than we would, otherwise, naturally assume.
The answer to the question is Yes, but not exactly.
That might sound vague but it’s quite literally the answer. The number sequence does help us make better judgments with our estimates, but it still doesn’t help us define exact values, simply because that's impossible.
Fun Fact: November 23 is Fibonacci Day, can you see why? (Hint: It’s in the numbers)
The Snappymob team is made up of software engineers who are experienced and well versed in project planning and agile development. We believe that a good plan delivers.
Helping clients at different stages of development turn their dreams into reality is what we do best. Feel free to check out our work or let us know how we can help you!
Snappymob is a passionate web and mobile app developer based in Kuala Lumpur, Malaysia. We have designed and developed awesome web and mobile applications for industries and companies around the globe.
We love our craft — the design, development, and the business of apps and this blog is our outlet for discussing what we think and sharing what we know with our community.