If you find yourself in a hole, stop digging
I studied a module at university called Problem Solving, aimed at mathematical thinkers, specifically those considering a career in teaching. The course was designed to teach us how to observe ourselves while solving mathematical problems; to tackle challenging problems later or, from the teaching perspective, help others understand their own problem-solving behaviour.
Observing yourself solving a problem is a really interesting process to follow, and I have since found the techniques taught in the module often apply to my daily work life as a software engineer.
One of the most useful keywords I found I used when problem-solving was ‘stuck’. At some point in most problems, you reach a point where you aren’t sure what your next step should be. Sometimes, this phase is really short and you’re able to get back on track really quickly, but occasionally you can linger in this phase, which can in turn knock your confidence. The module introduced us to a number of different strategies to combat this ‘stuck’ phase, many of which you may find useful.
So, here are my strategies to get ‘unstuck’.
Strategy 1: Admit you’re stuck
First of all, when you are stuck, you should admit that you are stuck – not to anybody else, but to yourself. You can get yourself caught up and confused and start to struggle, but writing the words ‘I’m stuck’ is incredibly freeing. It acknowledges the feelings you’re having, clears your mind and allows you to start thinking of ways to become ‘unstuck’. Sometimes, even just realising that you’re stuck is enough to help you move forwards in your solution.
Strategy 2: Mini-review
At the end of every problem-solving rubric, we were encouraged to review; think back over the problem and reflect on how it went, what we learnt and what we could do to learn more in the area. When you’re stuck, it can help to follow this review process anyway. You can ask your questions like “Why am I stuck?” or “How did I get here?” and then maybe “How can I take one step towards knowing the answer?”. This can then lead you to an obvious answer that was previously overlooked because of the stress of feeling stuck.
Another approach to reviewing a problem is the concept of rubber ducking; a technique used prolifically by developers. Although rubber ducking can be really useful, it also interrupts your colleagues so I tend to leave it as a last resort. As an alternative, I try to write down my thoughts instead but still encouraging the different thought process. Putting your swirls of thoughts into structured sentences, be it written in a random text file on your laptop or spoken to your colleague, can help distill your knowledge to the point where you suddenly get an idea or the next step.
Strategy 3: Re-enter
Sometimes when you are stuck, it can help to go back to the beginning. In a rubric, the first stage of problem-solving is the entry phase. This is when you write down what you can glean from the question or problem, what previous knowledge you have about this topic, and ideas for how you might represent the data you’ve been given.
To re-enter a problem, you go back to the original question or problem, avoiding any tangents you might have found yourself on. It can also help you to view the problem from a higher level, rather than zoomed in on the one detail you’re stuck on. Not only can this re-frame your thinking about the problem (you might only be stuck on one little part, so this approach could build up your confidence), but you can also start to see where parts fit together because you’re looking at it with “fresh eyes”.
Here, you also might want to pick up a specific case and follow it through to make sure what you know about the problem or question is really true. It gives you an opportunity to effectively restart the problem, but this time having picked up additional knowledge from your first run-through.
Strategy 4: Mull it over
How many times have you left work one evening, unable to solve a problem, only to find the answer hits you in the shower the next morning? You haven’t concentrated on trying to solve the problem, but your brain is still doing it for you (yay, brain!). The problem-solving rubric has a key word for that: mulling. It encourages you to admit you need to mull, and then take a break from the problem.
Your break might be to go and get a coffee or take a walk. Sometimes it’s enough just to switch the type of task you are doing (e.g. start to clear up your email inbox or fill out timesheets) to make your mind think differently. Regardless of what the break is, you’ll often find when you come back to the task at hand, you have an idea or a next step that has come to you unconsciously.
Strategy 5: Specialise
This is my final strategy for getting ‘unstuck’. If I’ve reached this point, my confidence can be pretty low and I start to assume I’ll never get an answer. This is when it’s really helpful to specialise; pick a specific case or set a breakpoint, and walk through the problem using this case, and this case only. This helps cement in your mind what you do know about the problem, and might point out a previously misconceived idea, putting you back on the right track.
The hope is that these strategies can help you get to what this problem-solving module called an AHA! moment; that release when everything starts to make sense. Once you reach the AHA! moment, your confidence grows and you’re able to work through the rest of the problem pretty easily. However, if you are still struggling, it’s good to know that at this point, you’ve tried lots of different things and it’s now a good time to discuss the problem with others – it’s not an obvious solution and more minds will help!
Finally, this module always encouraged us to review the solution and reflect on the process we followed to solve a problem. I always try to see if there are any new learnings I could document for the wider team, or see if there is training or research I could try to do before picking up a similar task again. This way, hopefully, we will encounter fewer ‘stuck’ moments and more ‘AHA!’ moments.
Louise Formby, Software Engineer