I gleefully rise to the bait offered in Brad O’Hearne’s article: 10 Reasons to Dump Your Java IDE. He argues as much against IDE-dependent developers as he does against IDEs, but I’ll still play along.

Reason 1: Dependence on an IDE is a liability.
Rebuttal: Of course it is, but it’s impossible to use a tool and not become dependent upon it. The more features the tool has, the more dependency forming it is (assuming you use the features). Stating this as a disadvantage is silly, it’s a tradeoff. The author mentions Emacs and vim as regular old text editors, but they are chock full of features. Try taking Emacs away from a heavy Emacs user and giving them Notepad. I think that you’ll see a negative reaction there. Frankly, I’d rather work as productively as possible every day and risk having to change for a new job than to lower my productivity by using a lesser tool out of fear of becoming dependent upon that tool.

Reason 2: Lower cost.
Rebuttal: Developers tend to be highly paid professionals. If a tool enables a developer to increase their productivity significantly, what good reason is there for not paying for their tools? Maybe we should give all developers 386 computers running Windows 3.1 in order to save money as well. Compared to how much a good developer is paid, costs for licensing tools are insignificant, and certainly not worth intentionally lowering your developers’ productivity.

Reason 3: IDEs are pigs.
Rebuttal: Same as the last one. If you’re too cheap to spend a couple of bills on more RAM for your developers, why are you paying them tens of thousands of dollars a year?

Reason 4: IDEs hide ignorance.
If your developer can’t work outside their IDE because they don’t really understand how Java works, why did you hire them in the first place? They didn’t use their IDE when they interviewed, did they? Should all developers forsake tools that help them increase their productivity because some bad developers can use them to hide their poor skills? Or should we abandon them just to prove to ourselves every day that we don’t need a crutch?

Reason 5: IDEs screw up collaboration.
His basic complaint here is that if the way the IDE works is not compatible with the way the team’s project is set up, it makes things harder for everyone. This is a management issue. If everyone on the team does things one way, and the guy with his own favorite IDE does things another way, then it’s up to the guy with his favorite IDE to change. I’ve been the only guy on a team to use Emacs when everyone else was using the same IDE, and it was up to me to make things work for myself. That’s the risk you take when you won’t go with the team standards. The issue here is not standardizing on a tool, not whether IDEs are good or bad.

Reason 6: IDEs make you ignorant.
Very similar to an earlier argument. The complaint here is that IDEs abstract away some complexity that you may really need to understand. This is always a risk at any level of abstraction, right? For me, it would be unsuitable to use build scripts that I don’t understand. I’d expect any member of a team to be able to hack build scripts as well, at least at some basic level. The same thing goes with source code control. Again, he asks to toss away tools because they help some people avoid understanding things they should understand. Not persuasive.

Reason 7: IDEs are bound to particular platforms.
So what? I’m not sure what the worst case scenario is here. You get hooked on an IDE that’s available only for Windows and then you start working in a shop that makes you run Linux? Either you’re a competent developer who can make things work for you on Linux, or you suck and you don’t take the job because you know you’ll be exposed. This argument is really a reach.

Reason 8: Cross-language compatability.
Use the right tool for the job. When I started using Emacs, I did so because I thought I’d just learn one editor and use it for everything. Except that I found I still preferred vim for some things, and Emacs for others, and then later learned that IDEs for Java provided useful features I wanted to take advantage of as well. I can be ridiculously productive in a Java IDE and turn around and be productive in Perl using vim. I see that his real argument here is that these tools are too expensive, but as I stated earlier, his argument falls upon deaf ears. Either pay because it’s worth it or use something free. This is the choice we all make every day when it comes to software.

Reason 9: Integration with third party tools can suck.
True. It’s a consideration. However, most decent tools these days let you use an external tool for the complicated stuff and built in tool for the simple stuff. I use CVS integration in my IDE sometimes, the CVS command line tool sometimes, and Tortoise CVS sometimes, all on the same modules. No big deal.

Reason 10: You have to learn IDEs.
Of course you do. He’s a fool for saying that there’s nothing to learn with Emacs, though. Learning Emacs is the task of a lifetime. And the more you learn the more productive you become. It’s the same with most IDEs. You can jump in and create a product and edit files right away, but you can become more produtive by using the features that work for you. Isn’t this like everything in life? You have to learn Java before you can write Java programs, too.

I would never make the argument that IDEs are better than plain old text editors for everyone, that would be foolish. But to make the counter argument is just as dumb. Developers should use the tools that enable them to write high quality, maintainable code as rapidly as possible, and enable them to enjoy their jobs at the same time. If you like to hack in Emacs, by all means, go ahead. If you want an IDE with all the bells and whistles, do that instead. I’ve written tons of code both ways, and for me, a good IDE saves me a lot of time over hacking things out in the text editor. And even when I was on Emacs, I took advantage of every feature and add-on that I could to save time, because I like to get things done. Making blanket statements about which tools people should use is stupid, but we are talking about a professional columnist here, and they garner the most responses (and page views) for writing inflammatory things. Heck, had he written his article in a balanced and sensible manner, I probably wouldn’t have wasted all this time responding to it.