From time to time I win the privilege to develop some code. I usually try do that using the same tools and environment that the development team is using. That way I can feel all the troubles that the developers are through and maybe I figure out how to make the work more efficient. Therefore I experienced a few development environments during my career all the way from vi to Eclipse. And that's exactly the damned thing I want to rant about today. No, it is not vi. Eclipse, that's the one to blame. I've used Eclipse several times before. It worked, but it actually never worked perfectly for me. There were some glitches all the time. But few days ago it culminated. To make long story short: I wasted many hours to make Eclipse Galileo work on Ubuntu with Subclipse and Maven2 plugins. I have failed. It just does not work. But the time was not entirely wasted, as now I can make really a bad example out of Eclipse.

Eclipse is multi-platforms system. There are flavors for Windows, Mac and Linux. Yet Eclipse Galileo SR1 somehow did not really work on my Ubuntu Linux. I could click wherever I wanted, but sometimes it just did nothing. Maybe that is a hidden usability feature that makes programmers think and not just blindly click? Or maybe to train them to use keyboard instead of mouse? Anyway, it makes this specific version really useless. Moral: If you claim you have multi-platform system take the time to really test it on all supported platforms.

The way how Eclipse is composed from plugins makes it very flexible. Just pick and choose plugins as you wish. But it also makes the system very complex. There are uncountable*) combinations of eclipse core and plugins, too many ways how they can influence each other and too many things to go wrong. And the result is that something goes wrong most of the time. The good news is that glitch is usually negligible on mainstream platforms, but users of less popular platforms usually suffer. Moral: Don't make your system too flexible. You will not be able to test it and to maintain it. If you pass a reasonable amount of flexibility, user satisfaction will go down instead of up.

Eclipse Galileo (that is the most recent version) for Java Enterprise Edition does not come with support for Subversion and Maven. If you would start a new Java project today, what would you choose to build it? It won't be make and probably not ant. I could understand that Maven support was not part of core distribution 5 years ago. But now it is a must for a development environment. The same applies for Subversion support. It is probably the most popular version control system ever, yet Eclipse does not come with a support for it. Yet, you can install them as plugins ... but ... see above. Moral: If you must have flexible system, make sure that it comes with a reasonable initial configuration. Flexibility is a difficult concept and it is extremely hard to diagnose. Make sure that your users will not experience problems caused by flexibility before they know your system well and can deal with the problems.

Now let's have a look at competition. Get recent NetBeans, download it, install it and - surprisingly - start developing. There's not only support for Subversion and Maven out of the box, there is also a very reasonable set of Java EE wizards and plugins. You can have a skeleton of pretty complex Java EE project completed literally in minutes. Productivity and usability, that should be the primary focus of development environment. It is not engineering to make something work. That's science. Engineering is to make something work better and especially at least a dollar cheaper than the next best competing company. Productivity is essential.

*) Figuratively speaking. They are in fact countable and even finite - as one of my favorite professors commented when I used that phrase during my dissertation defense.