Sunday, September 7, 2008

Farewell IntelliJ...

Warning: Geek Post.

For my day-to-day software development needs, I've been using Eclipse. It's a really competent Java IDE but falls short on the side of HTML, JavaScript, and CSS development.

Some folks have at work have been using IntelliJ IDEA, and many other developers just seem to gush over it. So, I thought I would try it.

I gave it a try for one month, and I have reached my verdict: I cannot believe that IntelliJ is still in business -- there is just no way I can justify spending 200 bucks on it.

My major complaints:

  • Key combinations and short cuts are bizarre. Control-Y to delete a line? (almost every other editor uses Ctrl-E or Ctrl-D). This list goes on and on and on....
  • Three forms of Ctrl-Space completion? Give me a freaking break! Ctrl-Space should match anything in my entire project and prioritize the ones that I use most often at the top of the list of matches (or the ones that match imported entries from my class).
  • No Automated Unit Test Creation? I was surprised that I needed a plug-in to do this. (and even then, the plug-in sucked)
  • Outdated GUI - The GUI is just plane outdated. It looks so 2002. Note to IntelliJ: Swing interfaces can look really nice!
  • No Drag and Drop - Every other IDE I have used allows me to drag files from my desktop into my project. Except IntelliJ.
  • Slow - IntelliJ is just plain slow. Eclipse is much snappier. Even NetBeans (which I used to classify as Bloatware) is snapier. I hate having to wait 30 seconds everytime I open a project so that it can re-index everything. This is just plain silly.
  • No Support for Multiple Open Projects - This is just lame. I can only have one project open in a pane at a time. If I want multiple projects, I need to spawn a new window.

I am glad I tried IntelliJ. I am hoping that next time I go to a conference, and I see poeople gushing so much about IntelliJ, they can show me what they like about it.

Note: I know that IntelliJ does have excellent Spring/Hibernate/Groovy/Rails support. However, I really think it's important to have an IDE that gets the basics done first. All of my rants above are minor things. But when so many minor things just suck, I can't get past it.

On a very pleasant note, I am currently trying the latest Beta of Netbeans (version 6.5). It is fast, snappy, and just plain works. In about 10 minutes, I was able to get my project up and running. Within a day, I am pretty productive in its environment. Nice job, Sun!

I hope IntelliJ will seriously look at their competition and see where they are falling short.

4 comments:

MarkRebuck said...

I would love to give NetBeans another try. The last time I tried to install it, NetBeans was a total non-starter.

Every IDE I've tried has managed to annoy me one way or another :-\.

bohnman said...

Ok, I'm a guy who loves IntelliJ and doesn't want to move back to Eclipse. You mentioned getting the basics right. Eclipse can't even get the basics of writing a webapp correct, which is what the majority of the Java developers out there do.

I'm keeping my eye on Netbeans, but it's still crappy if you're doing anything else beyond a standard project. For example, Netbeans doesn't support a project that has multiple webapps in it that's not a JEE project, lame. You can start tomcat in the IDE, great. However, you can't tell it to perform an ant build perform the server starts up, lame. So much for a one click build. Well, maybe you can if you create a standard web project, but if you do build a standard web project, you have to use a netbeans generated ant build file: lame, lame, lame.

Now to address your IntelliJ issues:

- Key combinations and shortcuts are bizarre: agree here, but I'm used to it now. Plus, IntelliJ has Eclipse key bindings if you need to use it

- Three forms of control space completion: I don't necessarily see this as bad. You have different options to search in a single file vs searching the whole project, why not for completion? Plus, IntelliJ's code completion is better than Eclipse's. For example, it takes variable types into consideration.

- No Automated Unit Test Creation: Fixed in version 8

- Outdated Gui: I can't say how it looks on windows, but it doesn't really look outdated on my Mac. Besides, does eclipse really look like a 2008 IDE either? The one thing that IntelliJ does fall behind in is the font rendering.

- No Drag and Drop. Agreed that this annoying.

- A lot of the startup time performance has been fixed in version 8. Plus, IntelliJ seems to index things ahead of time where Eclipse seems to wait until you do the first search. We're all familiar when you do a control-shift-t and it says 500 files to index.

- No Support for Multiple Open Projects in the same pane: Yeah, this is annoying. Agreed there.

If I find some time I'll write a blog entry I why I like IntelliJ

Unknown said...

So I was searching to find an issue to a problem I am having in IntelliJ and came across your post Bill.

So far I have experience two extremely annoying problems with IntelliJ 8.

1) For some reason when moving to IntelliJ 8 my debugger became almost unusable. I turned off auto-generating debugging variable and that helped but it wasn't perfect.

2) I constantly run into a problem where IntelliJ takes almost 30 seconds to "Delete outdated files" of a project. I found out clearing the caches on the file system sometimes fixes this but it does not appear to be a cure all.

Other than that I agree with some of your points but I don't consider them deal breakers.

Even recently I returned to eclipse and immediately had to stop using it. Without providing a lot of memory manually to the JVM Eclipse is much much slower than IntelliJ, which dynamically allocates memory. Not to mention in a year of using IntelliJ I have not had 1 hard crash of the application. I'd say I would get at least 2-3 hard crashes in Eclipse per day. ( I think this was mainly due to code highlighting in large xml and js files. )

Also I thought you can change the keymapping to an eclipse version? One mind-boggling keymapping for me was cntrl+alt+l I think is code formatting which doubles as a screen locking mechanism in ubuntu. In an interview I once accidentally locked their ubuntu install and it took 10 minutes to find the person who originally set up the install of the OS. Lame.

I agree with rbohn, give it another shot! Then again I get a free license courtesy of my company.

Jaime Hablutzel said...

Intellij have the bestttttt javascript code completion I have ever seen in my entire life, about keystrokes thing you mentioned... you can change them, personally I use emacs keystrokes (because of one year only using emacs)...