There Are No Best Practices for Complex Problems
Before you decide how best to solve a problem, you first need to determine whether the problem is complex or merely complicated. What is the difference? David Snowden’s Cynefin framework (pronounced kuh-nev-in), the result of extensive complexity science research, provides a useful way to understand different complexity domains.
The complicated domain is characterized by known unknowns, where cause and effect are knowable by experts. Experts sense (detect) the problem, analyze it, then respond with good practices. Cause and effect are repeatable. For example, adjusting the fuel injectors in your car is a complicated problem. Experts know how to do this, and they can expect the same result every time when they apply their good practices. Notice that there is no single best practice in the complicated domain; people with different expertise may have equally viable practices that work repeatably.
The complex domain, however is characterized by unknown unknowns: you don’t know what you don’t know. Cause and effect are knowable only in retrospect, and may not be repeatable. Complex problems are approached by probing the system (experimenting), sensing the result, and then responding based on the result; often times the response is to run another experiment. There certainly are no best practices in the complex domain; practices emerge through the experiments we run.
Introducing and sustaining Agile practices within an organization made up of many unique human beings is certainly a complex issue. This means that you can’t merely ‘install’ any Agile framework into your organization and expect it to just work. You can’t take ‘best practices’ from some other context and expect them to work flawlessly in your organization.
You’re gonna have to experiment and probe, learn, and sometimes fail, and be prepared to pick yourself back up again and keep trying. It’s not easy. It’s not obvious. It’s not even merely complicated. It’s complex.