Skip to content

Instantly share code, notes, and snippets.

@Kimbsy
Last active October 24, 2023 12:59
Show Gist options
  • Save Kimbsy/2fd39be780f4f9c45850ce649cc2c83a to your computer and use it in GitHub Desktop.
Save Kimbsy/2fd39be780f4f9c45850ce649cc2c83a to your computer and use it in GitHub Desktop.
Complexity Estimations

Complexity in Agile: Taking Estimation to the Next Dimension

When it comes to agile estimation, the industry has long grappled with a significant challenge: how to capture both the amount of work and the complexity of a task in a single, unified system. The solution might just lie in a mathematical concept that's been around for centuries: complex numbers.

Understanding the Status Quo

Traditional agile estimation practices, such as the Fibonacci sequence, have served us well. Assigning story points based on Fibonacci numbers (1, 2, 3, 5, 8, 13, and so on) is intuitive and aligns with our understanding of incremental work effort. As tasks grow in size, the difference between consecutive Fibonacci numbers represents the increasing uncertainty and complexity.

However, one thing is clear: while Fibonacci-based estimation implicitly acknowledges complexity, it doesn't provide a direct mechanism to quantify or visualize it.

Enter Complex Numbers

The beauty of complex numbers is in their dual nature: they consist of a real part and an imaginary part. This two-dimensional number system is perfectly suited to represent both the work effort (real part) and the complexity (imaginary part) of a task. The delightful coincidence that we're using the "complex" number plane to represent "complexity" in story points is more than just a play on words. It embodies the essence of the concept, making it more palatable and attractive for adoption.

Imagine estimating a user story as (5 + 3i), where 5 represents the effort and 3 captures its complexity. This approach allows teams to:

  1. Explicitly Measure Complexity: By allocating an imaginary component to our story points, we can directly measure the intricacies of our work.
  2. Effortless Aggregation: Complex arithmetic is well-established, allowing teams to effortlessly perform calculations on stories in aggregate.
  3. Visual Representation: Plotting tasks on the complex plane offers a visual representation of both effort and complexity, providing insights that were previously hidden.

Use Case: Integrating Multiple Payment Methods

The Task: Allow customers to add multiple payment methods to their profiles.

The Challenge: The team has to work with a third-party payment gateway that's notorious for its convoluted processes and scarce documentation.

Traditional Fibonacci Estimation

The team gathers for their planning poker. After some discussion, they decide that, in terms of sheer effort, the task is equivalent to a '5' on the Fibonacci scale. However, given the challenges associated with the third-party system, they bump up their estimate to '8' to account for the added "complexity."

Estimate: 8 story points

Complex Estimation System

With the new system, the team still agrees that the raw effort remains a '5'. However, they now have the ability to explicitly measure the complexity introduced by the third-party system. They determine that the complexity is equivalent to '7i' on the imaginary scale.

Estimate: (5 + 7i)

The magnitude of this estimate is approximately (8.60), which is close to the traditional Fibonacci estimate of 8. This ensures that the overall perception of task difficulty remains consistent between the two estimation methods.

Benefits:

  1. Consistent Overall Estimation: The magnitude of the complex number ensures that the overall difficulty of the task, when considering both effort and complexity, remains in line with traditional estimation methods.
  2. Clearer Breakdown: While the overall task difficulty remains consistent, the complex estimation system provides a clearer breakdown between raw effort and added complexity.
  3. Informed Decisions: Patterns in the imaginary components of estimates can provide insights. For instance, other stories related to the third-party system might be estimated as (3 + 6i) or (8 + 7i). These consistent high imaginary values highlight a recurring theme: any work touching the third-party system is increasing the complexity cost.

By comparing the two estimation methods, we see that while the overall estimation remains consistent, the complex estimation system provides more granularity and actionable insights. This allows teams to make more informed decisions and optimize their processes over time.

Why Complex Estimation is the Future

The biggest tech giants and the most innovative startups have always thrived on pushing boundaries, and the complex estimation system is no exception. This system is gaining traction. Here's why:

  • Actionable Insights: By quantifying complexity, teams can identify patterns. Are our tasks consistently too complex? Are we tackling complexity efficiently? With this new dimension, retrospectives will be richer, and process improvements more targeted.
  • Adaptability: Teams can adjust their ways of working in response to the explicit complexity measurement, leading to more efficient and effective sprints.
  • Integration with Fibonacci: The real part (effort) can still follow the Fibonacci sequence, ensuring continuity with existing practices while introducing the new dimension of complexity.

Conclusion

In an industry that thrives on innovation, the complex estimation system is a breath of fresh air. It's not just about assigning points; it's about understanding our work deeply, adjusting our processes, and continuously improving. For the passionate product owners and scrum masters out there, this is the next frontier. It's not just a trend; it's the future. Embrace complexity, and let's take agile estimation to the next dimension!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment