# Agile and Fibonacci

In Agile project management there are various estimation scales:

• Linear Scale – increases by a fixed value
• T-shirt Size – (S, M, L, XL, XXL, XXXL)
• Playing Cards – Mostly used in planning poker
• Exponential series – ({a^n} for some a and for all n>0)
• Fibonacci.

It is the later one, Fibonacci scale, which caught my attention and I was interested in finding out more.

Basically in mathematics, the Fibonacci numbers are the numbers in the following integer sequence:

1,1,2,3,5,8,13,21,34,55,89,144…

They are called the Fibonacci sequence, and characterized by the fact that every number after the first two is the sum of the two preceding ones.

In Agile project management the following process is used to estimate user stories using Fibonacci:

• The product manager sits down with the team to estimate the user stories.
• Each member estimates a number on the Fibonacci scale that he/she believes represents the size of the task.
• All members are ordered to disclose their number at once.
• Any differences in the numbers will be followed by a discussion until a consensus is reached.
• Each user story is added to a bucket which represents the corresponding point on the Fibonacci scale.
• The steps above are repeated for all user stories.
• The buckets are added to the backlog.

This process is like the game of Planning Poker. Giving each member the opportunity to think individually reduces pressure and results in a more accurate representation of the feature’s size.

So why are Fibonacci numbers used to estimate the relative size of user stories in points on a project?

Here are some of my thoughts:

• As tasks get larger the details become more difficult to grasp and estimate.
• Task estimates are for anyone in the team, however some team members are more or less experienced than others. Therefore they may need more or less time to complete the task. This all adds to uncertainty.
• Human fatigue kicks in over larger and more complex tasks.
• Better results are achieved by reducing complexity, effort, and doubt when determining the development time required for a task, which can range from few minutes to several weeks. It is far easier to determine the relative complexity of a task rather than figuring out how much time it requires. Due to this the Fibonacci scale is used in terms of points to estimate the work, as opposed to the traditional measurement of time.
• Using Fibonacci series is helpful because the larger user stories (i.e. stories of size greater than 8) that tend to lead to inconsistent estimates between each team member can be grouped to the nearest estimated Fibonacci number of the corresponding bucket in the backlog.
• In case of small user stories the bucket difference is small and hence the final cost of resource and time could be finalized more accurately.

To conclude, if a geometric progression like 1,2,4,8,16 was used instead of Fibonacci, then most likely you would just double the resource to achieve the result in half the estimated time.  The Fibonacci sequence prevents this completely and additionally shows potential knowledge gaps as you plan with your team.

Have you used the Fibonacci scale with your team before? What is your experience?