I've used both and I find I am about 4 times a productive using a good IDE (like VB6 or Netbeans) to write code vs. a freeform text editor.

IDE edit panels do the little things for you, like pop up a list of methods when you type a period, let you easily traverse a code listing by method, and automatically bring up help documents based on the current selected word in the edit panel.

Notice I am not talking about GUI-specific functionality. When you bring GUIs into the picture, IDEs can do code generation and drag-and-drop of the GUI, which is also a productivity boost.

The thing I find least useful in an IDE is the code generation. In any reasonably-designed framework (like Java) you should be able to write the generated code yourself if needed. If you can write the code the generator writes and understand it, I don't have any problem with it. The drawback comes with something like MFC or ATL where there are reams of generated code you almost certainly don't understand. Of course, you will probably never succeed in writing COM components in C++ without the generator. . .

What do the rest of you all think about this (quasi religious) topic?

Matthew Cromer
Thursday, November 29, 2001

For me, it depends on the IDE. I love the IDEs for functional languages and Python, because they really capture something really important: the read-eval-print loop. Typing in a line, and getting immediate feedback. That I believe is the ultimate in coding, where your compile/test cycles are very tiny.

But usually I like to take my OS as the IDE. Building it out of many good tools. For small projects, I use small tools. Then I have to build up.

Funny, I was just listening a little to that Eclipse webcast. A main goal is to have little tools work well with it, no matter if they're graphical or command-line. Maybe Eclipse will be very influential for IDEs.

forgotten gentleman
Thursday, November 29, 2001

Sorry, but you do realize what a holy war you're starting here, don't you? :)

Anyway, IDE's do not make you more productive! Freeform editors do not make you more productive!

Skill and knowledge make you more productive, and that's all!

Me, I know vim quite well. I am used to it, and I instinctively type the commands I want. /I/ am more productive with Vim then, since it's what I know. OTOH, if I knew all the features that say, Visual Studio or whatever, had, and didn't know Vim so well, then I'd be more productive with those!

Now editor XYZ may have a useful feature, but most established programmer's editors have similar features. Someone mentioned traversing code by functions: FTE does it. Vim does it. Emacs does it. The major features are provided by most editors, if you know how to use them.

The editor you can use more productively is the better one. That's not the same for everyone.

Mike Swieton
Thursday, November 29, 2001

It is largely a choice of Horses for Courses.
I tend to use IDEs for GUI development (for their visual representation), API centirc work (for their available documentation) and in teams were everyone is using the same tool (for their enforcement of common standards/design). However anything outside this list I prefer to use text editors backed up by perl/scripts for reporting and generation.
The biggest advantage and the biggest problem with IDEs is that they impose design choices and methodologies on their users. In most cases this is a good thing as it imposes a good common standard (tools without good standards tend to die) across a development team. It provides a base structure that can be used to quickly develop a solution without having to worry about some of the architectural issues.
The problem occurs when you want to move outside the supplied model. Either you want to use wrapper classes instead of the default classes, utilise a 3rdparty API for certain work, integrate a custom garbage collection mechanism or use code developed with a differant IDE etc. Then you can often end up fighting the IDE, spending more time actually defeating it than developing. This does not happen that often but it happens enough to annoy me.
Note that generation of code is not restricted to IDEs. You can write your own generators and code parsers which are more customized . This takes some upfront effort but can pay dividends as you can easily generate code which matches your problem domain rather than the generic domain that IDEs targets. I use a combination of perl and sed for their string manipulation but I have good results from a variety of differant languages including the (mis)use of asp/jsp.
The final issue with IDEs is the cost. Typically weighing at several thousand dollars a seat they are not cheap, especially for small start-ups and one man bands. This cost is often avoided by software piracy but I do not like doing that.

Julian Bullock
Thursday, November 29, 2001

> Anyway, IDE's do not make you more
> productive! Freeform editors do not
> make you more productive!
>
> Skill and knowledge make you more
> productive, and that's all!

Strongly disagree. Skill and knowledge are the capital, the assets to any (good) programmer. But a good IDE certainly can make a programmer more productive, just as some other tricks, like macros, batch files or bash scripts.

An IDE doesn't make a bad programmer a good one; but it can make a good programmer more productive, thus making him(her) looks better.

Yo
Friday, November 30, 2001

An IDE is just a collection of tools. The productivity resulting from the use of any set of tools relies directly on the quality of those tools - not the fact that they are bundled into a single framework.

The MS Visual Studio, for example, contains: an editor, a compiler/linker, a make file editor (dsp/dsw), a gui designer, and a help system (among other tools). The quality of the Studio is really just a function of the parts, plus the integration of their functionality.

In my experience, there is a place for a good IDE - but more important are a good set of tools. I personally prefer to select my components piece by piece, but many people will be better not to waste their time finding their tools.

I do find, though, that developers using a single IDE (or one language for that matter) tend to be limited in general skills. Developers who know many tools have a broader set of skills - though they risk knowing little detail about any of them.

My preference? A good editor, a good compiler, good scripts, and good documentation. I've found no specific productivity limitation using MSVC or GNU tools in this area - though I must say I feel better when using or contributing to Free projects ;-)