Yak shaving

Any apparently useless activity which, by allowing you to overcome intermediate difficulties, allows you to solve a larger problem.

Coined by Carlin Vieri in his time at the MIT AI Lab (1993-8) after viewing a 1991 episode of The Ren and Stimpy Show featuring “Yak Shaving Day,” a Christmas-like Holiday where participants hang diapers instead of stockings, stuff rubber boots with coleslaw, and watch for the shaven yak to float by in his enchanted canoe.

Via Wiktionary

Feb 2000 MIT CSAIL Mailing List

“Yak shaving.” Our very own Carlin Vieri invented the term, and yet it has not caught on within the lab. This is a shame, because it describes all too well what I find myself doing all too often.

You see, yak shaving is 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.

Here’s an example:

"I was working on my thesis and realized I needed a reference. I’d seen a post on comp.arch recently that cited a paper, so I fired up gnus. While I was searching the for the post, I came across another post whose MIME encoding screwed up my ancient version of gnus, so I stopped and downloaded the latest version of gnus.

Unfortunately, the new version of gnus didn’t work with emacs 18, so I downloaded and built emacs 20. Of course, then I had to install updated versions of a half-dozen other packages to keep other users from hurting me. When I finally tried to use the new gnus, it kept crapping out on my old configuration. And that’s why I’m deep in the gnus info pages and my .emacs file – and yet it’s all part of working on my thesis."

And that, my friends, is yak shaving. (Not that this particular example happened to me recently or anything.)


Ren & Stimpy

And of course, the Ren & Stimpy video:

If you’re in the middle of doing something like “I’ll just try installing this web app”, and then you find yourself updating your database, shuffling SSH keys, debugging DNS settings, etc. – that’s yak shaving :slight_smile:

Very recognizable :smile:. I found Seth Godin’s writeup on yak shaving enlightening and entertaining as well.

1 Like

I realize that the base concept is kind of lost that inspired this. What I had originally heard, was the concept that you are in the Himalayas and there is a yak in front of you. And you need to shave the yak. But you don’t have a shaver of any kind.

Ok, what do you need to do to make a shaver? Well, do you have some metal? You’re going to have to get a pickaxe, and mine raw ore, and smelt the ore, and build the parts for a shaver.

Ok, now you need electricity to power the shaver. How do you make electricity? OK, first you’re going to need to build a generator…

etc. etc.

Basically, there is a long list of things you need to do before you’re even ready to shave the yak. This is very common in programming with all of the dependencies that are needed to make something work, across the operating system, permissions, databases, web hosting, domain names etc. etc.

More yak shaving references and imagery:

This one has a “crest / award” with a yak: