protips

Logo

This site lists the protips that we shared with students during our courses

View the Project on GitHub appliedtechnology/protips

Yak shaving

As a developer you will often find yourself doing something that you need to do in order to be able the thing that you wanted to do in the first place. For example; doing a lot of phone calls to be able to get hold of someone at the company that has the credit cards details so that you can register for an API key, so that you can start trying the new API out and see if it is useful.

This is known as Yak Shaving.

Any apparently useless activity which, by allowing you to overcome intermediate difficulties, allows you to solve a larger problem

A Yak is a big hairy cow that is found in the Himalayas. The background of the term comes from the fact that when the Yaks comes back from their summer locations high up in the mountains their hair has grown long and wide. So much in fact that they don’t fit over the small bridges over the canyons. Now the people bringing the Yaks home need to shave the Yaks a bit in order to get them over the bridge.

A yak

This post is inspired by a lightning talk I saw with Gabriel Falkenberg back in 2013.

How to shave a Yak

There are 3 steps to shave a Yak properly (I’m no talking about solving problems in you profession - no the the animals… it’s a metaphore :):

  1. Decided if you need to shave the Yak at all
  2. Is this Yak already shaved?
  3. Shave the Yak properly

Does this Yak need to be shaved?

First - take a step back and think about if you really need to solve the problem in the way that you are stuck now. Maybe you could rethink the problem in a way that the situation you are in now is not present:

Is this Yak already shaved?

Ok - you decide to shave the Yak (solve the problem at hand). Now the first thing you need to do is to see if someone else have shaved this particular Yak before.

It’s almost always better to find an existing solution, or at least get inspiration.

This is where we Google, Slack, ask around, and make phone calls to other people we know that could have done this before. We might find articles, blogs and StackOverflow answers that will help us on our way.

More than many times I’ve found an open source framework that does what I wanted instead of me writing it (markdown-link-check is a good example).

(Which is an interesting twist of Yak shaving since I now might have discovered another Yak to shave … they have layers too)

Shave it well

Once you have shaved the Yak - ensure that you do it well, so that you will not have to go back and shave the Yak again tomorrow.

Do it properly and in a way that will not pop back up tomorrow. Avoid hack something together that you or someone else will have to revisit the same problem again.

Writing tests and documentation that shows your thinking and how you solved the problem is always a good idea since it doesn’t only help the next developer (you) to understand what you have done, but it also helps you to learn from the Yak shaving experience.