Software isn’t Cake or What the Cyenfin Framework says about the Kind of Plans you Should Make for Software Development
Time + Resources [EQUALS] Understood Value
So a plan in the simple quadrant of the Cyenfin framework breaks down like this:
1) There is thing that we all understand the value of e.g. Cake
2) If we deploy certain amounts of time and resources (ingredients, a chef) we will get cake, this is pretty much guaranteed.
3) Here is a break-down of all the time and resources that we will need to get the cake.
4) At the end of this process, you will get cake. And everybody likes cake.
What happens in the second quadrant of the Cynefin framework? Well, this is where the problem is well-understood, but only by professionals. If you hire the right people then they will solve the problem for you. In this space are people like mechanics repairing a car, architects designing and managing the building of a house. The interesting thing is that in this space, pretty much as in the simple space, there is a straight-forward relationship between the effort put in and the value that you get out of it. If you pay an architect to build you a house. Most of the time, you get a house out of the end of it. If you pay someone to fix your car, most of the time you get a repaired car out of it. But sometimes things go wrong. And we get really furious when they do go wrong because we have an expectation, as with baking a cake of a direct relationship between the time and resources that we put in and the value that we get out. We understand moving into our new, specially-built house, or driving our car when it’s repaired. So in the complicated quadrant of the Cynefin framework we can say:
Time + Resources [Sort of Equals, most of the time, or they’ll be trouble] Understood Value
So what happens in the third quadrant of the Cyenfin framework? The complex. Well, this is where the model breaks down. Let’s look at our cake planning model. And try it for some software e.g. a website:
1) There’s this thing that we can’t really describe, that some senior people think might be a good idea.
2) We can make our best guess at how long it’s going to take and what’s needed, but we might be wrong. In fact we probably are wrong.
3) We’ve been given a budget and a deadline, so we’ve made up a detailed timeline that shows we’ll deliver this thing by a certain date.
4) At the end of this process, you might get something, and somebody might like it, or they might not.
This is the source of the problem, this is the absolute root of the problem. The planning model that works in the simple part of the Cynefin framework and that sort of works in the complicated part of the Cynefin framework hardly works at all when you move over to the complex space because in the complex space:
Time + Resources [Absolutely Does Not Equal] Understood Value
Rather in the complex space:
Time + Resources [Is roughly Equal to] Something which might be of value
But why? Why is the value of architecture and car repair mostly understood whilst the value of software is so elusive? Well, for a start, architecture, and even car repair have been around for generations (let’s say 15 generations for architecture as a profession, 5 for car repair). Software development has been around for perhaps 2, web development for less than 1. Cake? How long has cake been around? A long, long time.
Thinking about things in this way is very instructive because it explains a lot of the behaviour of people who are so focussed on the provision of detailed plans, and on tracking progress through a plan. Such people are firmly of the view that software development is in the complicated space – like architecture or car repair, and that the value of the software that’s being development is well-understood. This is why they focus on detailed plans and focus on delivery against a plan, because in that kind of situation, there is a direct relationship between time and resources spent, progress against the plan and value delivered.
Similarly, the lack of a straight-forward link between value and time and resources in the complex part of Cynefin framework is exactly why people working on software projects. People who understand the nature of the software projects they’re working on, insist of a large slew of what have come to be known as Agile practices. They insist on early and frequent releases, vertical slices (where a little bit of the solution is developed end-to-end), minimum marketable features and regular review and reprioritisation of what’s left to do based on feedback from customers and users.
It also explains why people with a “complicated”view of the world, who assume that the relationship between time, resources and value is straight-forward, think such value-testing antics are a waste of time. It is a waste of time to keep checking on the value of cake. If the recipe is known to be reliable, and so are your staff, it would be a waste of time to do a small run before you do a large one. It would be a waste of time to then go to a focus group of cake lovers and check that they like cake. Everybody likes cake. Software isn’t cake.