If you’re a software engineer trying to be snarky, it’s important to get these terms right for maximum effect.
What is Yak-Shaving?
“Shaving a Yak” means performing a seemingly endless series of small tasks that must be completed before the next step in the project can move forward.
Is this a good thing or a bad thing?
It depends. Yak Shaving is sometimes very much necessary. It’s “bad” only when done unnecessarily. It’s unfortunate when necessary but might not be a bad thing at all under certain circumstances.
Seth Godin’s blog post on the subject was the first time I ran across this way back when and does a good job of explaining this concept in great detail.
What is Bikeshedding?
“Bike shedding” means spending most of your time discussing the simple but trivial issues rather than focusing your time on discussions around the bigger but harder tasks at hand.
The parable goes: a committee of members started working on the design of a nuclear power plant. Designing a new nuclear plant is probably no joke. Given how daunting and overwhelming this task was, the committee instead landed up spending most of that time designing just the bike-shed outside of the plant.
Is this a good thing or a bad thing?
This is most definitely a bad thing. It’s also referred to sometimes as “Parkinson’s law of triviality”.
I will add this caveat though: many software engineers rush discussions around topics like “naming” to be bike shedding. I vehemently defy such attempts. Naming is an important part of maintaining any code base. It’s one of those deceptively simple tasks that if done wrong will bite you in the behind for years to come.