Sure, IDEs are soooo attractive. They make a lot of promises and get you all excited about what a great time you’ll have with them. But every IDE I’ve ever gotten involved with has broken my heart. Until now.

I’m a vi user - have been for decades. I like it, we’ve been together a long time. It satisfies my needs. Over time, plain old vi blossomed into vim, which evolved syntax coloring and window splits. Life was good.

My development environment has traditionally been a few shell windows and a web browser. I’d edit in one, compile in another and maybe run “tail -f” on a log file in a third. Javadocs were right there in the browser. I could save changes from vi, hotkey-flip to the compile window and hit “up-arrow/return” to rerun Ant faster than I could reach for the mouse to work the buttons of an IDE. It was good. It was enough.

I’ve tried various IDEs. They all had character flaws that drove me away. Foremost among them was code editing. They all use the pointy-clicky-draggy style so common on Mac and Windows. There’s nothing wrong with that style, but my brain is wired for the move-yank-put style of vi. I come from a hard-core Unix/X Windows background (I actually like xterm cut/paste). I formed my editing habits in a glass-tty world; I was using vi before Microsoft stole windows from Apple (who stole it from PARC, who borrowed it…). I found myself always wanting to “escape” to vi to do some “real” editing. No IDE gave me the option of native vi-style editing.

IDEs offer the promise of many time saving conveniences: code-completion, macros, context-sensitive docs, automated builds, integrated debuggers, etc. These are all good, but I found they were often as much hinderance as help. And the usage models were often non-intuitive for me; miles of menus and forests of tree widgets. I tried to make it work, I really did. NetBeans and I spent an entire Saturday trying to work out our differences. At the end of the day we decided to part amicably, it just wasn’t working out.

Then a friend introduced me to IntelliJ/IDEA. It wasn’t love at first sight. IDEA also uses the pointy-clicky-draggy editing style, which at first made me think it was just like all the others. But IntelliJ has other redeeming qualities. Foremost among them is continuous syntax checking - I don’t know how I ever lived without it. IntelliJ not only tells me when my code is syntactically correct, but also when it’s semantically correct. It shows me when I’m doing something wrong before it can slip past me to become a bug. It even anticipates what I want to do, without hindering or distracting, which makes it almost effortlesss to do the right thing the first time.

IntelliJ has a multitude of talents. Its support for refactoring is something else that won me over. Smooth integration with Ant and CVS and extreme customizability also make it very attractive to serious coders (I easily configured a one-key shortcut to pop into vi when I just got-ta got-ta). But the bottom line is this: I’m more productive with it than I was with vi. IntelliJ earned my affection and respect by delivering on what it promised.

I won’t bother enumerating the extensive list of features, you can visit IntelliJ’s web site for that (also visit the Early Access area, the upcoming 3.0 version has an amazing list of
new features
). IntelliJ/IDEA won my heart with a powerful combination of features (and a lack of unnecessary frills) that pamper the coder in me. It takes care of me and doesn’t expect me to change to meet its preconceptions of what an IDE/coder relationship should be.

I’ve become very fond of IntelliJ/IDEA and expect to stick with it for some time to come. I suspect many of you feel the same way.