Welcome to Codefin!
Codefin is about applying the Cynefin sense making framework to specific practices of software development, to methodology, architecture and design, testing practices, and more. With this approach we bridge over a gap, for Cynefin is mostly used for strategic decisions, while software developers often choose habitually their favourite tools, irrespectively of the context. The resulting Codefin framework is a synergy, where the various methods and practices of software development each find their place in the Cynefin domain landscape, and it becomes clear why the multitude came about and how to approach a given situation.
Concerning CynefinThe Cynefin Framework offers decision-makers a “sense of place” from which to view their perceptions. It was created by Dave Snowden around 2000 and is a Welsh word that stands for habitat. And indeed, once you have an eye for it, you can see it manifesting everywhere. On this site you’ll get to observe some of the ways it appears in software development.
The above image is that of Liminal Cynefin, with a more detailed view of the border regions of the Complex domain where a lot of the dynamics play out (also see further below).
And here are the best starting points to begin your journey at:
- Dave Snowden’s Blog is where the magic happens, not to be missed!
- Cognitive Edge Blogs with Dave Snowden’s and others’ blogs
- Dave Snowden playlist by Anthony Green with 86(!) videos as I’m writing this
At last, before delving into Codefin, some more words to pique your interest:
Codefin: The Talk
Here are the most important slides from the talk.
The classic Cynefin diagram with a catastrophic failure due to complacency.
Cynefin with nautical beasts demonstrating the various levels of constraints.
A few topics that demonstrate a four-way correlation with the contexts.
The East-West dichotomy is a driver of dynamics and a cause of many conflicts.
The slide for the lols, not to be taken too seriously. Also, no, no more explanations.
And then, after the long introduction, the money shot with the summary of Codefin.
- Codefin, just like Cynefin, is for sense making, not for categorisation
- These are not quadrants, boxes nor other containers, only associations
- Most of the practices and techniques can also be used in other contexts
- There’s never only one context at a time and things are forever changing
- The static aspect is less relevant, the transitions are more interesting
At Craft Conference 2017 in Budapest, Hungary (alas, offline)
At Agile by Example 2017 in Warsaw, Poland
And here you can download the presentation as pdf. Enjoy!
Liminal Cynefin by Dave Snowden
The motivation for the liminal version came from a desire to create a visual representation of the reality of complexity, namely that it is not one state. I also increasingly realised that many of the methods and tools that are valuable in this space (like SCRUM) actually don’t fit within domains but are shifts between domains.
Sense Making in a Complex and Complicated World
The new dynamics of strategy by Adrian Colyer
When people use the Cynefin framework, the way they think about moving between domains is as important as the way they think about the domain they are in, because a move across boundaries requires a shift to a different model of understanding and interpretation as well as a different leadership style.
Defining Complexity Better
Is Software Development Complex? by Joseph Pelrine
Software development is a rich domain, containing many aspects, a large percentage of which can be classified as complex. The interaction between these aspects is also complex. Software development can benefit by being treated as a complex domain (and not an ordered one), and taking advantage of the toolbox of social complexity, namely the Cynefin method.
Software Development = Knowledge Acquisition
The Five Orders of Ignorance (pdf) by Phillip G. Armour
Software is easy to produce if I’ve already produced this type of system before, because I have already obtained the necessary knowledge. So, the hard part of building systems is not building them, it’s knowing what to build – it’s in acquiring the necessary knowledge.
(Where 0th order of ignorance can be mapped to Obvious, …, the 4th to Chaotic and the 5th to Disorder.)
Requirements, Conversations, Knowns, Unknowns, Knowables
Cynefin for Developers: Striking the balance between analysis and feedback by Liz Keogh
The most interesting responses, however, are when the business stakeholders reply with, “Oh, I’m not sure! I hadn’t thought of that.” At that point, we can stop trying to do analysis – we’ve just found uncertainty; we’re in the complex domain, and we can focus on getting feedback rather than forcing the business to clarify the requirements.
TDD is for The Complex Domain
Shocking news: test-driven design is not helpful when the design is already done! by Eugene Wallingford referring to Avdi Grimm
As Grimm says, TDD helps the programmer think about how to start writing code and when to stop. For me, the most greatest value in doing TDD is that it helps me think about what I need to build, and why. That is design. If the problem is already defined to the point of implementation, most of the essential design thinking has been done.
Tools for System Thinkers
The 6 Fundamental Concepts of Systems Thinking by Leyla Acaroglu
In this series on systems thinking, I share the key insights and tools needed to develop and advance a systems mindset for dealing with complex problem solving and transitioning to the Circular Economy … *There are way more than six, but I picked the most important ones that you definitely need to know, and as we progress through this systems thinking toolkit series, I will expand on some of the other key terms that make up a systems mindset.
Systems Thinking as Synthetic Process
The influence of Systems Thinking on Agile practices by Arnaud Lamotte
We can recognize in Systems thinking many Agile key concepts such as iteration, continuous planning, importance of people, non-controlling leader and importance of interactions, to name a few. … Also I am not sure if approaching problems backward is directly related to systems thinking although encouraged by Russel Ackoff but it seems somehow related to TDD.
Product and Project Management
The Product Lifecyle & Cynefin
The Product Lifecycle & Cynefin by Craig Strong
By spending a small amount of time to understand your domain, you can apply best practices and become more efficient at a systems level. … Can Scaling Frameworks for instance truly Probe-Sense-Respond or Sense-Analyse-Respond? How can you have delivery roadmaps of Unknown Unknowns. It’s key to understand your domain against the Age and Stage of your product lifecycle to ensure that you are setup for success.
Dual Track Agile
Adapting Usability Investigations for Agile User-centered Design by Desirée Sy
To allow the User Experience Team to iterate on designs, we usability tested prototypes at least one cycle ahead of developers, and then passed on the validated designs to be implemented. We would also conduct contextual inquiry for workflows at least two cycles ahead, and usability test the implemented working version to check for design drift.
Also, see Dual Track Development is not Duel Track by Jeff Patton and Dual Track Agile by Marty Cagan.
The Evolution Curve
On mapping and the evolution axis by Simon Wardley
By overlaying the types onto the ubiquity and certainty curve and extrapolating the ends (i.e. when something is novel we have very little information on it), I was able to finally produce in 2007 the evolution curve (see figure 7 below) which demonstrated the pattern which I had used in mapping (see figure 1 at the top). It was shortly after this, I was able to demonstrate the reason why the pattern occurred was simply the interplay between supply and demand competition.
Coherence, Convergence and Coalescence
Exploring “A work in progress” by Jabe Bloom
Until seeing this model, Coherence has been, for me, the main measure of “valid” structure in narrative. Here the model yields it’s first insight for me, “full” coherence by itself is not only not “enough”, it is outside of the “valid range”. We need to have an additional measure of validity on our pursuit of actionable knowledge, Convergence.
Stages of Growth
Stages of Growth by Paul Strassmann
The idea that organizations, nations or cultures evolve through predeterminable stages of growth has attracted historians and scientists alike. Understanding the “stages of growth” is only second best to possessing the magnificent gift of prophecy, because it endows the individual who has such an insight with ability to anticipate what comes next.
People, Learning and Planning
Storming, Forming, Norming, Performing
Storming, forming, norming and performing – developmental sequence in groups by Bruce Tuckman (in 1965!)
I began to look for a developmental sequence that would fit the findings of a majority of the studies. I hit on four stages going from (1) orientation/testing/dependence, to (2) conflict, to (3) group cohesion, to (4) functional role-relatedness. For these I coined the terms: forming, storming, norming, and performing.
How to Enable Organisational Fluidity
8 guidelines to enable organisational fluidity by Sonja Blignaut
My hypothesis is that in complexity, in addition to flow of work, resource and information, systems need FLUIDITY, i.e. the ability to adapt our flow processes while in the flow. In the complex domain, the context is not stable: this is the so-called VUCA world. It is therefore critical for the system to be able to morph it’s structure.
Also, see Volatility, uncertainty, complexity and ambiguity (aka VUCA) by Warren Bennis and Burton Nanus.
Organisational Learning: From Intuition to Institution
An Organizational Learning Framework: From Intuition to Institution by Mary M. Crossan, Henry W. Lane and Roderick E. White
The 4I framework of organizational learning contains four related (sub)processes – intuiting, interpreting, integrating, and institutionalizing – that occur over three levels: individual, group, and organization. The three learning levels define the structure through which organizational learning takes place. The processes form the glue that binds the structure together; they are, therefore, a key facet of the framework.
Cynefin in Evaluation Planning
Using the Cynefin framework in evaluation planning: A Case Example by Heather Britt
For the aspects of the situation that could be pre-determined (simple and complicated), logic modeling tools were helpful. For those aspects of the situation where the dynamics of the situation were entwined and emergent, the first step was to recognize this as an accurate description of that aspect of the situation, rather than a failure to accurately predict.
From Exploration to Settlements
On Pioneers, Settlers, Town Planners and Theft by Simon Wardley
What you want is brilliant people in each of these roles. … Determine … an activity that is currently expressed as a product but is ready for industrialisation to a commodity and even better a utility service. It needs to be suitable, widespread and well defined enough, the underlying technology should exist and there should be a frustration in the market with the current provision.
Oath of Non-Allegiance
Oath of Non-Allegiance by Alistair Cockburn
I promise not to exclude from consideration any idea based on its source, but to consider ideas across schools and heritages in order to find the ones that best suit the current situation.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. Permissions beyond the scope of this license may be available at this address.
Thanks for your interest, keep on connecting the dots, and enjoy making sense!