I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

January 26, 2005

It's the IDE, dummy!

In VB.NET vs C#, round two, I realized that choice of IDE has a far bigger impact on productivity than which language you choose. Lately I've started to think the relationship between language and IDE is even more profound: the future of programming languages isn't a language-- it's the IDE, dummy!

Let me illustrate with a question:

Which would you rather use: QuickBasic with the world's best IDE, or (insert your favorite language here) in Notepad?

We now have languages that are the product of thirty years of computer science, but visual IDEs are still in their infancy. There are some tantalizing screenshots of proposed IDE designs in Lutz Roeder's Interactive Source Code presentation (powerpoint), even though it's four years old. There are also some intriguing IDE ideas from Roland Weigelt in his "wouldn't it be cool" series of posts, where he summarizes with

It's kind of frustrating to see computers rendering 3D worlds with 100s of frames/sec, but source code editors advancing only in very small steps.

Amen to that. I suggest any future language development proceed in this order:

  1. Develop a kick ass IDE, incorporating the most popular features from existing IDEs, plus some innovations of your own.
  2. Hard-code your IDE to a specific language or two; make it completely symbiotic and as deeply integrated as possible with those specific languages.
  3. If you have any money left, pay third parties to design and sell IDE extensions. Take the most popular extensions, buy the company, and incorprorate those features in your IDE.
  4. If you're not out of money yet, hold a contest with cash rewards for the best user-designed IDE add-in. Buy rights to the top three and incorporate them.
  5. If you have any extra time or money left over-- and you can't think of any possible way the IDE could be improved any more-- wash it all down with the sweet nectar of syntactic sugar.

I don't think a one-size-fits-all-languages IDE strategy is sustainable. At least not if you want to be the best and most productive tool available. In the future, IDE will be synonymous with language.

Posted by Jeff Atwood    View blog reactions

 

« RegexBuddy and Friends Video Codecs are the next DLL Hell »

 

Comments

QuickBasic? Surely you can do better for "world's worst language"?

How about bf? (I wonder what an IDE for *that* language would look like...)

http://www.muppetlabs.com/~breadbox/bf/

http://esoteric.sange.fi/brainfuck/bf-source/prog/99botles.bf

I, for one, dislike Notepad less than bf :)

Ben Karel on January 27, 2005 12:31 PM

Perhaps when comparing C# and VB.NET, the IDE makes a difference (though the IDE is the same, right?) However, I'm noticably more productive with Ruby and a text edior than I am with VS.NET '03 and C#. Its because of C#. Yeah, I'm that kind of guy.

Secondly, I hate to be a curmudgeon, but the IDE you described is Smalltalk or a Lisp machine :)

Adam Keys on January 27, 2005 02:21 PM

^
True that. ruby-mode.el is the best IDE ever. I'm a strong believer in KISS :)

sam on January 27, 2005 03:10 PM

I'm a language junkie and a recent convert to Emacs, but the most satisfying programming experience of my early years involved VI (ugh! spit!) and a bog-standard Unix Pascal (bleagh! puke!) on (get this) a huge, high-resolution, portrait-mode monitor. Whereas other computers could get up to 1024x768 in 16 bit colour in those days, this beastie had such high resolution that I couldn't even see the pixels. The text was ordinary black on white, but the font was clear and well designed, and because it was a portrait-mode monitor (taller, not wider), I could see an entire "page" on the screen. Not even the obscenity of VI's modes and line-noise could distract me from the sheer ease of use of this setup.

Nowadays I use a dual-monitor setup, Emacs with colour syntax highlighting (sorry... "font lock mode") on a black background, and the highest resolution and fastest processor I can afford... but it's still not a patch on that "primitive" setup.

So my counter-argument: it's not the IDE, it's the hardware, dummy!

Eric TF Bat on January 27, 2005 05:47 PM

I write code in VS.NET. I use VS.NET to write in VB, because apart from the syntax, it's 99.99999% the same language as C#. The reason I use VB is that the IDE copes with it better. I get to see errors as I type, so I can correct them without having to compile. IntelliSense is ready to help me out as soon as I've written code, not later.

I also write code in Vim. There, I write in Ruby, because its design fits my brain and I'm therefore able to wrap my head around complex problems with its help, and get jobs done quickly.

