Coders come in two flavors, those who use a simple text editor and those who code with a full featured IDE or Integrated Development Environment. An IDE does a lot more than edit text files. Building, packaging, dependency management, refactoring, and code generation are just some of the additional functionality that typically comes with an IDE. Modern IDEs also reach into more phases of software development including requirements, analysis, debugging, and deployment.
There are many IDEs that are available including Visual Studio and NetBeans; however, the IDE that I want to talk about today is Eclipse. Originally IBM's replacement for the atrocity known as Visual Age for Java, Eclipse has grown into a highly pluggable IDE for just about any software development language and platform.
It's that high pluggability that makes Eclipse so special. That and the rich marketplace of freely available, high quality plugins that can be surfaced within Eclipse. Here are some of the plugins that I use on my home machine.
There are lots of plugins for Eclipse and it would be hard to set up just what you needed if you started with a blank Eclipse, just the shell with no plugins. That's OK because there are lots of convenient packagings of plugins for you to start from. Some of the best packages feature eclipse for Java developers, J2EE developers, PHP developers, C++ developers, and modelers. Web developers might want to take a look at Aptana, especially if you do Ruby on Rails.
The good blog is that you can mix and match. You can have multiple versions of Eclipse that you can enhance with additional plugins. I could have both the JDT and the PDT running as two separate instances of Eclipse or I could just install the PHPEclipse plugin into the JDT. Why pick one over the other? Use PDT if you are a full time PHP developer and pick PHPEclipse if you mostly do Java and just need to do a little PHP coding every now and then.
If you find that EMT is overkill for your design needs, then check out the Eclipse plugin for UMLet.
Another favorite plugin of mine is Pydev which is helpful for Python or Django developers.
Not only are there plugins for different development languages, there are also plugins for different frameworks. The Eclipse plugins for JDO, Spring, GWT, and GAE are some of my favorite in this category.
Eclipse plugins are also very helpful for more code related activities than just coding. Subclipse is a full featured plugin to interface with the Subversion control system. M2Eclipse allows Eclipse developers to easily build their projects and manage their project dependencies using Maven2. With Mylyn, you can access and keep track of your list of development tasks right within the Eclipse GUI. There are a lot of Mylyn connectors for various project management tools including Rally, CollabNet TeamForge, FogBugz, and Trac.
If you are a coder who prefers using an IDE, then consider Eclipse for its wealth of plugins that span a wide variety of languages, frameworks, and methodologies.