The Cynefin framework

Concept

Recently, when reading a book, I learned a new framework that helped me understand and manage complex systems. The book is Building Large-Scale Web Apps [1]. I have not completed reading it yet, hence this post only covers the framework I learned. It’s called The Cynefin Framework

You can read framework’s definition at wiki page. What I want to share is just that the framework offers five different domains of complexity: simple, complicated, complex, chaotic and disorder. Each of these domains has its own characteristics and requires a different approach to making decisions and solving problems.

Examples

This part contains examples that I experienced during my career when working for different companies and startups.

Simple (Clear/Obvious) Domain

  • A standard authentication system using a well-known framework like Devices in Ruby on Rails. The steps are straightforward, with clear documentation. The process is repeatable with predictable outcomes.

Complicated Domain

  • Implementing a payment gateway like Stripe or Xendit for an application. The process requires expertise and understanding of different systems (e.g., handling webhooks, security, etc.). Experts can analyze, plan, and implement the integration, and while it’s not simple, it’s solvable with proper analysis.

Complex Domain

  • A recommendation system for a streaming service involves unpredictable and emerging patterns. The system’s effectiveness depends on user behavior, which is not entirely predictable. You must experiment with different algorithms and analyze the results over time to see which works best. Iterations and feedback loops are keys in this domain.

Chaotic Domain

  • When an application faces a critical problem or goes down unexpectedly, and users are affected, e.g., the CrowdStrike IT global outage that affected many Windows devices in July 2024. The situation is chaotic, and the cause might not be immediately clear. The immediate actions might include rolling back recent changes and restarting services. Once stability is restored, you can analyze the situation to understand the cause.

Disorder Domain

  • A development team working on various tasks: simple, complicated, complex, chaotic. If the team does not categorize these tasks properly, then the complex problem can be treated as a simple problem, leading to mismanagement and confusion. The team is in disorder until they break down the issues and approach them with better strategies for each domain.

Conclusion

That’s all I want to share about the Cynefin framework. It can guide decision-making and problem-solving in application development by recognizing the nature of the issues at hand and applying the appropriate approach.

Reference

[1] - Building Large-Scale Web Apps - https://largeapps.dev/