yak shaving
loreprogrammingops culture
The chain of unrelated sub-tasks you must finish before you can do the thing you actually set out to do.
You want to fix one bug, but first you must update a library, which needs a newer runtime, which needs a config change, and suddenly you are shaving a yak. The term comes from the MIT AI Lab in the 1990s. Naming it is useful: it is the cue to ask whether the detour is really necessary.
Yak shaving is the recursive descent from the task you meant to do into the unrelated prerequisite of the prerequisite. You sit down to fix a typo, which needs a newer library, which needs a runtime upgrade, which needs the package manager repaired, which needs a certificate renewed, and at some point you are shaving a yak with no memory of why.
The phrase comes from a Ren and Stimpy episode by way of MIT, where it was adopted to describe exactly this pattern of nested prerequisites. What makes it a genuinely useful term rather than a joke is that it names something real about technical work: the distance between intent and the current activity can grow arbitrarily long, and nobody notices while it is happening because each individual step is justified.
The practical discipline is a stack rather than an escape. Write down what you were originally doing before descending, so the way back exists, and set a limit on the descent before starting rather than discovering it at midnight. Sometimes the yak genuinely must be shaved. The failure is not shaving it, it is forgetting there was ever a reason.
Also known as: yak-shaving, shaving the yak
Sources
- MIT AI Lab / Carlin Vieri, 1990s