IDEs are the working environment of choice for most developers today. While there are some redoubts where partisans still cling to emacs or descendants of vi, it's safe to say that the market for programming editors has been largely displaced by IDEs. And for good reason. IDEs bundle an astounding amount of useful technology delivered in a familiar environment that is very capable of automating complex tasks across large code bases.
The most famous IDE today is without a doubt Eclipse, which is a product originally developed for (not by) IBM and released shortly after NetBeans, the IDE that was acquired by Sun Microsystems. Both IDEs implemented (in their own way) a goal first articulated in the late 1980s by David Intersimone (aka "David I"), the well-known developer evangelist for Borland (today, he's at Embarcadero Technologies); namely, that every line of code would become an entry into a database that the environment could then analyze and extend in automated ways useful to the developer.
IDEs have done that and far more. It's hard to believe that nowadays medium-sized projects (>100KLOCs) can be well served in editors alone. The need for navigation tools and automation of refactoring across many modules is so great when code bases reach that size that pure editors are increasingly the wrong tool. Invariably, there are diehards who can manage the trick with editors, but they know it's a question of scale before their solution gives out.
IDEs, however, are not a perfect answer. On small projects, they frequently feel like (and actually are) overkill. To bang out a program of a few thousand lines of code requires creating a project (in Eclipse, you'd first have to create a workspace, then the project), defining complex dependencies, and then finally begin coding. If any setting is misconfigured, the IDE balks or starts working against the developer's intent and suddenly requires careful tending. Editors don't do any of this. They open fast and rip through small tasks with ease. The more scripting-like the language, the more editors have appeal. Editors have their role in the low end, IDEs everywhere else.
However, it may be that IDEs as we've known them over the last 15 years are about to undergo important changes. The biggest driver is the cloud. Increasingly, services like CloudBees are making it possible to have the code and the entire toolchain reside in the cloud. Either a local IDE or a cloud-based environment provide the developer access to the code. This model inexpensively removes a lot of the build infrastructure from IT sites, and creates an expandable development and build platform whose headaches can be managed by others. A more traditional approach to this solution is also being offered by Atlassian as a hosted service of all its key products. (Contegix does something similar.)
On the client side, we are moving into a post-PC era, in which the coding work is increasingly being done on laptops and more recently, tablets. While tablets as coding devices might seem a bit peculiar at first blush, it is definitely the dernier cri. Mike Riley's blog posts have begun exploring this paradigm and its effects on programming.
If you use IDEs in their traditional manner, as I do, you'll find it frustrating if you have to change products because you're coding on a different platform. The folks at Xamarin (formerly the Mono team) have solved this for coders in the .NET languages by providing tools that work equally on Linux, Windows, and mobile devices (which garnered them a Jolt Productivity award this year). But if you're a C or C++ developer, you're forced to adopt Visual Studio on Windows and Eclipse on Linux. I've never liked this duality. So, this week in Dr. Dobb's, we have an article on how to run Eclipse for both Windows and Linux projects. The author goes into detail about how to configure the IDE so that you can seamlessly code for either platform without changing IDEs. Predictably, there are gotchas along both paths, but the author works you through them. In this way, Eclipse becomes a universal C/C++ front end, which greatly simplifies portable development.
As you see, we're starting off the new year with the usual practical, hands-on kind of coverage we especially enjoy delivering. To a great new year, then!