Have you ever started a simple task, only to find yourself hours later doing something completely different? It’s a common human experience, but there’s a name for it, and it’s surprisingly funny. It’s called yak shaving.
This isn't about actual yaks, of course. It’s a clever way to describe that feeling when a small problem leads you down a rabbit hole of other, seemingly unrelated problems. You keep solving these new problems, each one taking you further from your original goal.
What is Yak Shaving?
The term "yak shaving" comes from a story about a man who needed to shave a yak. Why? Because his son wanted to become a painter and needed yak hair for his paintbrush. To get the yak hair, he had to shave the yak.
But then, he realized he didn't have the right tools to shave the yak. He needed a sharper blade.
The Chain
Reaction of Tasks
So, off he went to find a tool sharpener. The tool sharpener told him he couldn't sharpen the blade without a grindstone. The grindstone was too big to move, so he needed a cart.
To build a cart, he needed wood. He went to the lumber mill, but the lumber mill owner said he couldn't cut the wood without a saw.
Getting
Further and Further Away
The saw was broken. To fix the saw, he needed a specific part. This led him to a hardware store, then to a junkyard, and so on. Each step required another step, moving him further and further away from the original goal of shaving the yak.
*The core idea is that you have to do a bunch of tasks that are not directly related to your main goal, but are necessary prerequisites.
- It’s like a chain reaction of tasks.
Why Do We Shave Yaks?
Yak shaving happens for many reasons. Sometimes, it's because we lack the immediate tools or knowledge to start. Other times, it’s a way to avoid the main task, especially if it feels difficult or boring.
It can also happen when we're trying to be thorough. We think, "I need to do X first, and to do X, I need to do Y, and to do Y, I need to do Z." Before you know it, you're deep into Z, and X feels miles away.
The Programmer's Dilemma
This is especially common in computer programming. A programmer might want to add a simple feature to a website. But to do that, they first need to update a software library. Updating the library requires changing another part of the code.
Then, they might realize the server needs to be upgraded to support the new library. This leads to researching server options, comparing prices, and maybe even learning a new operating system. The original simple feature is long forgotten.