but the rest is just marginal help in the overall scheme of writing applications. There is no substitute for the brain in understanding how an application works and how it can be made to be better. There's also no substitute for tests in determining whether the stuff works like you think it's supposed to work.

The first problem with IDE's is they are usually language and/or target specific. What good is IntelliJ if my language is T-SQL|PL/SQL, Python|Perl|Ruby, JavaScript|DHTML|DOM (just to list a few)? Ok, so there are IDE's that might work for any one of these. But that means everytime I switch languages, I have to go to an entirely new IDE, and learn the quirks of each.

The second problem is that each of the components of an IDE are not necessarily best of breed. Case in point, text editors. None approaches the flexibility of dedicated text processors. And since the target of Java and many other programming languages is text files, this is more than just a minor annoyance.

Finally, don't confuse convenience mechanisms with true productivity gains. One can become spoiled by the little paper clip man in the background, but it's no guarantee of code correctness. Perhaps it helps to overcome the problems like misspelling and parameter choices, but that is but just a small percentage of the types of things that can go wrong in writing code - and it's usually the easiest to find - with or without the aide of an ide.