Using Fibonacci Sequence to Estimate Project Effort
Project management is one of the core task of a Product Manager. In project management, you need to estimate the effort of each initiatives so you can know the man hour needed to build the project. The estimation is also important for you to communicate the timeline and scope of the project to your stakeholders, so doing it correctly will be very helpful to make your job easier.
In agile product development, usually we are using story point to estimate the effort of a task. The value of story points are varies depends on the team, but in this article, we will talk about using Fibonacci sequence as the value of the story point.
I’m sure that most of you know what fibonacci sequence is. Fibonacci is a sequence that the value of each number is derived from the sum of the two preceding numbers. The example of the fibonacci numbers are 1, 2, 3, 5, 8, 13.
Maybe you think, “wait a minute, is that is actually some kind of a random numbers without pattern, right? The sequence seems like not having any meaningful information in it”. Take a look at the following pictures:
Wait what, that’s the fibonacci numbers??? It actually has a pattern in it and it’s kind of beautiful!
So, how do we apply this numbers in agile project management? Let’s find out!
Why We Use Fibonacci in Estimating Story Point?
Let’s go back to the story point estimate. As we discussed before, we can use any kind of numbers as the value for estimating story point. You can use a normal sequence like 1, 2, 3, 4, 5 and so on. Or, you can also use doubling numbers, such as 1, 2, 4, 8, 16, and so on. Why do you have to use fibonacci sequence?
Okay, let’s begin with the normal sequence. Most of people who just started to do agile project management will naturally use this numbers to estimate story points. It is simple and makes sense to use it, but actually there is a drawback from using this sequence as the value. It would be hard for the team to differentiate the effort between the numbers.
For example, there are 4 tasks that your team is working on. The story point for task A is 1, task B is 2, task C is 6, and task D is 7. When you discuss it with your team, it might be clear that we think that task B needs twice the effort of task A. However, how exactly different is the effort of task C and task D? Is it just a small difference? or medium? Why don’t both have 6 story point if it’s not really that significant?
As you can see that it is hard to measure the difference between the tasks if the scale difference is too narrow. The analogy is when you are told to hold 1 kg rock on the left hand and 10 kg rock on the right hand, you can identify which one is 1 kg and which one is 10 kg easily. Even if you are blindfolded. However, when you hold 5 kg and 5.5 kg of rocks, it would be very challenging to differentiate that.
Unlike the normal sequence, the difference between the numbers in fibonacci is proportional. The difference is like a percentage, it is not too narrow nor too wide, so it is very handy to use in the story point estimate.
Using Fibonacci to Estimate the Project Effort
After knowing the benefit of using fibonacci, let’s talk about how to use it in your project planning discussion. There are a lot of ways to do it, but I think this one is quite useful and fun to do with your team.
In project planning phase (usually on backlog grooming), you need to invite all of your team members: engineers, designers, and QA. In this session, go through all the users stories that you want to develop and explain it to your team. Make sure you also have a Q&A session to give your team member opportunity to clarify anything about the user story.
After that, ask each of your team member what is the story point estimate for the user story. The value should be in fibonacci sequence to help us easily differentiate the effort of the task. You will get a varying answer from your team members as they will have their own way to do the project. It would be very interesting when you found some very different estimates between your team members. For example when some of your team members give 3 story points and some others give 13.
When you found that huge difference, ask your team members to explain what is their thinking process or consideration when giving that value. You will see that it can help your team to identify corner cases or risk and also help find the fastest way to do the project or narrow down the scope. Here is one example of the discussion:
“Okay, so for this search feature, some of you give 3 story points and some other give 13. Bryan, why do you think it needs 13 story point?”
“Well, I think for this search feature, we need to figuring out the best algorithm that could provide the most relevant result to the users. We also need to make sure that our hardware is ready for the heavy computing process and efficient enough to keep the cost low. So, this requires a lot of efforts and thinking to do it right.”
“Interesting points. Those are very important points for sure. Emily, why do you think it only requires 3 story point?”
“For the algorithm part, I think we can use some readily available open source library. There are some good libraries that we can use to make the development faster. But, I think Bryan point in preparing the server config correctly is valid as it won’t be as easy as I thought. So, perhaps it would be 5 story point task”
“I see. Using available library will be very helpful and make sense for us as we need to push the project quickly to learn from our users. Cynthia, what do you think? Do you have any other points?”
So, that’s what you can get from using fibonacci sequence in your agile project development. The discussion will be much clearer and the result hopefully will be more accurate. Try it in your project and let me know what do you think about it. 😉