I use different tools for different jobs. I can't honestly say that I'm more productive in either. With VB.NET, the IDE mostly makes up for the deficiencies in the language. With Ruby, the language mostly makes up for the lack of IDE.

Ruby.NET would be nirvana. I've not been able to find enough time to even start work on it myself. I'm praying someone else will. Ruby with code completion, parameter info and a step-through debugger would be pretty close to the perfect development environment.

Rik

Rik Hemsley on January 27, 2005 06:59 PM

Use the .net framework in Ruby (to some extent anyway):

http://rubydotnet.sourceforge.net/

Andy on January 28, 2005 04:45 AM

On the subject of VB vs C# - I'm with Rik, I use VB over C# because of the assistance that the IDE gives me. From the small amount I've seen of VS2005, I see that C# is getting a load of the helper stuff that VB gets now from the IDE.

This, and the fact that C# contracting jobs seem to be overtaking VB (here in the UK, anyway) will probably mean I'll swap to C# or do both.

Does anyone have a summary of the IDE enhancements for C# in VS2005?

Andy on January 28, 2005 10:36 AM

I am a VB.NET guy so naturally I use VS.NET. I code in VB because thats what makes sense to me personally. With the evolution of the .NET CLR I am glad that VB has finally become the full fledge OOP language that we always knew it could/should be. I refuse to swtich to C# just because its the trendy thing to do. I have always been, and will continue to be a VB developer. Code in whatever language comes naturally to you. Keep it real.

Scott Schecter on January 28, 2005 11:03 AM

In the last 8 months, I've gotten so spoiled by coding Java in Eclipse that most other languages seem like a pain because they don't have a powerful IDE that does so much work for you. I like C# as a language, but VS.Net just doesn't come close to the productivity I get from Eclipse (I use both Eclipse and VS.Net for work).

Anyway, I'm in the process of learning some Ruby for some hobbie programming. We'll see how it goes.

dro on March 29, 2005 09:13 PM

If I really was stuck with using QuickBasic with a great IDE or using a language of my choice with notepad, then the first thing that I would do with QuickBasic is to write an IDE for the language of my choice. Then I could use that IDE to write an IDE for the language of my choice in the language of my choice. Boo ya!

al on November 8, 2005 09:50 AM

a powerful languige with emacs > weak verbose languige with ide. in ruby you dont write setters and getters you do this except if you need some value checking

attr_accessor :foo, :bar

it also has less boiler plate and if a languige reads like sudo code you dont nead a big ide and with irb you can have some code completion. and with less boilerplate you dont have more abstract readable code. i was a perl guy but ruby is perl+=1, a cleaned up perl how would you like to code echo.
[code]
# ruby
puts ARGV.join(' ')
[/code]
or this

[code]
class Echo
public static void main(String[] args){
for(i=0;i<=args.length;i++){
System.out.print(i);
if(i==args.length){
System.out.println(" ");
}
}
}
}

George on August 26, 2006 12:27 AM

i ment mor abstract readable code

George on August 26, 2006 02:06 PM

Well, George, I get your point, but most of the overhead is from the "class" and "static void main" overhead. That's something I cover here..

http://www.codinghorror.com/blog/archives/000365.html

.. otherwise you could write it nearly identically like this in C#

Console.WriteLine(String.Join(null, args));

Jeff Atwood on August 26, 2006 02:46 PM

I mean the static typing is just a pain in the ass, it's not just the static void main stuff. but it is this.

<code type = "java">
public class Fugger{
public static void main(String[] args){
ArrayList<Integer> x = new ArrayList<Integer>();
for(int i = 1;i<=5;i++){
x.add(i);
}
for(int i : x){
x.get(i)*x.get(i)
}
for(Iterator i = x.iterator();i.hasNext();){
j = i.next();
if(!j.has_next){
System.out.println(j);
break;
}
System.out.print{j+" ");
}
}
}

George on January 22, 2007 08:46 PM

My experience is that Java + NetBeans is 50% more productive than Java + vim.

So far the most productive combination I know is Python + Eric3.

I suppose that Haskell with a great IDE will be the ultimate winner.

Vitalii on February 17, 2007 07:38 PM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.