Why do IDEs get criticized so much?

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.

Ward Cunningham Interview

The job was really to take C++, which was a fairly static language, and show people how to write dynamic programs in a static language. That’s what most of the patterns in that book were about. And in the process, patterns extended the life of C++ by a decade, which is not what I thought would happen. What I thought would happen is people, when they learned these patterns, would look at them and say, “Wow, these patterns are hard in C++ and they’re easy in Smalltalk. So if I want to think in terms of these patterns, I might as well use a language where they’re easily expressed.” And extend the life of Smalltalk by a decade. But the opposite happened.

I always suspected that the patterns everyone got so excited about were basically a way of overcoming static typing. Ward confirms it 🙂