Yak Shaving — A developer’s nightmare!
You may not be familiar with the term, but I promise you’ve experienced it before
“Yak shaving is a programming lingo for the seemingly endless series of small tasks that have to be completed before the next step in a project can move forward.”
One day I was pair programming with a colleague, wasting too much time on something that is too far from our original task. It was then, in a peak of frustration, when he taught me this term. Cool, right? Learning new things is fun. You may think this is where the story ended, but it didn’t.
I was super curious to find out why is that the term — Why yak? Why shaving?! All I could find online was that Carlin Vieri coined this term and that it was inspired by an episode of “The Ren & Stimpy Show”. That may explain the origin of the term, but not the big question:
Why yak shaving?!
So, I went to the person that knows everything — the senior engineer in my team, of course. He told me a story kind of like this:
“Let’s say you want to ship your code. In order to do so, you need your CR (code review) to get your colleague George’s approval.
George would LOVE to go over your CR, but he is waiting for Sarah from IT to unlock his laptop. He forgot his password and accidentally tried more than 5 times.
So you call Sarah, asking her to help George. Sarah really wants to help Gorge with his laptop but she can’t do it from home. She had to stay home because schools are still closed and her dad John couldn’t take care of her child today.
So you call John asking him to go to Sarah’s house. John wants to help his daughter, but couldn’t because he is going store after store, searching for Yak hair carpet.
So you go to the zoo, find a yak, and shave it so you could make a yak hair carpet and get your code shipped.”
Let’s look at a more realistic example:
A few days ago I wanted to start a new task I got. Before doing that I needed to add one harmless line of code to fix a CR I pushed the other day. When we commit a CR, we need to declare that we test it locally beforehand. This is to assure it works and doesn’t break anything. The problem — I had deployment issues, so I couldn’t deploy locally. So I needed to fix my deployment issues so I could assure I tested the code locally so I could get my CR approved so I could start working on my new task!
Share with me your worst yak shaving story! How much time have you spent on that? How many steps were on the way?
I hope you enjoyed reading this article and found it useful. I would love to hear your thoughts, here in the comments or in a private message:
Did I mention I have a new website? https://www.cupofcode.blog