How to Solve Hard Problems
March 3, 2020
I’ve been a problem solver since I was a teenager. I would spend hours at my computer, trying to figure out how to compile software from source code, or get my audio driver working on Linux—super geeky stuff that I could lose myself in for hours at a time.
My job as a software developer involves a lot of problem solving as well, and in the past few days I’ve been facing a particularly gnarly bug—an issue that has taken three smart and knowledgeable people almost a week to solve.
It got me thinking about how problem solving works. What are the methods you can use to tackle hard problems?
One of the biggest challenges we all face when staring down a hard problem is our tendency to become myopic, to lose sight of the big picture (our ultimate goal) and get overly focused on the minutiae.
Without knowing what your goal is, and keeping it firmly in mind, you can’t evaluate potential solutions and weigh options. When you’re neck deep in a problem, you can easily fall victim to the sunk cost fallacy. You keep going, even as the likelihood of a positive outcome becomes vanishingly small.
On the other hand, sometimes tenacity is exactly what the situation demands. Relentless pursuit of an outcome often leads to great reward. I proved that this weekend as I worked on the bug. The seven hours I spent on Sunday debugging paid off, and I was able to go in Monday morning with high confidence that the situation was in hand.
It could have easily gone the other way, though. I may have spent all day Sunday working on the bug, only to have gotten nowhere. I may have gained some valuable experience and knowledge, but I wouldn’t have advanced my team’s goals.
It’s unclear to me exactly when you should apply the method of relentless pursuit vs. giving up and pivoting to another approach, but if I examine my bias over time, I see that it’s often too easy for me to sink large amounts of time into a problem without carefully evaluating the context, e.g. does the approach I’m taking still make sense?
If I’ve made any mistake in the past, I think it’s not seeking help from others more readily. In programming we often talk about getting “a second pair of eyes” on a problem. One of the chief values of getting another person’s input is that they’re likely not deep in the weeds, and can see the big picture more readily.
Over time, you develop a sixth sense about whether to keep going or change up your approach. You become wise to the siren song calling you deeper and deeper down a dead end path. Instead of listening to those sickly sweet notes, you learn to step back and examine where you’re trying to go and whether the road you’re on will take you there.
So, how do you solve hard problems?
- Think strategically. What is the goal? There may be many paths to achieve it.
- Consider when to quit. Decide up front how much time you’ll commit to exploring a potential solution.
- Get help from someone who isn’t caught up in the problem. Their questions and comments may help you see things from a new angle, and just might reveal the solution.
How do you solve hard problems? I’d love to hear your thoughts.