Complexity in Software Development is the subject of many articles, so I won’t rewrite it all again, but I want to share few things I learnt on this topic with the Stacey chart and the Cynefin framework.
In our Scrum Foundations course, we explain that complexity depends on the context and 3 main factors:
- Technology and
Based on those factors, 4 complexity levels can be derived:
- Complex and
While the Stacey chart (below) shows that the level of complexity increase as get more and more unknown into our factors and that Agile methods (and Scrum more particularly) have a better fit for the Complex level. It might infer that with more analysis and time we could go over the unknown and decrease the complexity! 😦
Adding the Cynefin framework (below), we retrieve our 4 levels of complexity but with a different view. We still implicit assume that disorder is subject to similar factors (people, requirements, technology – “unknown” in general), but this time the Cynefin framework describes how we work in the various levels and respond to complexity!
This really struck me the first time it was shown and explain to me, as it clearly articulate that analysis and time do not help in a more complex environment, and as such we need to act differently!
It can be explained using the analogy of games:
- Simple: Tic Tac Toe (aka Cross and Circle)
- Complicated: Chess
- Complex: Poker
- Chaos: Kid games
While we can come with best practices for the simple case that will guarantee the best response, we can only have good practices in the complex level as there are too many factors to consider. However, with analysis we can respond accordingly.
When it comes to a complex environment, we don’t know what is going to happen so we need to experiment and learn. This is where continuous improvement and learning applies fully and where Agile methods and Scrum have the best fit with emergent design.
Now, when we play with our young kids, the rule of the games can change at any time, so it is better to act first and then sense and respond :). This is the place for novel solutions (like startups).
I find it great to show both during classes as people interpret complexity differently and they complete each other…
1 thought on “Complexity in Software Development”
Relevant Information for me that i was actually looking for.