Sometimes in the software development world, things go more or less according to plan. I have a project, I work through said project in a relatively orderly fashion, and I finish and release the project more or less on the deadline.
And then there's the rest of the time. I start in on a project thinking that everything that everything is under control, only to find that three weeks have passed and I'm no closer to achieving my original goal, but I'm sure that what I am building is going to be epic and if I can just finish this one thing that I thought of yesterday and started implementing this morning that is not even in the same hemisphere as my original goal but is very important, everything will be perfect and I'll be finished in no time.
Ever been there? I certainly have, and apparently so have enough other people that there's even a term for it - yak shaving.
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.
From Seth's Blog: Don't Shave That Yak!
The danger of yak shaving is that it feels productive. Perhaps all publicity is good publicity, but not all work is good work. While waxing your car and fixing a yak hair pillow may both be important, fixing a yak hair pillow as a means to wax your car is not.
So how do I stop yak shaving?
Step 1: Admit that you have a problem
The first step, of course, is to admit that I'm yak shaving. As with most problems, this step is the most difficult.
"No, this isn't yak shaving, this is really important." (I'm halfway to the zoo at this point.)
To decide (honestly) if I'm yak shaving, I have to remind myself of my original goal, and how closely what I'm currently working on relates to/helps with that goal. If the relationship is "my goal is to wash the car, and I'm using the car to drive to the zoo", it's time to take action.
Step 2: Stop everything
The only way to stop yak shaving is, well, to stop yak shaving. For me, this means stopping what I'm working on cold turkey. There's a real temptation to work for "just five more minutes", but ultimately this isn't any more productive than hitting the snooze button in the morning. One moment you're sleeping an extra five minutes, and the next you're running out of the house, one shoe half on, the other in your hand, and the third...wait, why do I have three shoes!?
Walking away is hard because it feels like giving up. What drives yak shaving is the feeling of productivity combined with the promise of future excellence. In reality, yak shaving is the work equivalent of an infinite loop - you're using CPU cycles, but you aren't really getting anywhere.
Step 3: Work on (and finish) something else
After completely walking away from my half-shaved yak (sorry buddy!), my next step is to find a bite-sized project that I can finish quickly and easily. This new project must be completely unrelated to my yak disaster, it must be small and I must finish it. Even if the project is incredibly trivial, the point is to re-train my brain to start and finish something, anything, without expanding and second guessing and finding a way to make it epic. In addition to reminding me how to finish a project, this serves to restore my confidence that I can finish a project.
Step 4: Return to the original project (with a fresh perspective)
Once I've completed my unrelated project, I can go back to the zoo and assess the damages Usually, with this much-needed distance and perspective, I can get back to washing my car like I originally planned.