Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a bit of a tool nut and I'll often spend as many as 6-8 hours a week finding new tools, improving my existing tools by writing plugins or adapters or playing around with new tools to see if I like them any better than the ones I have.

That's not counting that my official day job is basically tool-chain development for a large company.

Should I be spending this much time trying to improve my tool-chain? What should I be focusing on when improving it to maximize my time?

share|improve this question
    
There is sometimes a fine line between a "getting to know you"-type question and just a regular question asking for advice, but I think answerers were able to find the constructive side of that line. I've made some minor revisions to your question to avoid attracting GTKY-type poll answers. –  user8 Sep 29 '11 at 17:32
    
Who is it that said programmers like writing programs that write programs? –  JeffO Sep 29 '11 at 20:00
add comment

4 Answers

Generally as a developer you're being paid to solve problems or produce tools for other people to use to solve their problems. If you think about development as a lean process anything that doesn't add value to the product is waste and should be eliminated. Does have a cool new editor or plugin add value to your product? Probably not...so time spent on that should be eliminated.

Or not.

David Anderson has a good comment to go with this - "eliminating waste is like going for bronze [at the Olympics]". What you're actually trying to improve is cycle time (i.e. rate of delivery of value). There are lots of things in development that don't add value to a product that if you don't do them increase cycle time - daily stand-ups, testing, etc, etc. Of course eliminating waste is a good thing - but it shouldn't be your number 1 priority.

So...to answer your actual question...personally I think if you're spending 8 hours a week on tooling then it's likely to be very excessive. Sometimes though you will spot something that is a bottleneck and/or error prone and you'll be aware that there's some tooling out there that you can get, learn about, or build which will make you significantly more efficient.

share|improve this answer
add comment

Based on your statement (in a comment) that "this is not billable work time". You've really changed the question to something other than we are likely to assume by reading the question in its current form.

I firmly believe that a good developer will continuously work to improve himself. That improvement cam come through reading blogs and other things describing new or alternate development skill. It could also come through the things you learn as you examine tools and/or improve them.

Spending 6-8 hours of personal time each week to:

  • Improve yourself as a developer = GOOD.
  • Fiddle around with tools and accomplishing nothing = FUN.

(You probably land somewhere between, making it "good fun"! :) )

share|improve this answer
add comment

Personally I'd say that unless you deal with particularly dynamic requirements, 6 - 8 hours a week is massively massively excessive.

What you need to ask yourself is how many of those hours are recovered by the efficiencies those tools offer you? If you use a tool 10 hours a week if it genuinely makes you 10% more productive then, assuming you keep a tool for a year, that's a 52 hours saving so, so long as you spent less than 52 hours on finding and selecting it then it was a good thing.

But I'm thinking that sort of saving is going to be rare. Think about the following:

  • What's the upskilling time? Sure you're going to be more productive eventually but for the most part that won't happen instantly and you'll be less productive to start. You need to figure in training time (zero productivity) and the bit when you're achieving less than you did, as well as the bit where you're more productive.
  • If you fiddle with tools a lot you're likely to swap them a lot. If this is the case then the payback time has to be a lot shorter as you probably won't have it for a year.
  • If you swap tools a lot you probably never become an expert in any of them. Perhaps becoming better with your existing tool is a cheaper way to productivity?
  • You probably work for 40 - 50 hours a week. You need to understand how much of that you spend on each task and how much it's really going to save you. If a tool allows you to do a database upgrade in half the time but they only take an hour and you do them once a month it's probably not that great.

So advice:

  • Look at the most time consuming tasks you carry out. What are the things that take you most time to do? The more time you spend doing something the greater the potential for savings. If you spend 10 hours a week doing something and can save 20% that's massive. Conversely if you do something rarely and or it's very quick (say half an hour) even eliminating it might not be worth the effort in doing so.
  • What are your pain points? Sometimes tasks cause disproportionate pain - perhaps they cause interuptions or make customers unhappy. These are things where it might be worth investing time but only if that time pays for itself in an increase in productivity greater than solving the problem or a similar increase in customer happiness.
  • Are you hearing really good things about something. And I mean really good things. If so then take a look, but be critical and look for credible people with solid stories and a consensus, not just people hyping something new.
  • Understand the difference between better and different. This is the biggest thing. Novelty is lovely but all too often it's not actually better. Programmers are the worst in the world for reimplementing something with a relatively minor change and touting it around. Different is interesting but it's not always better.
  • Set up a periodic review for each item in your tool chain and research it at that point. Personally I'd say more than once a year would be over the top. Somewhere around 18 months - 2 years would probably the point where things will have improved enough to justify a change.

Against all this, if you want to fiddle because you enjoy it, then by all means fiddle. Just don't kid yourself that it's productive when it's not and (as a development manager) please don't try to convince me it is unless you've been through the list above.

share|improve this answer
1  
For the note, all of this time is my own free-time, not billable work time. –  Drew Sep 29 '11 at 16:04
    
@Drew - That's cool - the last paragraph is all about that. If you enjoy it then great, but time is time whether you're paid for it or not. Why would you waste your own time more than work time? –  Jon Hopkins Sep 29 '11 at 16:07
    
To me it's not a waste of time for the reason you said. I enjoy messing with tools that I'm going to use. :) –  Drew Sep 29 '11 at 16:11
    
Secondary question, are things like databases, web frameworks, etc. generally referred to as tools by the larger community? I tend to think of them as tools but maybe I'm the isolated case. –  Drew Sep 29 '11 at 16:12
    
@Drew - I would seem them as equivalent for the sake of this question as the assessment process is similar. –  Jon Hopkins Sep 29 '11 at 16:14
show 1 more comment

In general, these questions are about risk and time value. What is the probability that the future value of the time you are now spending on these tools will increase your productivity by at least an offsetting amount? Sometimes this time spent pays off. On the other hand, in the future you might look back and really wish you had done something more beneficial or useful with the time you are now spending on learning these new tools. It's a gamble, so the answer "how much" has no generic answer. You need to estimate your own individual odds.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.