Few months ago my wife asked me to install additional storage in our utility closet. I took the measurements. I began sketching ideas on what that could look like. I was not too happy with my drawings. So I began researching on right software to draw simple diagrams. I decided not to pay for the software , but the free one ( Sketch ) had a steep learning curve. I then decided that I could use the software better with a mouse instead of my trackpad. The optical mouse I used kept jumping due to my table. Hence I decided to use a mouse pad. Went into my garage to find a mouse pad. Found an old one but was a little warped due to the cold. Decided I needed better lighting in my garage to find stuff quicker. I began to research on different kinds of lighting possible. LED strips were looking elegant. Then I read about LED strips not handling moisture very well. Researched a little on how to seal LED in epoxy.

All I have to show for after 6 months  is a bunch of browser tabs  doing research on transparent epoxy resins. No Shelves !!

This is called a Yak shave.

Laugh at my plight. This happens more often in software than we would like to admit.

Imagine you are a developer. You encounter an issue and you know the fix. But, you discover that an underlying library has not been updated in ages. You realise that the new version of the library is no longer compatible with the test setup that you have. So you decide to fork the repo and make your own changes. To make change you uncover that the build is blocked by a cloud configuration. The cloud configuration is shared across your org. You decide to make a custom configuration for your setup. Then you need to learn some obscure language syntax to make that work. You need to order a new book on Amazon to learn. Your credit card has expired. Your bank sent you one but you have not received the parcel. The courier company mentions they tried to deliver it but you weren’t home. You get the gist.

3 sprints after you have  committed to delivering it , you have to now explain to your product manager . You talk about the incompetence at courier company. He looks blankly wondering where did that come from !! Then he rememberers  the open tabs on epoxy resins and life goes on.

You might be thinking it is best to not go down rabbit holes like these and just do the minimal work needed.  My  suggestion is three fold

  1. Dont tumble into Yak shave mode but go down the yak shave path consciously
  2. Be able to differentiate learning from doing. Allocate resources appropriately.
  3. Try and prioritise based on cost of doing vs cost of not doing it
    Is it better if I deliver  X without waiting to sort out A,BC ?  Is it better to small bits of it now and do the big refactor later ?

I am a big fan of these detours in the journeys . These kinds of detours are unavoidable in work in an innovative setup. If you dont get lost once in a while you dont find new ways of doing things. In moderation these Yak shaves are what keep a team healthy.

Seth Godin blogged about in back in 2005 and xkcd has a wonderful comic capturing its essence.

Success
Image from : https://xkcd.com/349/