I've written positively about Microsoft's forthcoming Visual Studio 2010, both here and more recently in a review on The Register. I was interested to see a kind-of follow up from Jeff Vroom, making the case for doing without an IDE at all, at least some of the time:
Emacs, Vim, and other editors have basic syntax highlighting and code navigation for an even broader set of formats despite the fact that they lag behind IDEs in features. Though IDEs offer impressive plug-in capabilities, traditional script and config files seem easier to learn and use and ultimately more flexible.
Command line workflows offer a more flexible, less integrated and less guided approach to development. You learn how to use them one tool at a time. Development and adoption of new tools is usually easier as you are not tightly coupling tools into one complex user interface. Admins, analysts, and designers use command line tools, making it easier for them to work with developers when the IDE is not front and center.
I don't see a lot of designers using command-line tools; but even so I agree that there is a case for a programmer's editor with command-line compilation, rather than a huge IDE. The two things I like most about the bare metal approach are speed and transparency. Speed, because a little editor like Notepad++ starts in a blink, handles large files with ease, and does not get in your way. It is odd that performance still matters so much in an era of multi-processor machines with each core running at more then 2 GHz; but it does. Sometimes I am caught out when a monster like Adobe Dreamweaver grabs a file association for something like HTML or PHP. I double-click a document, and wait impatiently while it loads all sorts of stuff that I do not need, when I only want to make a small text edit to the code.
Transparency is an even bigger issue. If you work with simple editors and build from the command line, you are forced to be aware of what files are in your project, what tools you are using for the build, and what arguments you are passing to them. If something goes wrong, you know where to look. By contrast, IDEs hide things from you, supposedly for ease of use. In the worst case, something like a Visual Studio solution can get corrupted and leave you not knowing how to fix it, other than to create a new one and add back the files as best you can.
A similar problem comes with wizards that generate code. It is lovely to have the IDE generate all that boring data-binding code for your forms, until there is some weird bug, the results are not as expected, and you end up tracing the SQL and puzzling over why it is wrong.
Valid points; but I am still going to come down mostly on the side of the IDE. It is simple: there are so many genuinely useful tools in something like Visual Studio that productivity is better. Things I don't want to do without include IntelliSense and code completion, debugging tools with things like mouse-hover variable values and watch windows, visual design tools that generate a ton of code I don't have to write, various refactoring utilities, and build tools that save having to think about make or Ant. Visual Studio takes ages to load, but once it is up and running you can always press Shift-Alt-Enter and pretend it is a text editor.
I am still wary of wizards though; and I value knowing how to do without the IDE, even if most of the time I end up using it. As one of the comments to Vroom's piece notes, if it gets to the point where your programming skills are really IDE skills, you should worry about being so deeply tied to a single platform and way of working.
Listed below are links to blogs that reference this entry: To IDE or not to IDE: is a programmer's editor the best way to code?.
TrackBack URL for this entry: http://www.itjoblog.co.uk/blogadmin/mt-tb.cgi/137
Nice article.
What fits better to your needs depends on what you are working at. I worked at a big project together with 30+ developers. Compiling at the command line would take way too long. Without the incremental compiler of Eclipse, the project would not have been possible to extend any further (which wouldn't have harmed the quality at all, but that's another story).
After working with eclipse a long time, I started some small projects with vi + javac. I had big problems remembering the API and stuff, but I got used to it again after some time.
Today I try to do some stuff with vi & Notepad++ every now and then, so I stay in touch with the basics.
True, but so do IDEs if your computer doesn't suck. Besides, even if it does take a few seconds to start up, it gives you time to get ready to work in the morning (get coffee, talk to coworkers...) and how many times do you start it up really? If it is more than once or twice a day (accounting for updates that require restarts) you are probably doing something wrong.
I personally like to build the program in a text editor. It is quicker, less distracting, etc. I do like to move the project to an IDE once I reach the stage where I need to start debugging things.
I'm a huge fan of Vim, and I still use it every day for quick editing tasks. I recently had to admit that Eclipse has the upper hand in three areas: letting me know I have errors as I edit, really (really) understanding my code and all my libraries when offering code-completion ideas, and helping me step through my code in a debugger.
If I could get Vim to do the first two things for me, I could live with lower-level debugging.
Text editors are OK if you are writing command line programs. But when most of your work is rapid GUI development how do you expect to use a simple text editor.
Take for example writing an iPhone or an Android application. Do you expect developers to write in a simple text file using a text editor. Then using the command line or a script to run the program. Then for debugging fire up gdb. Adding breakpoints by remembering function names or lines? Nah, not possible.
So it really depends on the type of applications you are developing. Since my last six years in programming, most of the time we have used some IDE for development. The only occasion we used emacs/vi was for some development on the Linux platform and that too because we accessed a single machine through telnet. Maybe we would have been much more productive using an IDE even in that case because a guy was required to create a script to generate Makefiles for the project which is the work of an IDE.