Undergraduate Capstone Open Source Projects

Yak-shaving: Investing in technology, or just self-distraction?

Posted by tedkirkpatrick on 2009/10/26

[I sent this post to the mailing list last week. Greg suggested I re-post it here, where it would last longer than on the mailing list.]

In his discussion of “yak-shaving”, Greg wrote:  “you very quickly lose sight of your original goal and wind up investing way too much time in things that aren’t directly delivering value.”

True, but bear in mind that the whole notion of “investment” is spending resources on something that does not directly deliver present value, with the expectation of future value.  And that question, when to invest in better tools versus forging ahead with the tools you have, recurs in software development, from the micro (should I make this repetitive edit by hand or write a macro/script?) to the macro (should we dump our current platform and move to a new language/library/OS combination?).   Some investments pay off:  The right skills and tools can improve your productivity, although the return might be on your next project rather than this one.

People can get caught up in tools, at the expense of producing software, but it’s also possible to make the other mistake:  focusing on the immediate job so much that you never develop any new skills or tools.  It’s important to know which of those errors you tend to favour, and establish habits that tug you back towards the middle ground.

2 Responses to “Yak-shaving: Investing in technology, or just self-distraction?”

  1. onitony said

    I think it was Paul Dowman who once told me about focusing on solving problems that cause the most pain. That is an interesting view to take, because in this philosophy, instead of building something that generates value right now, one makes other parts get in the way less.

    For some ultimate Yak-shaving, I once spend a considerable amount of effort rewriting a certain system that was distributed throughout the code base. At the end, the new code was doing exactly what the old code did. But it did that from one location, in fewer lines of code, and with better documentation. Right at that moment, no new value was contributed to the project, but it did take a lot of pain away from understanding that complex system. Every subsequent change came much easier.

    So yes, some investments pay off over time, possibly over the lifetime of a project.

  2. John Peters said

    One way to get around the ‘yak shaving’ problem, at a small and large scale, is communication. I’ve lost track of the times at work where I’ll be working on something all morning, and then discover a quicker/simpler/easier solution after talking things over with a team lead or a senior developer. The fifteen minute rule applies here (on the other hand, you can’t just give your team lead all your work). Communication is easy to do when you need to chat with someone a cubicle over, but a bit more difficult when spread across a continent, with different schedules (and time zones).

    I think communicating with (potential) end users would also help in avoiding yak shaving. Tony makes a great point about focusing on what’s causing pain. But what’s painful to a user isn’t always what’s painful to a programmer. If you centre your development around user feedback and pilot installations, you’ll be too busy with feature requests and bug fixes to have time for yak shaving.

    Of course, it’s easy to swing to the other extreme and be very myopic in development. But if I had to choose one extreme, I know which one I’d pick.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: