[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.