The more you code, the more you search. It’s just a fact of life. There’s no way any programmer has time to write every line of code herself, so all we hit the Google bar and begin hunting for the code we need to get the job done a bit quicker.
But quicker isn’t always…well, quicker. One search often leads to another which leads to a chat board that leads to a threaded discussion and so forth and so on and pretty soon you’re shaving a yak trying to figure out where the last 60 minutes of your life went.
Hold on…doing what? Yak shaving is one of those terms that, on the surface, makes no sense whatsoever. But it conjures such a bizarre image that, once you understand its meaning, you’ll recognize it just about everywhere you go.
How does one shave a yak?
One of the most cited definitions comes from The Jargon File, courtesy of Eric S. Raymond:
Yak shaving is…any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you’re working on.
The entry refers to what may be the seminal definition by Carlin J. Vieri, Ph.D., described in an email from Jeremy H. Brown to his colleagues in the MIT Artificial Intelligence Lab back in 2000.
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.
The term has been propagated by two blogs, one by Seth Godin and one by Joi Ito, who notes that yak shaving can have some positive effects. But the definition seems to ultimately go back to an episode of Ren & Stimpy. Adam Katz, another alumnus of the MIT AI Lab, wrote:
“Though not a regular viewer of Ren and Stimpy, I did see the ‘Yak Shaving Day’ episode and thought it bizarre enough to be the end of a long chain of tasks.”
And then writer Alexandra Samuel offered another bit of etymology on her blog, which effectively boils down to that time of year, every year, when Tibetan villagers realize that their rice harvest could have been be made easier if they shaved their yaks to facilitate rice-paddy bridge crossings.
But if you really want to see what yak shaving is, check out this perfect illustration from an episode of Malcolm in the Middle.
And…there you go. I’m officially shaving the yak about shaving the yak. For programmers, the idea of getting caught up in meta-tasks is all too common. But the very act of realizing you’re doing something just may be the key to salvation.
Finding another ways – or maybe a better razor
In his blog, “Don’t shave that yak – God loves lazy programmers,” Pete Warden noted,
“I swear that the biggest reason I’m a more effective programmer now than when I was 20 is that I’m better at spotting when I’m shaving a yak, and finding another way.”
Like Pete, we found a better way and it became the basis of ANSWR, an elegant Google plug-in that helps you tag, annotate and instantly share your searches. Look, here’s our ANSWR results for yak shaving stories.
Best of all, friends don’t let friends shave the yak either. Because when your team uses ANSWR, it becomes a instant collaboration platform. One tagged search means others can see what you found useful, comment on it, improve it, or add to it…which helps everyone work more efficiently. And ultimately, that’s what coding should be all about.