If you work in development, your work is mostly about solving problems. So if you find the most effective way to solve any problem, you will be infinitely more effective.
In this blog post you will learn a structured way to approach any development-related problem. You will be able to create just the right environment where solutions come easy.
Let’s begin by outlining what it is you need to do, and then we will dig into each item in turn.
This is our framework for solving any problem effectively. You need to:
-
Step away from everyday things
-
Engage others in a safe atmosphere
-
Identify and focus on the critical part
-
Use a disciplined problem-solving approach
1. Step away from everyday things
To work on a problem, you need to think. People cannot think when they are stressed. We are still animals, and stress has evolved over hundreds of millions of years to prepare us for action.
We do not think well under stress, so the first thing you need for effective problem solving is to create an environment where you can think without stress.
Tips on how to achieve this:
-
Turn off or remove distractions, such as phones, computers, and Slack.
-
Go to a quiet place where you are not interrupted by others.
-
Timebox your problem solving. You cannot focus for more than 45 minutes. Book time in your calendar to work on the problem.
-
Make a mental promise to dedicate the time. Return to other tasks after the thinking time is up.
-
Ritualize your thinking. You can have a chair for thinking, music for thinking, and a beverage for thinking. This is highly personal. Search for a place, time, and environment that you notice encourages you to think effectively without thinking about the other everyday tasks you will return to shortly.
If you want to dive deeper into this, I recommend the book The Road Less Stupid: Advice from the Chairman of the Board. Here is a link.
2. Engage others in a safe atmosphere
Have you ever noticed that when you talk to somebody about a problem, things suddenly become clearer?
Research has shown that talking to others about a problem that is troubling us, vents our feelings about the issue. Even if we engineers think we are robots and do not react to problems with feelings, it is still in there. You may feel pressure or anxiety about an issue. Talking to others allows you to share and expose your feelings. You reduce stress, stop thinking with your lizard brain, and start thinking more analytically.
The second reason for involving others in problem-solving is simple: More brains, more viewpoints, and more opportunities to critically review assumptions and probabilities. More diverse thinking sheds more light on the problem.
The challenge with involving others is to do it in a safe atmosphere. You do not want more “senior” team members to dominate or overshadow the opinions of less distinguished participants. This is why it is important for the team lead to use proper language and set an example with her behavior. You may want to consider coaching the more senior team members to try to stay silent and give room for the more junior members to participate.
3. Identify the critical part of the problem
If the problem is part of a larger “wall of problems”, it is easy to get distracted or overwhelmed. You start to not only think of the current problem, but you also start to think of all the other problems that you need to solve after this one. This distracts you from finding the optimal solution.
If you need to build a wall from thousands of bricks, the amount of work is intimidating. You get so stressed, that laying even one brick becomes difficult. So focus on the one brick you are holding, and lay it. That is the only problem.
Of course, you need to consider the other things that affect the problem you are solving. But you need to identify the main problem to solve. Do not accept a suboptimal solution to the main problem, even if that would mean that other problems are easier.
A small example of choosing the right problem to focus on
Suppose you need to go to work in another city. The move itself is stressful. Packing all your belongings, finding a place to live, renting a truck to move your stuff, getting the kids to a new school. What about hobbies? Where do you start? All the other problems start to influence the first problem to solve. Perhaps the first problem to solve is where you will live.
Choosing a new home is a big decision. If you allow the other problems to dictate a timeline for solving this problem, you may choose a home that ends up not serving your long-term needs. You might jump at a chance to buy a property that is available right now but may come with additional complications later.
4. Find a disciplined problem-solving approach
A common mistake with problem solving is jumping to conclusions with insufficient data. If you are a software development team, you are faced with two kinds of problems:
-
Design problems for new features
-
Bug-fixing problems
Especially for bug fixing, it is easy for the developers to hack their way through the issue.
“Why does this happen?”
“I have no idea, it works on my machine”
“Lets try this”
“Okay that seemed to work”
“Done!”
If your team wants to be more structured, you need to actually understand the problem. To do that, there are a couple of approaches:
- The 8D problem solving process
- The six-step systematic problem solving model (my personal favorite)
The actual solution is often the easy part. The hard part is finding the root cause.
Develop a habit in your team to collect the right information about bugs. Especially explore the changes in the system at the time of the first instance of the problem. When did the problem surface? What happened just before it?
Another important and often overlooked aspect is – where does the problem NOT occur when it SHOULD occur? It is easy to focus too much on the environment where the problem happens. But it is as important to look at situations and environments where the problem should exist but does not. Comparing these two environments can give you great insight into the root cause.
Effective problem-solving skills can be coached
With better problem-solving skills, your development team becomes a lot faster and more efficient. So use the methods in this blog post in your own problem solving, but also consider teaching them to your development teams.
By reducing stress, involving others, focusing on the correct thing, and using a disciplined problem-solving framework, development will be faster and smoother. If you need help coaching these concepts, Eficode can help.
Published: Oct 13, 2022