What Is Yak Shaving? Advice for Software Developers on Staying Focused

Umer Mansoor Umer Mansoor Follow Feb 13, 2017 · 3 mins read

Yak shaving is defined as:

what you are doing when you’re doing some stupid, fiddly little task that bears no obvious relationship to what you’re supposed to be working on, but yet a chain of twelve causal relations links what you’re doing to the original meta-task.

Fun-fact about the origin of the term ‘yak shaving’: The term was coined at the MIT AI Lab in the 90s. Its scientists got inspiration from an episode of the Ren and Stimpy show called “Yak Shaving Day”.

A picture is worth a thousand words. A video, perhaps billions. Here’s a video of Malcolm originally wanting to change a lightbulb but ending up chasing down yaks.

To understand it more clearly, suppose you are required to perform a task. We’ll call it task A. As you start working on task A, it leads you to another task, e.g. task B. Task B leads you to Task C, and so on. Before you know it, you are working on Task Z, completely distracted from your original goal of completing task A.

Here’s an example dialog in the world of software development.

Manager: “Did you fix the issue where we had to update the column name in our code because someone changed it in the DB? “

Software Developer: “Ah, not yet. I’m still working on it.”

Manager: “What happened? It was a one-line change.”

Software Developer: “As I looked into the code, I realized we were using a really old version of Hibernate. I tried to upgrade it but there were some breaking changes in the new version. They recommended switching to the Repository pattern so I refactored a few classes but now the DB is throwing errors. I’m debugging.”

In this fictional scenario, the developer ‘went down a rabbit hole,’ which had nothing to do with the original task of changing the column name in code. The key is staying focused and not letting distractions pull you away from the main goal. Assuming the developer was right that the code needed to be upgraded, he mixed the two unrelated tasks up. Stay focused, finish the original task. Re-evaluate and prioritize the second task of upgrading Hibernate version and then go back to it.

Moral of the story: Stay focused and stop chasing those yaks!

One thing I have always loved about startups is their ability to stay focused. Solo or even small teams of software developers at a startup can get things done much faster compared to their counterparts in large corporations because they have fewer yaks to shave. At a startup, you won’t hear: “I didn’t get any time to write code for the new feature because as I was creating the JIRA story, I realized that the epic needs to be split. I did that but then I had to move tasks and link them to the right macro on Confluence.”

I’m not suggesting that yak shaving in evil: sometimes, you have no choice but to go on side quests before you can reach your final destination. In fact, in larger companies, yak shaving is inevitable. Developers spend the vast majority of their time shaving yaks.

Ben Ramsey said it better: yak shaving “isn’t just part of our jobs, it’s the entire job description.” So the minute you start going down the yak shaving path, stop and ask yourself if shaving the yak is really necessary. The fewer yaks you have to shave, the faster you’ll get to your destination.

You might want to also familiarize yourself with YAGNI which stands for “You Aren’t Gonna Need It.. See you next time.”

#yagni

You May Also Enjoy


If you like this post, please share using the buttons above. It will help CodeAhoy grow and add new content. Thank you!


Comments (2)


Byron Dylan

People like the author feel the need to glorify and romanticize “fresh graduates at a startup” because their planning process is focused on short-term goal of “ship things very quickly” and moving up the ladder. They love inexperienced guys who keep it down and get the job done. I’m sure the author doesn’t realize that the reason yak shaving exists is because the very same group he applauds left it in the form of technical debt in the first place that a true experienced software professional will never ignore.


Umer Mansoor

It depends on the situation and priorities. Startups want to get to market quickly or are just prototyping and can sacrifice ‘engineering practices’ to get the product out the door quicker. They consciously accept risks and take on debt. An ‘okay’ product now is better than a ‘perfect’ product later. The best is the enemy of good enough.
On the other hand, established companies can’t afford the same chivalry and hence have establish processes to protect themselves. Nothing wrong with them (I think.) But also nothing wrong with asking if the yak’s even worth shaving? It’s a fine line.


Speak Your Mind