Wednesday, October 27, 2010

On IDEs (A refinement of my 30 lessons)

In my last post on 30 lessons, the most contentious lesson was on IDEs. I would like to clarify a few things.

IDEs in general, are a good thing. For instance, Visual Studio 2010 is by far the best IDE on the planet IF you use C#. Eclipse is arguably the best (and I'm not going to hold myself to this, so feel free to disagree since I don't use Java anymore) Java IDE out there. For languages like C# and Java, you really do need an IDE; namely because they go beyond just editing and introduce language level extensions like re-factoring and code completion.

Now, that I've given praise to IDE land; I'll tear it down.


I deploy and primarily work with Linux stuff. For me, if you want sudo/root access at my company, then you need to be able to use either vim or nano in a highly proficient manner (you also need to be able to use scp). I believe that if you can't do this, then you are not a computing professional worthy of the power of root. Why? there is no IDE for /etc where all configuration lives. Sometimes, something is configured wrong for a new use-case and we have to do something non-trivial in real-time to a live production server. After-all, real men use root.

New Stuff

What IDE existed for Ruby when it came out? or JavaScript? or Haskell? If you find yourself limited by the IDE, then you are going to miss out on new technologies and the ideas they offer. At the end of the day, comfort with "primitive tools" enables you to work with new innovative technologies.


I'll concede every productivity claim made my pro-IDE developers. Here is the thing: what are you being productive at?

Nomadic Lifestyle

A long time ago, my computer crashed and I lost about 2 months of work. I had to reinstall windows and my IDE (Visual Studio 6). I made a lot of modifications to it to suite me. They were lost, and I was lost. I didn't like the feeling that I was dependent on customizing the world to suite me, so I decided then that I would never customize software again. If I needed to tweak anything, then I was doing something wrong. Having lived this way for a while, I can say that Life is pretty good this way. I spend more time on my work than messing around.

Although, recently, I must admit that I've changed the background in my Ubuntu install; that's about it thou.

Cluster Editing

I have a cluster of 32 computers running, and I use pico to code on it. I simply use clusterssh to edit them all at once. What IDE can do this?


Ok, I'm done bashing IDEs.


  1. "I made a lot of modifications to it to suite me."
    It's `soot`, not `sweet`.

    Now that pedantry is out of the way, I have to say I agree with you; I do pretty much all of my development with a terminal + text editor.

    However, when it comes to modifications, it also applies to text editors. Take away the .vimrc of an experienced vim user and look how fast they will get frustrated.

  2. The awesome thing about .vimrc is that it's a plain text file, so you can put it in svn and then check it out on all your machines. Huge bonus!

  3. And in multiple online backup sites - github, gitorious, dropbox, etc. All of em. Redundant backups :).

    Another good critique of IDEs that Paul Graham leveled a long time ago is that when you use a text editor, you learn the programming language. There's no code completion, on-the-fly compilation, etc. When you use an IDE, you don't learn the langauge as well since it does some of the thinking and coding for you. You partly learn the language, and partly learn the IDE.