Solving problemsPublished on January 4, 2023.
And ideas on how to do this effectively.
In my work both as a software developer and a designer, I am constantly faced with problems that need to be solved. The kinds of problems range from small software bugs to deeper, more complex problems like a client who needs to have an easy way for their customers to interact with their scientific model. In those cases, I often wondered whether the way we were solving the problem was the right approach.
Naturally, the simpler a problem the easier it is to solve them, but the more complex they become, the harder it is to solve them.
Solving problems has been studied across various scientific fields (health care, computers, biology etc.). These resulted in the birth of complexity science and concepts like the Cynefin (ki-neh-fin) framework. What all of these have in common though is that they all work with definitions of complexity levels. A good example is how the Cynefin framework defines these levels:
- Simple problems
- Complicated problems
- Complex problems
- Chaotic problems
To clarify their meaning, here are some examples to illustrate the difference.
Take for example moving to a new house. On its own it can be quite an undertaking, but mostly we can manage this without the need to plan it all out in detail. The steps are almost self-evident. You pack up everything. Get some vehicle to move it (truck or a car). Move it, and unload it in your new home. That is it. In other words, you can work the plan completely in your head. These problems are simple.
A complicated problem is made up out of several interconnected parts that need to be solved individually to solve the bigger problem. This makes these problems harder to grasp and manage. For example, no one can build a shopping mall or set up a computer system, without careful planning and design. In general, complicated problems are best solved by breaking the problem up into smaller tasks and solving them individually. This is for example, something that can be seen in construction. Architects design the buildings. Planners figure out when, where and by who certain tasks need to be done. And finally various experts (carpenters, plumbers, etc.) work together, based on the design and the tasks, to construct a building.
But when the complexity of a problem reaches a certain point, it becomes hard to understand how its parts are connected and interact. Good examples of these are climate change, an economic crisis, or raising a child.
Dealing with complex problems requires a different approach than complicated problems, because you cannot analyse a system (or its parts) if you cannot understand how its parts interact. In other words: An analytical approach to trying to understand the problem — like trying to find a root-cause — is doomed to fail, because there is likely not to be a single root-cause or many of the factors influencing it are unclear.
For example, when raising a child, there is not 1 thing you need to do to make sure they turn out to be decent functioning adults. You will need to do a lot of things. And even then you cannot apply the same approach to every child.
This is why self-help books on how to raise your children will rarely serve as a simple solution.
Dealing with complex problems comes down to experimenting with what makes a problem less of a problem. This means that you apply a possible solution, verify that it has a positive effect and little to no negative effects. This is why, by iterating (improving something again and again) you gradually move to a better and better solution.
These are problems that we cannot begin to solve, because we do not understand what factors affect them.
When we try to predict the weather, it is often the case that for the first couple of days the predictions are quite accurate, but after those days the predictions become more and more unreliable. This is because weather prediction only really works for the first couple of days, making it a complex problem.
Beyond those days, the factors influencing the weather become increasingly unpredictable. Making true long term weather predictions a chaotic problem.
A problem can also move from being complex to being chaotic. Or vice versa. A good example of this is climate change: as explained previously, this is currently a complex problem. Yet, if left unsolved for the next 20 years, it may change into a chaotic problem and become unsolvable for the foreseeable future.
So summarised, when problems grow bigger, it is not that they grow bigger in terms of size, but in terms of complexity. In other words, when problems become bigger, our minds are less and less capable of fully grasping them.
This does beg the question, when does a problem’s complexity shift from one type to the other? Are these clear pivot points, or do all of these types actually exist on a spectrum?
Besides complexity, I think there are also various other aspects of problems and problem-solving that affect the level of success, such as: do you make sure everyone is actually motivated to solve the problem? How do you make sure that human-error is prevented?
If you (the reader) have some extra ideas and/or constructive feedback, feel free to contact me via Twitter[https//twitter.com/sanstreamed]. Be sure to include a reference to this article.