Yak Shaving

By Deane Barker

This is a term from IT which means to perform some seemingly pointless activity which (1) is required to complete a larger, more important tasks; or (2) is done as a form of procrastination or incidental to the more important tasks.

Often, to complete Task X, a programmer must do Task A, which leads to Task B, then Task C, etc. By the time they finally get to working on Task X, they’ve been “yak shaving” the entire day, just to get to the point where they can do the actual work they needed to do in the first place.

Other times, they find all sorts of things in the process of working on Task X which they decide to complete, either just because “I’m already in there” or as an active form of avoiding working on Task X.

The term originated with Carlin Vieri at MIT in the 90s. He described where he got the term to the Amex developers blog:

I used to play hockey late on Tuesday nights. I would have dinner at midnight Tuesdays and watch TV, and I saw the “Yak Shaving Day” episode [of Ren and Stimpy]. I thought it was so odd, that later when I was struggling to overnight a document (getting permission from an admin, setting up a DHL account, getting a PO, all that nonsense), I told my officemate I was yak shaving.

Over the next few weeks/months, I tried to get folks around the lab to use the term, and Jeremy Brown really liked it. He used it in his GSB post a couple of years after I left the lab.

Why I Looked It Up

The book Kill It with Fire, which is about modernizing legacy IT systems used the term frequently.

Postscript

This blog post about Donald Knuth tells the story of his process of writing the legendary The Art of Computer Programming. He reportedly didn’t like the typesetting languages he had available:

Yak shave 1: Somewhere along the road, implement your own programming language… Yak shave 2: Invent your own programming paradigm for it Yak shave 3: Invent your own layout algorithm for it Yak shave 4: Design a font Yak shave 5: Write an authoring tool for fonts Yak shave 6: Come up with your own versioning scheme Yak shave 7: Avoid adoption of it for greater good Yak shave 8: Implement a custom language for printable documents

This took the 11 years between the first two volumes of the series.

A commentary on this called it:

A seemingly infinite recursion of side projects in service of the main goal.

This is item #937 in a sequence of 948 items.

You can use your left/right arrow keys to navigate