Cynefin Framework for Software Development
Cynefin is a sense-making framework that categorizes problems into domains (simple, complicated, complex, chaotic, disorder) to guide decision-making. Applied to software, it helps teams embrace uncertainty and choose appropriate approaches—from agile experimentation in complex domains to plan-driven methods in complicated ones.
THE IDEA
Software through the lens of Cynefin
Computers are, for the most part, predictable. Programs that start with the same input, rerun, will generally produce the same output. For decades, we thought that it was possible to make predictions about what software should do before developers started coding. Analysts were providing all our requirements up-front, exhaustively checking, and re-checking to ensure that nothing the business needed had been missed. Testers checked the results against test plans. Little emphasis was given to checking with the users that the planned shipments were successful.
As the software ecosystem has grown, it’s quicker and quicker to produce powerful code. The Open Source movement has made an astonishing number of code libraries and applications available for free. Modern languages and frameworks provide high-level syntax and shortcuts that make it almost as quick to develop a prototype as it is to provide a sketch. For work with uncertain user needs, this makes it practical to test requirements through prototypes rather than commit to all of them up-front.
Increasingly, organizations that have taken advantage of software’s speed and malleability are taking over the marketplace. From nimble start-ups to the FAANG behemoths (Facebook, Apple, Amazon, Netflix, Google), the winners embrace uncertainty and try things out with appropriate safety nets. They are comfortable with uncertainty, and with failing on their way to discover something new and valuable.
In the early 2000s, various leaders of the software world were already beginning to recognize this change. A group of software practitioners got together at the Snowbird ski resort in Utah to see if they could distill their thoughts into something useful. The result was the “Agile” movement; described here as still working its way through the software world almost 20 years later.
The internet’s development over the 20 years discussed in the source offers examples of uses that were hard to anticipate. A camera pointed at a coffee pot in Cambridge let people check it remotely; video conferencing and doorbell cameras illustrate other uses of networked cameras. Maps combined with virtual reality applications became “Pokémon Go.” Yet, teams still struggle with a very human quality: discomfort with uncertainty. The Agile movement hasn’t taken off the way that we had hoped. Where it has popped up, it’s often a token effort, surrounded by all the usual rigor to attempt to force plans to progress as they had been written.
Cynefin offers a lens to help make sense of this world, lending itself readily to software development, through all its different domains.
When to use it
Choosing between Agile and plan-driven methodologies based on the project's primary problem domain.
Deciding when to prototype a new feature vs. gather exhaustive requirements upfront.
Helping a team navigate rapidly changing user needs in a startup by embracing uncertainty and experimenting with small bets.
Assessing a troubled legacy-system migration: stabilize an active outage, use expert analysis for known technical dependencies, and test uncertain assumptions about user needs.
FROM THEORY TO EVERYDAY LIFE
In practice
From coffee pot to video conferencing
A developer pointed a camera at a coffee pot in Cambridge to let people check coffee levels remotely. The source places this experiment alongside later uses of networked cameras, including video conferencing and doorbell cameras; it does not establish that those technologies descended directly from it.
Startup versus plan-driven enterprise
A nimble startup uses Cynefin to recognize its product is in a complex domain. It experiments with minimal viable products, gathers user feedback, and iterates quickly. In contrast, a large enterprise mistakenly treats a complicated regulatory compliance project as complex, wasting time on unguided experimentation instead of detailed planning and expert analysis.
A MOMENT TO REFLECT
Put it to work.
How can you distinguish whether your current software project belongs in the complicated or complex domain using Cynefin?
What safety nets can you put in place to allow safe experimentation in a complex software environment?
Think of a recent failure in a software project—was it caused by applying the wrong decision-making approach for the domain? How would Cynefin have helped?
CONTINUE THE CONVERSATION
Source texts
- Cynefin - Weaving Sense-Making into the Fabric of Our World ED02 (Dave Snowden Sonja Blignaut Zhen Goh)