There are times when I am working on programming project and I get the itch to change some stuff in my environment (OSX or Linux). Vim might not being doing exactly
what I want, so instead of doing it the round about way I've been doing for a
couple months (sometimes years) I go and figure out the right way. Or I may be
doing something long handed in bash and I say to myself why don't I figure out
a better way.

The thing is when I go off and do this hours can fly by. Sometimes I
get stuck on trying to get what I want. I'll know I'm really close, so I don't give
up. I usually always get it eventually, but its after hours of tinkering and
googling. I hate the feeling of giving up and having to deal with something I
know could work better.

When I'm done I have a warm feeling knowing that my environment is a little more smooth
and personalized, but I wonder could my time be better spent. Where do I draw
the line? It seems with the all the UNIX-style tools there is an endless amount
to learn.

Always thought the sign of a superior programmer is someone who goes out of
their way to make the computer bend to their will. Am I doing it right? I figure
the bash shell, unix/linux, and vim will be around forever, so I see it as an investment.

But then again I just spend 3 hours trying to get some stupid thing the vimperator firefox
plugin to work right.

9 Answers
9

To rephrase a time-honored axiom, if it wastes your time, don't do it.

Some developers are able to optimize their environment such that the amount of time invested up front is outweighed by the amount of time saved overall by having a highly-customized environment.

If you can't see the value in customizing your environment to suit your needs and find your time is better suited elsewhere, then by all means don't do it. The end goal is to do your job to the best of your ability, and what that takes is something only you are going to be able to judge.

Do you learn something along the way? Does it make you more productive in the end? Do you have fun doing it? If the answer is yes, then by all means do it. Sometimes the benefits of doing something may not be justified when just taking effectiveness into account, but let's not forget that we have to enjoy what we are doing.

+1 for focus on enjoyment. My problems is that while I might enjoy spending a few hours hacking together a useful sed script for the project I am working on, I always feel a bit guilty about having spend a few hours not on the task that I was assigned to do.
–
Bjarke Freund-HansenNov 2 '10 at 18:52

Of course it is, up to a point. If you spend hours writing some script to automate something you rarely do, that's likely a waste of time, from this perspective. Of course, the act of writing that script may be useful in the long run.

I think you need to work on your time management skills. (This comes from someone that can get sucked into an interesting task as well.) Since it's something ancillary, you shouldn't spend half a day on one tweak. Set a time limit and pay attention to the clock. While you're researching, take some notes and/or save some links. Come back to it if you're not done with the tweak when the time limit expires.

It's also a question of prioritization. Configurations that impact your work directly and/or are relatively easy to implement should be done as soon as possible. Those that aren't so easy to implement, but still have a high payoff should be slotted in next, time permitting. Finally, the rest should be performed during down/slow time or as a break from the grind.

A development environment has to be personalized to some extent, because we are all unique individuals who think differently. Some of us use vim, some use eclipse, the crazies use emacs :-), but we have to do some tweaking to get the plugins, the colors, and the shortcuts as we like them. I use vim, so I install my favored developer font (Dejavu Sans Mono) and my .vim, .vimrc and .gvimrc from my home machine, and I'm 90% done. The rest is setting up aliases or my command-line settings.

It's well known that we periodically need to take a mental break so if you can fit in tweaks in those 10-15 minute pauses nobody should complain. Plus I feel good when I get a tweak in and can immediately start working with it.

Certainly, spend some time tweaking things to your liking. If you don't, you'll have to put up with poorly chosen defaults or inefficient tools over and over and over, day after day for all year and next year.

Avoid spending too much time on it by doing so only after 4pm, supposing the ol' factory whistle blows at 5pm. Unless you're really gonzo nuts about your work, going home will always be appealing so your enviro tweaking will be limited to one hour or whatever time was left.

software tools are incredibly important. having the right tools available is crucial and well worth the time invested (not lost). consider the investment in learning and mastering a certain text editor or programming language...these skills will be with you long after you have left your current job, which is why i keep using the term investment

think of the very best coders you know...my guess is they have very strong opinions about tools. do you know any excellent coders who let the IT dept decide what text editor they will use?

most coders are tinkerers. it is natural to tinker with your own tools. if your boss is a repsectable coder, chances are he or she is a tinkerer too

I do stock MS Windows. I don't even bother changing anything. I just add the few apps I need (firefox+firebug+webdeveloper, chrome, that sort of thing) and Putty. Then I shell into the debian servers and there is no GUI environment setup there. I code there. I don't store keys, I don't store passwords in the browser, and I certainly don't store anything I can't live without on the local machine. Then if it stops working (crashed HD, theft, whatever) I just take it to the local recycler and buy another $400 box at Fry's. Oh, and I never ever buy software. This has served me well in the last 15 years.