Now I'm going to introduce you to a fairly new concept actually this is called Cynefin framework. It is a way of dealing with uncertainty. it's a phenomenal new idea in dealing with uncertainty and uncertainty about a certainty.
It exists everywhere if you start a new project there is uncertainty if you're actually a developer and you're supposed to be writing a user story that you had just not you have uncertainty according to this framework any time you're faced with a new situation you're facing with disorder. Disorder is not bad, it just means that you have not yet had time to analyze the uncertainty in this situation and therefore it is unordered or disordered.
If I analyze the situation and I start to recognize what level of uncertainty I have the first thing I'm going to find is I'm going to find some things that are not at all are very very minimal uncertainty that is to say the situation the problem I'm trying to solve is obvious. It's a simple situation simplicity usually means I have done this before. I know what I'm doing I've been down that road. I know what to do. All I have to do is think and pick the best practice that I have developed. Or that I know and use it, apply it, implement it.
I'm going to address any problem that I identify as being in the obvious or the simple domain, as being an obvious, as being a simple problem and just solve it. That's a good thing obviously if I know what I'm doing. I'm doing it, I'm being productive. ,
Unfortunately not everything is as simple as it seems if I'm looking at a situation and there are some things in the situation that are complicated by definition complicated. It is something that I know what questions I would need to ask, I don't know the answers. It's something I've never done before. My team, my project team has never done this before we're uncertain as to what, who should we ask, what should we believe. I know what questions to ask but I don't know when I ask these questions what's going to happen if I'm in a complicated domain. I ask a bunch of experts and I get a bunch of different answers. The experts typically do not agree that this is the best way to approach it what I'm going to end up doing is. I'm gonna listen to the experts and then I'm going to form my own opinion based on their knowledge and I'm going to evolve what's called the a good practice not a best practice. That's gonna come up come later on once I have done this several times. I've done it fifty or hundred times then I can develop or evolve the best practice right now.
I found ways that work and we're gonna call that a good practice. It's something that I have gotten from the experts as long as I'm dealing with this side of the equation I'm dealing with problems that are obvious or complicated I'm in a domain where business analysis or all of the analysis techniques of looking at problems, looking at requirements, interviewing people, having conversations are very effective. Where they start to fall apart is if life gets even more complex that is to say beyond complicated. I don't know what questions to ask, I don't know what answers to believe, I don't know who to talk to. That's a whole lot I don't know.
I'm in a situation in which I am very insecure there's a lot of uncertainty in this situation and what I what the only thing I can really do at this point is try to find a way of moving out of the complex domain into complicated and/or obvious and the way I do that is by developing what we call safe to fail tests. My definition are safe to fail test is something that I can do that will help me understand the situation, it will clarify something and I can get at least part of the problem that I'm facing over into a less complex meaning either complicated or obvious domain. However whatever tests I come up with can't make the situation worse. That's what we mean with safe to fail. If I execute the test I try something out and I learn something out of that and I immediately can move it over into the other domain as long as I'm in the obvious domain. I'm chugging away, I'm working, I'm getting the job done if I'm in the complicated domain I'm figuring out what I need to do so that I can give chugging along again and get it down into that obvious domain if it's in the complex area.
I have to find out ways of moving out of it just taking these three concepts complex complicated and obvious. If I start a new project typically people will look at a new project and they're going to start to do what they know. They're gonna try to get solutions for all of the obvious things, simple things, because that's most people's comfort. So we like to know what we're doing we like to be confident in what we're doing and so I'm just executing, I'm fine following my best practices if I am in on a project and it turns out that there is something that is complicated about the project. It's going to hold me up, I'm gonna be doing my simple things as long as I can and then I run into the complicated things and it's going to take time to get those resolved.
I'm gonna have to change what I did if you're dealing with a project that has complex dimensions to it then it's even worse because what you all of your work might have been wasted unless you can find a way to resolve the complex components of that situation of that problem of that user story that requirement whatever it is you're dealing with I'd have a recommend taking a different approach if you're gonna use this. And as a thinking tool when you start a project don't start by doing the things that are obvious that are simple. Start by trying to figure out what are the things that are really complex, what are the things that we don't know how to do yet, what are the things that we are going to really have to learn something totally new in order to try to achieve it.
If I identify that there are things on this particular project that we have never done before and we don't know of anybody that has done them, let's address them first. Because I if I can solve the complex problems then the complicated and the obvious are going to become legwork. If I however spend all of my time and money doing the obvious and the complicated things and then I run up against the complex and I can't find a solution my product is going to fail. That by the way is what happens on quite a few IT projects we get done with what works what's obvious we're actually wasting our efforts if we can't solve the complex problem.