Another very important tool are IDEs (well, there are some that say that real programmers don’t use IDEs, but I’m not one of them, although I really like emacs keybindings). But seriously, a good IDE can make the difference between a good and bad programming experience. For Java development I use the Eclipse IDE, and here is a list of the things that I get from it:
- Autocomplete – Do I really have to remember all the methods of that class? My memory is already full with pictures of funny animals. And it also will also help me fill the parameters if I have appropriate variables available. And it matches a return type if I am assigning a function to a variable. The Juno version of Eclipse includes an event better autocompletion – Code Recommenders, which analyzes your code and recommends you the best method based on the usage pattern detected in your code. Sweet!
- Refactoring – I wrote a post on the subject a while ago. Another thing you don’t need to worry about (you already have enough).
- Source Control – Why do you have to go somewhere else to do source control? You finished editing, check the changes, add the files to the commit, write a comment, commit, and push! And never leaving your IDE.
- Reduction of Learner’s Pain – IDEs make life easier for programmers when they are starting in the language. They don’t have to learn what command compiles, builds, executes, etc. They just click here and here and things work. This DOES NOT mean that they don’t have to learn those details later, but it is better to take things one step at a time.
- Visual Debugger – Have you ever tried debugging an application in a textual debugger? I have, and trust me, it is not fun. It may be a good experience for life, but not something you want to do every time you want to analyze how some code works, or why your program behaves in a completely different way from what you thought.
- Centralization – doing all things in the same platform (when things are done right) saves time and headaches. I write the code, compile it, test it, commit it, check it out, comment it, debug it, and all in one place, with a unified interface.
This is not to say that programmers can’t do great stuff using only vi and the command line. I’m sure they can. But why make life harder? Software is the tool you use to solve a problem, not the problem itself. So use your time and brainpower to solve the problem, and let the tools give you a hand.
This post was inspired by this article on the I Programmer web site. They have a very good newsletter, with hidden pearls now and then. I also found this interesting article on the same topic. The war is still on.