Late and Over-Budget: The Cynefin Framework - We Are, After All, Not Professionals
"We are, after all, professionals" - Hunter S. Thomson
Cynefin is a Welsh word meaning something a bit like environment. But meaning environment in all the different ways that you could mean environment, not just the physical environment, but also the social environment, who you know, who you talk to. Who you can rely on in a crisis. All of that stuff. The Cynefin framework is a pretty simple concept, but I think it leads to some really powerful understanding of why almost all software development projects are late and over-budget. What the Cynefin framework maps out is four different kinds of problem space that we might be in in a work environment. When I used to work in a research lab, I used to work for a guy who had an amazing talent for being annoying. In any given situation, you could rely on him to be annoying. This was actually a very useful talent for someone in a research lab. One of the questions that he invariably would ask at the end of a presentation of some new-fangled idea would be – “what problem are you solving?” If you were the person presenting your new fabulous work which you were getting all excited about, you would probably find this annoying.
The Cynefin framework asks a similar kind of question. It asks “what kind of problem” are you solving? “What kind of answer are you looking for?”. The Cyenfin framework puts these kinds of problems and answers in four buckets – simple, complicated, complex and chaotic.
So what is a simple problem? A simple problem is one where the problem is well-understood, then methods to solve it are well-understood, also they are easy to understand. They work so reliably that almost anybody who is awake and moderately well-educated can follow them. As an example of a simple problem-space you could talk about baking a cake. If you have an oven that works and you have access to a recipe and the right ingredients and you follow the recipe, you’ll get a cake out of the end of it. So a simple problem is one where there’s a recipe and anybody can follow it. Sometime I think there are very few problems that are simple. I’ve seen interviews with Delia Smith, the hugely successful TV cook, where she explains that the way that she gets her recipes to work reliably is that she tries them in lots of different ovens. My suspicion is that genuinely idiot-proofing any problem space so that “anybody” can follow a set of instructions without fail, is harder than most people might think. But anyway, on to complicated problems.
Complicated problems are problems that can be solved, but in order to solve them, you need a professional who has some come complicated training. So a complicated problem is one where there is an answer, the problem can be solved, but not just anybody can solve it. You need a professional. Lots of things fall into the category. I’m always fascinated by the comment by Penn Jillette that the field of conjuring and magic is like accountancy – anybody could find out how to do it, it isn’t a secret, it’s in books. They just can’t be bothered. So I would categorise lots of problems as being in this space. Anything where there is a course or a book or a master that you can go and sit at the feet of. This is where the professions hang out in the Cynefin framework, but it’s also where the trades hang out. Painters (the non-artistic kind) and decorators, plumbers and electricians, they hang out in this space. It is important to remember that this is where the professionals hang out – in the space where you can go read a book, sign up for a course or sit at the feet of a master to learn. And what do you learn when you go on the course, read the book, sit at the feet of the master, turn up to a meeting of the magic circle or go to a professional conference? You learn “good practice”, you learn the best way that people in your profession or trade know of to solve a problem. So the complicated space is one where there is good practice. There’s a way that a way of doing things that pretty much everyone is agreed is a good way. The reason that I’m labouring this point is because we’re about to step over the line from the complicated world, into the complex world.
In the complex world, there aren’t any right answers like there are in the simple and complicated spaces. In the complex problem space, the very best you can hope for are “approaches”. In the complex problem space, you can’t follow a recipe that will solve your problems. In the complex problem space, you can’t even do a length professional training program so that you can solve your problems or call a professional, someone in that’s done this kind of training. What makes things even worse is that in this complex space, there is no shortage of people claiming that the problem space isn’t complex, but in fact either merely complicated (all you have to do hire one of their professionals, or sign up for one of their professional courses) or even simple! Buy our product, follow these steps and all your problems will be solved. For those of you who already know something about Agile methods, as I’m writing this I’m realising that this is what makes the whole Scrum Master Certification program (full disclosure, I did the course, but I’ve resisted paying up to “renew” my certification) so simultaneously shameful and successful. There is clearly huge amounts of money in selling simple and complicated solutions to complex problems. That’s one of the other features of the complex space. As if the problems that you were dealing with weren’t bad enough, there a whole series of other difficulties that come from the complex space not being the simple or the complicated space, but many many people desperately wanting it to be. The complex space is where well-meaning and genuinely useful consultants hang out, it’s also where cult-leaders, psychics and other charlatans hang out who are prepared to prey on the desperate human need for certainty.
From that little aside, you might have guessed, yes, this is also where software development hangs out in the Cynefin framework. Software development is done in a problem space where there are emerging approaches, but there are lots of them and none of them are anywhere near one hundred per cent effective. It’s also done in a problem space where the people who are suffering from these problems desperately want to be told that there problems do have an answer.
Finally, on our way around the Cynefin framework, we come to the chaotic space. This is the space where people aren’t even sure what the problems are. Let alone what to do about them. This is where artists, innovators and researchers hang out, or should be hanging out, although it seems like the "square world" is permanently trying to stop them hanging out in the chaotic space, unaware of the enormous value to society that comes from having anybody whose prepared to work in that space. There are bad guys here too, politicians, religious leaders. Software development shouldn't be in this space. We have an idea of the problems. We know designing software that customers want and that users want to use is a problem. We've got a set of solutions to solve these problems, even as requirements change. They don't always work, but they are getting better, they are coalescing. I'd argue this should put us in the complex space rather than the chaotic. Unfortunately a side effect of the internet revolution, followed by the mobile revolution, the ebook revolution, the social network revolution and whatever is soon to come, is that the industries that we support have been catapulted headlong into the chaotic space, sometimes from the simple space. So very often as software developers, or managers of software developers we find ourselve witnessing an entire industry shift into chaos. Industries it's happened to recently? Publishing, banking and recorded music. Industries it's about to happen to? Maybe it's better to list the ones that won't be affected. Charcoal burning. I think that's probably safe for now.
384 views and 1 response
Aug 15 2012, 1:46 PMJim Grant responded:One of the interesting things about the complex space is that a good approach is often to determine some safe approaches to try and then adjust accordingly (Dave Snowden's safe to fail ideas). So for software development that may be to come up with some prospective data structures , some wire frames of screens, and some navigation maps. You then show it all to folks who will actually use it and get comments like, "But this function is something we do all the time, we don't want it buried three levels down in menus". Then you go back, make changes and present it again.
What I am shooting for is that it is an iterative process.