Unlocking the Power of Fibonacci in Agile Estimation
Understanding Fibonacci and Story Points
Fibonacci is a numerical sequence that starts with 0 and 1, where each subsequent number is the sum of the previous two. This sequence is used in agile estimation to measure complexity, not time. Story points are a popular estimation method that uses Fibonacci numbers to assign a value to a task based on its complexity.
def fibonacci(n):
fib_sequence = [0, 1]
while len(fib_sequence) < n:
fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
return fib_sequence
Why Fibonacci Works in Agile Estimation
Fibonacci’s power lies in its ability to help teams estimate complexity, which is a more reliable metric than time. Complexity is a shared understanding among team members, whereas time is subjective and can vary greatly. By using Fibonacci, teams can focus on building a shared understanding of complexity, rather than getting bogged down in abstract discussions about time.
How to Use Fibonacci for Story Point Estimation
- Choose a scale, either classic Fibonacci or story points.
- Consider 10 recent tasks and assign a medium complexity task a value of 5.
- Compare other tasks to the medium complexity task and assign values accordingly (e.g., simpler tasks get a 3 or 2, while more complex tasks get an 8 or 13).
- Rinse and repeat, continually comparing and adjusting task values.
Tips for Effective Fibonacci Estimation
- Don’t get stuck on details; compare tasks to previous ones and ask if they’re more or less complex.
- Focus on building a shared understanding of complexity, not implementation efforts.
- Don’t be afraid to give a “wrong” number; be afraid of getting stuck in abstract discussions.
Common Pitfalls to Avoid
- Converting Fibonacci numbers to time, which defeats the purpose of estimating complexity.
- Lacking a shared understanding among team members, leading to inconsistent estimates.
- Mechanically estimating tasks without considering complexity.
- Creating horizontal boundaries by splitting tasks into technical aspects.
- Transferring tasks between teams with different perceptions of complexity.
Alternative Estimation Methods
- T-shirt size: Define ranges of time per item (e.g., small, medium, large).
- Absolute time: Estimate tasks in time, although this can create false expectations.
- #Noestimates: Stop estimating tasks altogether and focus on refining them until they fit the sprint cycle.
Remember, the goal is to enable progress, not predictability.