I suspect IDEs are like Bail Bondsmen. It may be a good sign if you don't know what they're for.
I suspect IDEs are like Bail Bondsmen. It may be a good sign if you don't know what they're for.
Do you have a special satchel full of these apt analogies? I I envy your analogical ability.
When you first starting, you don't know much of the API/features of a language, hence IDE features such as "Autocompletion", "Open Declaration", "Find References"... are extremely useful.
One of my frustration with working with Python is that none of the IDEs are that good, and methods/language features are not commented that well.
In the Java world, Eclipse + lots of code commenting = makes it insanely easy to get learn new APIs. Also, IDE's help a lot with debuging, running external tools, some automation...etc.
IDEs usually have higher learning curve (vs. a normal text editor), but make it up with the features that they provide.
It can also be great for exploring new libraries.
If you diligently refactor as you go, by replacing repeated code with functions or macros, you don't need a complicated tool to do it.
However, if you have inherited some code where the preferred reuse method is copy paste, this is much more risky. You need to be sure that you got all of the cases and that you don't inadvertently break anything. This is yet another reason to start a startup instead of getting a "real job" :).
Nevertheless, I think programming without completions sucks. I think most non-IDE editors also try to offer completions, though. It's one reason I can't stand Rails: all that passing around of parameters in Hashes is fundamentally not autocompletable.
This of course begs the question of how applicable TDD is to high-level languages (or even in general... I have my reservations). Time for me to stop pondering and get down and dirty :-).
PS: It definitely can be a good thing, depending on your needs.