312 - IDEs-and-Vi
A year or so ago, I would have probably laughed out loud if you told me that I would switch from an intelligent, syntax and parse tree aware, fully integrated and polished IDE to a plain-text editor and a shell. How wrong I would have been.
At work I am doing some fairly hefty Java coding, including such fun as custom class loaders and low-level system interfacing with some fairly flakey drivers. Not exactly trivial is the idea I’m trying to put across. I started off by using Eclipse for a week. I spent time learning it and got fairly familiar with it. I suppose you could say that wasn’t enough time, but that is by the by. The features that I thought I missed just didn’t turn out to be as compelling as I thought.
Take intelligent code completion. I relied on this feature in Delphi, and I thought the same would be true in Java. However, it turned out not to be the case. I seemed to end up slower as I spent time trawling through lists of possible completions. I think this could be due to the intelligent design of the Java classes; many operations are the same across classes. This just wasn’t the case with Delphi, where I spent much of my time using WinAPI calls, which are anything but consistent and simple to use!
After a few days, I reverted back to the old faithful Google. The class docs for pretty much the entire of the standard Java platform are an “I’m feeling lucky” search, via a “java [ClassName] class”. I think this inpart shows just how things have changed with the advent of the internet and documentation being mere seconds away.
I also thought that things like live syntax-error spotting (complete with wavy red underlines) and other intelligent helpful features would swing me. But no, I generally spotted errors just as fast as the IDE. This also seemed to slow me up, as I would spend time correcting each error as I went, rather than concentrating on the algorithm I was trying to implement and cleaning up the syntax errors later.
One thing I do think is great is the way an IDE shows the errors in a “Task List” style, which is a great improvement over the javac’s rather cryptic formatting of messages.
However, I gave in this week. I downloaded cygwin and installed bash, make, cvs and all the tools I’d come to know and love over the past year. Gvim had been installed all along, I can’t live without that app, it seems. Vim, as an editor, far outstrips Eclipse, even though it doesn’t have all the fancy code-completion and so on. I can hold most of the relavent code in my head at a given time, with makes code-completion and such irrelavent.
Ctags also helps with this. Should I forget what arguments a method takes, Ctrl+] takes me to the method declaration. A quick look and a tap of Ctrl-t takes you back to where you were. Quick and simple. I suppose the Eclipse editor is great for some programmers, but I am just to entrenched in my ways. Vim allows me to code without interruption which in turn allows me to code quicker and with less stress.
I wouldn’t say this is true for everyone, or even most people, but I’m a minimalist at heart and this is what works for me.
Like I say, a year ago I’d just not have believed that I’d go from a great IDE to a terminal and Vim, but there you go. Now, if someone could just sort out javac’s error messages, I’d be a happy Mike…