My Quora answer :
Simon Kinahan‘s answer is good, though I think he’s over-emphasizing the snobbery aspect.
What’s definitely true is that IDEs are often not particularly optimized for the application you want to write. And often they’re optimized for the application you DON’T want to write.
This is particularly true as, like most user-facing application software, IDEs tend to carry a lot of historical cruft; because radically changing interfaces really pisses people off.
So IDEs were born in the age when people wanted to build desktop GUIs, and maintain all the infrastructure and UI conventions for doing that, even when people want to use them to write something else : small command-line tools, web-applications, mobile apps. etc.
Ideally, IDEs would be highly optimised and tuned for the application we do want to write. In practice that usually becomes your IDE needs to be loaded up with a whole lot of new plugins for each new application, but because adding and taking away plugins is kind of clunky you’re left with all the historical plugins you installed for the last application; and anyway all the plugins are second-class citizens compared to the activities that were assumed to be standard when the IDE was originally released.
That translates into … the IDE is overloaded with options and SLOOOOW.
In 15 years, I’ve never owned a computer that was fast enough to run Eclipse without me feeling like I was trying to type through toffee. I’d like to install Android Studio … but it seems like I don’t even have enough anything on my computer to run Android Studio. Not memory, not disk space. Not screen resolution.
The ideal IDE would be nothing but a plain editor. And everything else would be a plugin. So that it could be radically reconfigured for each new application type. And that’s why people love Vim and Emacs, which work to that principle.
Apart from Emacs (which I have a love-hate relationship with.) I think I’ve liked two IDEs in my time : the original VB classic, which was perfect for me, when I wanted to write simple Windows GUI programs. And Processing, which is the perfect IDE to write little computer art programs. (Because that’s all it knows how to do.)
I’ve used a Python IDE which was OK. But I didn’t miss it when I moved back to a simple (tabbed) editor. I’ve used various IDEs to write C++ but they’ve always lacked the most obvious thing I’ve wanted in a C++ environment : useful help in finding and linking the libraries I’m trying to use. [rant]Despite library management being a big part of C / C++ development, most IDEs I’ve seen seem to treat finding the library you want and configuring the compiler to include it, to be some fiddly infrastructure thing that they’re embarrassed to get their hands dirty with. Why the hell don’t C++ IDEs have a big “Fix the fucking paths” button on their toolbar? Better still, why don’t they just fix the fucking paths without me having to do anything?[/rant]
tl;dr : what’s wrong with IDEs?
1) Too slow.
2) Cluttered up with too many irrelevant options. Why can’t they focus on the ones relevant to me now?
I think we’re partly to blame though. I think we kind of hope for one big tool that will do everything. Rather than accept that we need different tools for different applications. I’m hoping that, in the future, we’ll end up with specialized development editors, perhaps delivered in the browser. So you want to write C++ for games on Windows, go to web-ides.com and select the C++ for games on Windows page and get an editor / dev environment that’s specialized just for that.