Read our newest book, Fundamentals of DevOps and Software Delivery, for free!

Introducing: The Yak Shaving Series

Headshot of Yevgeniy Brikman

Yevgeniy Brikman

JUL 4, 2017 | 3 min read
Featured Image of Introducing: The Yak Shaving Series
Most programmers are terrible at estimating how long a project will take. “Let’s see, all I need to do is deploy a few servers in AWS,” you think to yourself, “I’ll have it done in a few hours.” Three weeks, two all-nighters, 457 cups of coffee, and three rolls of duct-tape later, when you finally have the thing up and running, you look back at what you did, and despite having gone through all that pain, you can’t quite remember why it took so long. And so your next estimate is just as wildly inaccurate as the first.One of the reasons software estimation is so hard is that software projects have a nearly infinite level of detail, a bit like a fractal. When you are doing an estimate, all you think about is the big, zoomed out picture, which seems completely manageable:
But when you actually start doing the project, you begin to zoom in, and realize there is quite a bit of detail hiding in every corner. And each of those details seems to have more details attached to it, and each of those has more, and so on.
This sort of issue is often referred to as “yak” shaving. Seth Godin has a particularly good description of it:

Yak Shaving is the last step of a series of steps that occurs when you find something you need to do. “I want to wax the car today.” “Oops, the hose is still broken from the winter. I’ll need to buy a new one at Home Depot.” “But Home Depot is on the other side of the Tappan Zee bridge and getting there without my EZPass is miserable because of the tolls.” “But, wait! I could borrow my neighbor’s EZPass…” “Bob won’t lend me his EZPass until I return the mooshi pillow my son borrowed, though.” “And we haven’t returned it because some of the stuffing fell out and we need to get some yak hair to restuff it.” And the next thing you know, you’re at the zoo, shaving a yak, all so you can wax your car.

Testimonial Profile Image

Testimonial Profile Image
At Gruntwork, we do a lot of yak shaving. We’ve spent the last couple years building Infrastructure Packages (reusable solutions to common infrastructure problems, such as how to run a Docker cluster or how to manage your network topology in AWS), and along the way, we’ve shaved many, many yaks. And now, we’re going to start sharing some of these stories with you in a series of blog posts we’re calling The Yak Shaving Series.We hope you’ll find these stories entertaining. We hope that by writing down the gory details of hair loss — both our own and that of the yak — we can capture just why building and estimating software is so hard. We hope that by sharing these stories, we can turn days of our frustration and pain into something we can all laugh about and perhaps even learn from.So, without further ado, here are the first few entries in our Yak Shaving Series:
Do you have your own stories of Yak Shaving? If so, share them in the comments!Your entire infrastructure. Defined as code. In about a day. Gruntwork.io.
Share
Grunty
Resources

Explore our latest blog

Get the most up-to-date information and trends from our DevOps community.
TerraformResouces Image

Promotion Workflows with Terraform

How to configure GitOps-driven, immutable infrastructure workflows for Terraform using Gruntwork Patcher.
avatar

Jason Griffin

October 3, 2023 7 min read
TerraformResouces Image

The Impact of the HashiCorp License Change on Gruntwork Customers

How to configure GitOps-driven, immutable infrastructure workflows for Terraform using Gruntwork Patcher.
avatar

Josh Padnick

October 3, 2023 7 min read