Tag Archives: Java

Programming with Vim: Why I Don’t Use IDEs

When I first started programming in Java, I used Netbeans, since it was the IDE recommended by the Teach Yourself book I was reading at the time. This was probably ten years ago, when the industry hadn’t gone entirely Java crazy just yet. Netbeans was cool, but it had that clunky, sluggish, default Java UI feel to it. Eventually I found out about Eclipse, and started using it. Code completion was an amazing feature when I was learning Java. Only having to type the first few letters of the hugeUnnecessarilyLongCamelCaseObjectNames that Java is so fond of felt like a blessing at the time. But as my coding progressed, I realized that the IDE was taking something away from me. I was becoming dependent on it.

What I realized is that by actually typing out the names by hand, I was 1) practicing my typing skills (which actually degrade surprisingly quickly if you don’t pay attention to them), and 2) learning the full names more effectively. When you type out the names yourself, you learn and remember them better.

So I switched to vim. By doing a lot of the typing myself, I save myself time having to fix things Eclipse thinks I want, but that I don’t actually want. But also, I’m more engaged in the code I’m writing. You are always, always, always learning when you’re coding, and by letting an IDE complete all your code, you deprive yourself of the opportunity to get that new code into your brain so you remember it next time. The last time I needed to write a Swing interface, I hadn’t done so in at least three years. But when I started coding, the lines flowed like water out of my fingers, and I was surprised by how easily I remembered how to do it.

It’s true, typing out long objects in Java is annoying (I dare you to try to use the Java Date object; after 20 minutes of struggling, you’ll code it yourself). There’s an easy solution to that: don’t use Java. I kid, of course, Java is a nice, versatile language, and it’s the language with which I have the most experience, but the aforementioned annoyinglyLongCamelCaseObjects and the horribly pedantic usage of object orientation really annoys me sometimes.

But no matter what language you’re programming in, sometimes a return to the command line is a good experience. And there’s very little Eclipse can do that you can’t do with make, git, and vim.