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.

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.

So I wondering what this community think about this.

share|improve this question

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.

share|improve this answer
    
+1 foe "by all means don't do it"! That's a really nice phrase. –  Frank Shearar Oct 4 '10 at 6:15
    
Also using a non-standard environment may make you less able to work with other environments. –  user1249 Jul 25 '12 at 11:22

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.

share|improve this answer
    
+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-Hansen Nov 2 '10 at 18:52

Depends. If unsure, ask your boss. If he's OK with it, then no one can complain.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

See Yak shaving, aka "Shaving the Yak".

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.

share|improve this answer

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

share|improve this answer

It's pretty inefficient to have each developer setting up his or her own environment. But the environment you work in does matter. Here are some ways to get the most out of it:

  • Do it when you've just joined a project, so any time you put in setting things up right will help you for your entire time on the project.

  • Fix something, not just for yourself, but the whole team. But before getting too eager about fixing things, make sure it's something your teammates will appreciate.

share|improve this answer

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.

share|improve this answer

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.