(noun) The seemingly endless series of prerequisite tasks that must be completed before you can accomplish your original goal, often leading you far away from what you initially set out to do.
Sarah started by wanting to deploy a simple web app, but first she needed to update her Docker configuration, which required upgrading her local environment, which meant backing up her files, which led to organizing her entire project structure—three hours later, she was still yak shaving instead of deploying.
The term originates from a 2000 episode of The Ren & Stimpy Show where Ren needs to shave a yak to complete a chain of tasks. MIT AI Lab popularized the term in programming contexts around ca 2000. See the Jargon File.
Examples:
- Spending hours configuring your development environment instead of writing the feature you planned
- Reorganizing your entire codebase while trying to fix a simple bug
- Learning a new framework to solve a problem that could be fixed with existing tools
- Updating dependencies, then fixing breaking changes, then refactoring related code—all to add one small feature