Why The IDE Has Failed Us
There is so much talk lately about using VI instead of Visual Studio, or VI in general instead of whatever IDE you normally use.
If you never had the fortune of being introduced to VI, it is basically a bare bones text editor designed to be used without a mouse and focused more on manipulating text than creating it. VI is on just about every platform you can think of and will be for the foreseeable future.
It is not my point today to bash VI. VI is a great text editing tool that can make you a wiz at slinging lines and words around your files. VI is the evolution of text editing because when you are using VI you are actually programming your text.
The problem with IDEs
Basically there are two problems with IDEs. One I think is a valid complaint, the other appeals to engineers wanton desire to be simple, pure and take things apart.
The first problem with modern IDEs is the bloat. The IDEs are big beasts that take up lots of memory, are fairly slow to load, and tend to have so many bells and whistles that they feel messy and clunky.
As I write this part of me thinks “what’s the big deal?” I’ve got a pretty fast machine, it can run VS2010 pretty well. But, there is something that doesn’t sit right for me and I am sure for other developers. The IDE should feel clean, but it doesn’t.
I’m not sure if I can completely identify why IDEs have suddenly gone sour in our mouths. Perhaps part of the bloat problem is that the IDE has kind of become a swiss army knife instead of a focused tool.
Strangely enough, I think part of the problem might be tools like Resharper, that are helping us a little too much. The tool is so good that sometimes you wonder what life would be like without all those little hints and the IDE doing so many things for you. Perhaps sometimes you feel like you are “cheating.”
Then there are the imagined problems with IDEs. The ones that don’t really have any justification, but some of the “cool kids” like to talk about on their blogs.
If I can summarize what I gleaned from the argument here, I would say it basically is… IDEs that give me auto-complete, intellisense, and visual designers rot my brain. To really program I should be able to write code without the help of an IDE.
I couldn’t agree more with that statement.
As a matter of fact, for that reason I don’t use electric toothbrushes, because it is not really brushing my teeth.
I also abhor graphing calculators; it’s not really calculus unless you are cranking it out by hand.
Email? Psha, everyone knows the pure way to communicate is by registered mail typed from a typewriter.
Oh, and don’t get me started on those GPS things. You are not really navigating if you aren’t using a map and a compass, seriously.
Sorry for all the sarcasm, but I hope you get my point.
What is the solution then?
Is it to abandon the IDE and jump over to VI and notepad to edit our files so we don’t “rot our brain?”
I know that is the popular stance among the best and brightest right now, but sometimes the best and brightest are wrong. Sometimes they are so bestest and so brightest that they can navigate with a map and a compass better than you or I can with a GPS.
I think the solution is to bring more VI-ness to IDEs. The good thing about jumping to VI is that you can sling text around like nobody’s business. The bad thing about jumping to VI is that you are forgoing some of the most useful productivity tools in dealing with APIs and libraries.
Why can’t we take the good VI-ness and put it into Visual Studio? Looks like someone already has (ViEmu.)
The other part of the problem is the bloat. Honestly, I think Eclipse deals with this fairly well, by making everything modular. Unfortunately, some of the modules look plain ugly and don’t integrate well into Eclipse, but with Visual Studio you have to pull out a swiss army knife with 50 gadgets on it when you are just trying to eat some beans with a fork.
The answer is modularization and perhaps some competition for Visual Studio and some of the other IDEs that are a bit bloaty. Perhaps we need an IDE that is built up from a VI or Emacs heritage?
I know for sure the solution is not to throw the baby out with the bathwater. IDEs have made some truly amazing advancements that help bring the level of abstraction of software development to a much higher level.
Features like intellisense have made it easier then ever to hit the ground running with a new API like never before.
Automatic refactoring tools built into IDEs, and with add-ons like Resharper, have made refactoring code so much easier and so much more accessible.
Ctrl+Click goto definition and backwards / forwards navigation to jump to parts of the code greatly increase productivity.
I don’t need to go into all of the features of modern IDEs to make the point that there is value there and a large amount of it.
So before you abandon the IDE, consider strongly why exactly the IDE has failed us, and consider whether jumping to VI is really the best solution to the problem. If you don’t know what problem you are trying to solve by jumping to VI, you might just be following the “cool kids” and drinking their “cool aid.”