Developing your Problem-Solving skills
Software development is many things. But at the heart of most of a day is solving problems. Whether it’s how to design, build or test a system or even just conducting meetings to solve bugs, identify better requirements or reflect on sprint performance, problem-solving is part of it all. Problems can come in all shapes and sizes from solving complicated algorithms to addressing people or budgetary issues. All problems can be solved with the right thought approach, even if the overall conclusions could be wildly different.
And so it makes sense that we look at ways that problem-solving skills can be developed to help bolster technical skills with this important form of critical thinking too.
Break down a big problem
The first step is to try and break down the problem as best you can. While many problems can be obvious at first, things are not always as they seem – especially on big projects. So, rather than trying to dissect a big, complex problem, there is value in rather breaking it down into small chunks. Trying to understand the known timeline of events that help to surface the problem and then trying to divide it into different steps that occur will help you to better make sense of the problem.
This step is also critical because establishing a clear timeline of events and documenting them, puts everyone on the same page in terms of understanding the problems a little clearer and this can lead to more people contributing towards the problem solving and solution ideation process.
There can be a lot of problems that we at first might not understand or draw the wrong conclusions about. And so where possible, try and establish some data points that can help you better understand the problem and allow the data to guide you to understand the problem with a little more clarity.
This is something that can be easy to gather information when it comes to solving technical problems, but even people problems can be solved with fair amounts of data gathering. Rather than relying on what people say, feel and think (though these are all incredibly valid), try and use various surveys tools and answers from specific questions to ascertain a picture of an idea at a bigger level. It will help you better understand both your people and your organization better and perhaps even lead to finding other problems that you never even knew you had.
Identify the root cause of what went wrong
t might be easy to identify that something is wrong, but trying to establish where exactly the problem is and – more importantly – why it occurred is a lot more difficult to establish. One of the reasons why we struggle to often solve problems correctly is because we don’t fully understand them, which is why this part is so critical.
Having a proper understanding of what went wrong and why helps to not just solve symptoms of the problem that you might be seeing, but the problem itself, along with mitigating it from occurring in the future.
Think Outside the Box
Solutions to problems can often be quite systematic and our approach to implementing them is rather methodical, but also allow yourself and your team to think out the box a little more. Too often we can constrain our thinking because we are too narrow in our thinking and not looking at a bigger picture which might help us come up with a better solution.
It’s therefore important to question everything to try and understand how every aspect of the problem came to be and also how every system/process or culture that shapes a problem came to be. Once you have this wider perspective, it’s worth looking for connections between them or even drawing pictures of how they fit together and using this as a basis for team brainstorming to perhaps see if there are solutions that can be formed from there.
Don’t Rush the Solution
While some problems may require urgent solutions, we shouldn’t always rush trying to find a solution for a problem. Especially if a real root cause has yet to be established and it is often best to wait to identify the real source of a problem to ensure you have a solution that will provide the best long-term value. You don’t want to have to rectify multiple problems if it's possible to address one that may address more concerns.
Communicate the Solution
And lastly once a solution has been identified, it needs to be communicated. So often great solutions are lost in their execution due to poor communication. Here, it’s important that everyone involved clearly understand what the solution is, why it will work, and outline how it will be implemented, who is responsible for the different steps with clear timelines. Having all of this in place will ensure that the team comes on board with the solution and implements it correctly. While you also want to be careful about what you communicate, rather err on over-communication and repetition than under-communication to ensure everyone is on-board with the plan, and feel free to question their understanding of it too.
Understand corporate politics
Sadly, corporate politics can affect the way we need to approach solutions. Even if we would rather it not. Understanding some of the intra-team or intra-departmental dynamics that affect your workplace can help you find a solution that may also better navigate those. This is especially true in understanding who is responsible for what and also the sensitivity in which issues and solutions get communicated.
At the end of the day, like with any good negotiation, we want to ensure that we find a solution that best meets the needs of as wide an audience as possible and this includes, sometimes having to make compromises from your team's perspective.
Analyze, monitor, and evaluate
Much like what I shared with making better decisions – the same apples to solving problems. We need to understand how to measure the effectiveness of our solution and ensure that it is indeed solving the problem or not leading to any other unintended side effects. This is important as it not only ensures that your problem is indeed solved, but that you can also learn in the process if it’s not and perhaps draw new results and conclusions on the process. The spirit here has been to keep trying to understand things better and keep learning.
The beauty with problem-solving is that there are such a vast number of problems that we will face and different ways to approach them, that there are ultimate, many different paths to success. Implementing these above steps though should at least help us identify which solutions may perhaps be better than others and -preferably – how to prevent problems from even arising in the first place.