We’ve all been there. You’ve got a complex problem to solve and you have no idea where to start. It’s time to roll up your sleeves, refill your coffee, and turn off the dark theme in your IDE: you’re probably about to shave a yak.
What’s yak shaving? I’m glad you asked.
In a nutshell, it refers to the phenomenon where one task leads to another, which leads to another, until you end up working on something that seems completely unrelated to the original problem.
But how did you end up shaving a yak, your colleagues ask you. You could explain it to them, but it would take too long. Suffice it to say, it made sense at the time. Some things are just easier with a smooth yak.
Abraham Lincoln once said “If you give me six hours to shave a yak, I will spend the first four of them sharpening my axe.” So that’s what we’re going to do.
My favourite programming book of all time is Think Like a Programmer by V. Anton Spraul (pictured below):
In TLAP, V suggests a number of rules for solving complex problems, but the first and most important is Always have a plan. It doesn’t have to be a perfect plan, or even a good plan, but you should always have something. You can (and should) revise it as you go.
The second rule is something about Fight Club, but I’ll be honest I didn’t get that far.
So let’s start with a plan. I like to use a problem solving template that helps to organize my thoughts into some sort of coherent structure:
Though if the above format doesn’t work for you, I suppose you could use something like this:
The other benefit of this format is it encourages you to document your process. Even if you don’t know what to do next, your task is then figure out what to do next.
Write everything down as you go along. At the very least, the “What didn’t work” section will get nice and filled in, and that still feels like progress.
The famously litigious Thomas Edison is said to have tried a thousand times to create the lightbulb, but with each attempt he would say “I haven’t failed, I’ve just found one more patent with which to sue someone.”
As you start filling in the template, you also start bounding the problem. What did you try? What didn’t work? What’s the next problem to solve?
Eventually, your nice clean template might end up looking something like this:
Another benefit of documentation is that it helps you keep yourself up to speed. There’s nothing worse than coming back after a long weekend or from having switched tasks and wondering “what was this idiot thinking?”
Well, now you’ll know what this idiot was thinking.
And if one of your colleagues has the misfortune of taking over for you, they will probably be grateful for your notes. Though they may also end up giving you a wide berth at office parties.
In the immortal words of the famously mortal Julius Caesar: “Veni, Vidi, Vici.” Which is Latin for “And that’s why I’m shaving this Yak.”