Fog Creek Software
Discussion Board




Snobbery and the IDE

Why do graduate students in CS turn their noses up at you if you develop using an IDE?  If they said that an inexperienced student shouldn't use an IDE while learning, I'd probably buy that.  But I'm a grad student too, and I've worked full-time developing software for close to fifteen years.  It'd be my worst nightmare if one day I woke up and my intellisense was gone - or all of IntellJ's insanely productive refactoring utilities.  Why am I a bad programmer because when I type "implements", my IDE magically adds the skeleton for the interface for me?  Would I be better if I sat there typing it in by hand for ten minutes?  Would I be a better programmer if I didn't use a debugger?

anon
Monday, June 23, 2003

does anyone care what graduate students in CS think?
Maybe mention that the average Starbucks employee makes more money than they do, and the starbucks employee doesn't have to use emacs OR an IDE.

...
Monday, June 23, 2003

I would bet it is partly because many CS students (graduate and undergrad) have never used a good IDE/debugger, and have no idea what it can do for you.  I know when I was in school, the best we had was GDB + emacs, and that just doesn't compare to the products available.

Mike McNertney
Monday, June 23, 2003

>> "does anyone care what graduate students in CS think?"

Good point.  From my perspective, they don't seem to be very good.  But either they're nuts or I am - and there's a lot more of them.  Are there any people out there who actually get paid to code who reject IDEs?

anon
Monday, June 23, 2003

i sometimes get paid to do a web thing, or write some perl. for that I just use emacs. I also don't really like intellij, i would rather use emacs for java development - however I only do simple java stuff. for windows or mac programming I use visual studio or project builder.

...
Monday, June 23, 2003

anon,
They still think they are artists! Wait until a deadline approaches then watch the chickens run wild as the wolves dance about them with teeth made of pink slips.

Good tools shouldn't be scoffed at but each person has his/her own idea of a good tool. I'd simply explain the benefits of such tools and show how they can save you time and the company money.

trollbooth
Monday, June 23, 2003

Snobbery? 
Nothing wrong with an IDE provided you also understand enough about the language and what the IDE is doing.  I believe this "snobbery" comes from the days when IDEs also acted as full code generators.  Then it was "who can write the best code."

Legend:
IDEs - Fast to develop, sloppy and inefficient
Hand Coding - Slow to develop, neat, efficient

Then the market changed.  Equipment expense became low, development time high, speed to market critical.  IDEs moved beyond the original realm to be "helpers" as opposed to "doers" and you could still maintain code even if the tool was no longer available.

As for snobbery...that is a personality trait or flaw depending on your perspective.

Mike Gamerland
Monday, June 23, 2003

Reject is too strong a word, but I get paid a lot of money to rewrite code that was developed using IDEs.

Because it is bloated and ineffecient. And I don't mean in an inelegant ivory tower CS way,  I mean run-times in hours instead of seconds.

Because it is umaintainable spaghetti. Impossible to modify or comprehend when in a text editor or in a competing IDE and difficult enough for the original developer with the original IDE.

Now that is mainly the fault of drag-and-drop use-the-wizard IDEs.

A good IDE can be useful, but a good text editor gives 90% of that functionality.

Debuggers are different beast. I know world class developers that despise them and think all who use them incompetent, Linus Torvalds leaps to mind. And others who swear by them and use the to the exclusion of all other methodologies.

Personally I only use a debugger occaisionally and only when doing real-time.

Anonymous Coward
Monday, June 23, 2003

Are we blurring the line between "IDE" and "CASE Tools"?

Philo

Philo
Monday, June 23, 2003

Or blurring the lines between "IDE" and "Wizards"?

The VS.NET IDE does precisely one thing that I like a lot: Intellisense. The project management is poor, the environment is mediocre, the wizards are junk, the drag-n-drool editors are a joke.

But no way I'd give up Intellisense. That's a HUGE productivity boost.

Brad Wilson (dotnetguy.techieswithcats.com)
Monday, June 23, 2003

Philo's right, "IDE" isn't the same as code-generating wizards and other CASE tools.

You can have my Visual Studio .NET 2003 IDE when you pry it from my cold dead hands..

o The best interactive debugger.

o Intellisense.

o Integration with MSDN for when Intellisense just isn't enough....  Highlight API call, hit F1.  Ahh, so nice!  You can take your man pages and stuff them!

I tend not to use code-generation "wizards" beyond very basic "create a new .h/.cpp for my new class" ones, but that's only part of what a good IDE offers.

Mister Fancypants
Monday, June 23, 2003

And I disagree that the project management is "poor". 

It isn't perfect, but compared to the generally accepted "other way" of manually maintaining Makefiles (which is something I've done quite a bit in my past life as a UNIX/C programmer), I'd pick VS solutions/projects any day.

Mister Fancypants
Monday, June 23, 2003

"Debuggers are different beast. I know world class developers that despise them and think all who use them incompetent"

Funny, I would say the people who believe that are the "incompentent" ones.  It is one thing to prefer logging and other methods.  They certainly have their place and in some (many?) cases can be more efficient to work with than a debugger.  But rejecting a tool that could vastly improve your work efficiency just because of some notion that the tool is beneath you is idiocy, plain and simple.  I don't care what famous developer holds this idea, that doesn't make it any more right.

Mike McNertney
Monday, June 23, 2003

The problem with listening to what some "world class developers" believe on this subject is that like most humans, after some period of time they are set in their ways. 

"printf was good enough in the 1970s -- it's damn well good enough now!  Hey you kids, get off my lawn!"

No different than the famous older writers who look down on word processor users, etc.

Mister Fancypants
Monday, June 23, 2003

Actually, I think the best IDE is your head.

I used to work with IDEs and then had to switch to emacs and Makefiles, plus no debugger for me.
Boy, was that tough at first!

Later, however, I've learnt to actually use my head for this, and the problems disappeared. You write the code in your head first, and then dump it in some editor.

Debugging is similar. Going line by line provides a lot of info, but does one really need it? It might be more useful to pause and think about what is going on before typing something on the keyboard.

So while IDE is nice to have sometimes, the majority of of development can be done with primitive tools. And who cares about the 5% of time when IDE is actually useful?

There was a poll of Linux kernel hackers about what they use to write their code, and most of the most productive ones seemed to use some really primitive tools.

Mr Curiousity
Monday, June 23, 2003

There is a significant difference between kernel programming and normal application programming when it comes to tools like debuggers. 

For _some_ development (kernel programming, low-level driver programming, massively multithreaded programming, etc), it still makes sense to use the 'old ways'.  However, I'd say those tasks are more like the "5%" minority.

Mister Fancypants
Monday, June 23, 2003

>> "And who cares about the 5% of time when IDE is actually useful?"

5%?  Any time I type a '.' or a '->' my IDE saves me from having to memorize the minutia of every insignificant method I use.  Exactly how does it force me to think on a *higher plane* when I have to remember if it's 'add(key, obj)' or 'append(obj, afterObj)' or 'insert(obj, index)'?  Answer: it doesn't.

What higher realm of intellectually do I attain when I have to search through stupid man pages instead of hitting F1?  Answer:  None.

>> "Linux kernel hackers "

Linux hackers are precisely the antithesis of high-level thinkers.  They'd like you to believe that they're intellectual giants, but really they are a bunch of sophomoric hobbyists whose intention is to play 'code obfuscation' games, and then laugh at professionals who would rather not play.  Professionals, I think, would much rather get some work done.

anon
Monday, June 23, 2003

anon, what IDE do professionals use for kernel programming?

clamps
Monday, June 23, 2003

When I write a big new .h or class, I nearly always do it in a plain text editor. I then switch to IDE later, like when filling out the code or debugging.

Am I the only one?

And yes, despite this, I agree anti-IDE is snobbery. I prefer plain text window when writing a big chunk code, but that's personal preference, not religion.

S. Tanna
Monday, June 23, 2003

"When I write a big new .h or class, I nearly always do it in a plain text editor. I then switch to IDE later, like when filling out the code or debugging.

Am I the only one?"

Precisely the point! With few more tricks which are not that hard to learn you would not need IDE for a lot of other things you use it for now.

It seems like a lot of people advocating the ultimate virtues of IDEs can't really do the same thing without one. If they tried to work without one, they would gain a new level of understanding.

Mr Curiousity
Monday, June 23, 2003

>> "anon, what IDE do professionals use for kernel programming? "

You don't necessarily have to use an IDE for debugging, dude.  Just the fact that the IDE turns my keywords a different color provides a productivity gain for me.  That alone is worth the price of admission.  Not to mention a built-in interface to version control, sophisticated find/replace functionality, macros, etc., etc.

anon
Monday, June 23, 2003

"Precisely the point! With few more tricks which are not that hard to learn you would not need IDE for a lot of other things you use it for now."


With a few more tricks that aren't hard to learn I could also:

Wash my clothes by hand, in the tradition of the "old ways"

Use only manual tools for house repair

Write using a typewriter

Etc.

Just because you can do something in the "old ways" doesn't mean you should.  I've always found it kind of odd that there is this huge subculture of technology workers (programmers, sysadmins, whatever) that are luddites at heart.

You can spot them when they complain about OSes taking more than a megabyte of memory and not fitting on a single floppy disk.

Mister Fancypants
Monday, June 23, 2003

> Precisely the point! With few more tricks which are not that hard to learn you would not need IDE for a lot of other things you use it for now.

I don't need an IDE.  For years, I just used a text editor.

As I said in my original comment, it personal prefence, not a religion. 

It's about how, I work best and most comfortably (for example: I prefer not to waste screen real estate when entering new code and prefer a full screen text window),

It's not a religion applies to both camps, pro and anti IDE. It's 100% personal prefence.

S. Tanna
Monday, June 23, 2003

Realistically, how often do you encounter this attitude?

I've been in the business for almost 15 years in a variety of environments and I've NEVER had somebody say "IDE's are junk."

I HAVE encountered the "It's from Microsoft, therefore it's junk" attitude several times (usually from professors) but that's a whole different kettle of fish.

Chris Tavares
Monday, June 23, 2003

In my experience (9 years of professional C/C++ development, plus a dash of Java, Python and various other languages thrown in there, under both Win32 and UNIX systems) the two attitudes...

1) IDEs suck, use emacs or vi and makefiles
2) Microsoft sucks (often with the s written as $ to show they really mean it)

...very often go together.

Mister Fancypants
Monday, June 23, 2003

I think what annoys people with IDEs is the I.

Integrated.

It means you have to take the bad with the good.

Sure, intellisense is great. But there is some crap you have to put up with to get it. And the thing is, the crap varies from person to person. Each developer will have their own pet hates about Visual Studio.

For some people these are enough to make them abandon the IDE altogether, for others, they put up with them.

I think when you hear someone say "IDE's suck" they fall into the first camp. They're just not expressing themselves very well.

And the horse you rode in on
Monday, June 23, 2003

>> "Integrated...  It means you have to take the bad with the good."

Yeah, but there's a way around that.  I have IntellJ, Sun One, VS6, VS.NET, Rational Rose, MS Assembler, the Python IDE thingy, etc., etc.  I use each for what I like.  No more complicated than opening a few instances of a text editor.

anon
Monday, June 23, 2003

That's kinda expensive (in terms of $$$, machine resources, and contextual overhead of switching between all the environments).

Personally, I find switching to a more appropriate tool is often not worth the conceptual overhead of having to remember all the different idiosyncrises of the tool.

Which is probably where the anti-IDE people are coming from I guess ... vi may be primitive, but when you know it inside and out, you get into a zone. I hope never to become that comfortable with vi. ;)

And the horse you rode in on
Monday, June 23, 2003

anon -

"You don't necessarily have to use an IDE for debugging, dude.  Just the fact that the IDE turns my keywords a different color provides a productivity gain for me.  That alone is worth the price of admission.  Not to mention a built-in interface to version control, sophisticated find/replace functionality, macros, etc., etc."

When I read that, my first thought was, "My text editor (Emacs) does all that". I know that Vim and other text editors support some if not all this as well. Perhaps much of the disrespect for IDE's comes from people who do not see them as being much more powerful than their editors.

Devil's Advocate
Tuesday, June 24, 2003

Perhaps programmers sometimes do not realize they are users.  Therefore decent UI is important.

Even more, conceiving a program is different from entering it into a machine, which are two different tasks even if most people intertwine them.  UI rulez again.

sammy
Tuesday, June 24, 2003

Emacs is an IDE, or at least easily can be.

mb
Tuesday, June 24, 2003

IDEs should not be taught in college (maybe at a community college or 1 specific course).  If you do not learn to use a text editor and command-line compiler (and a build tool such as make or Ant), then you will be a poor developer, period.  You will not know what is going on under the hood.

Refer to Joel's article on the "Law of Leaky Abstractions".  IDEs are an abstraction.  When that abstraction breaks down, a good developer will be able to cope.  Someone who learned the IDE instead of the fundamentals will just have to tell their boss, "There's a bug in Visual Studio that's not letting me get my work done.  Microsoft will issue a patch in a few weeks."

IDEs can be good tools.  There are lots of IDEs out there that are absolute crap (like CodeWarrior).  Sometimes it's not worth fighting the IDE.  A good IDE will let you do what you want and just help you get there.  Delphi and Visual Studio.NET are good IDEs. 

I just wish I could get intellisense with Vim in Visual Studio.NET.

Richard Ponton
Tuesday, June 24, 2003

I think IDEs are bad when the generate code or build files that are difficult to impossible to edit manually.  That's the real advantage to the emacs-or-vi-plus-make development environment.  You're not limited to just the things the IDE developer considered ahead of time.

On my Mac, for example, the WebObjects build files went from make-based to using an Apple tool called pbxbuild.  It's really hard now to customize the build process to work just the way we want it to.  And other IDEs have similar problems like that.

Jim Rankin
Tuesday, June 24, 2003

The thing I find very interesting in this thread is how everyone seems to focus on the code writing and compiling sections of an IDE, as if that is all it is.

Personally, I write my code in a pretty bare bones editor, and my compiling is done using internal tools.

But the reason I love my IDE is because of debugging. Stepping through your program, having cross reference information at your fingertips, being able to make procedure calls from the debugger, being able to inspect memory, registers, what have you -- all of these are things which are very difficult to do with printf. :)

Really, I could care less (for the most part) about the generation part of an IDE. I easily spend more than 50% of my time debugging, to find non-obvious bugs in older code which I am maintaining.

But maybe that's just me.

Steven C.
Tuesday, June 24, 2003

You can do all the things you describe with a non-integrated debugger too.

And the horse you rode in on
Tuesday, June 24, 2003

I slightly resent Richard Ponton's CodeWarrior comment (the IDE is crap, IIRC), as I'm one of the developers working on the IDE.  We try to do a lot of things, and we come from a different background than most Win32 developers, but I think the CW IDE works quite well, and I use it for all of my development.  I'd be interested in hearing (offline) any complaints about the CW IDE so I could feed them back into our planning process.

Ben Combee
Wednesday, June 25, 2003

Hey you ide haters. Can you answer me this few questions:

1. How many keys you need to press to do Save file, Compile and Run from editor? (In Delphi one key: F9)

2. How do you go about debugging? Printf's? How much time do you need to insert them in code and how much time do you need to remove them? I guess you can use conditional compilation but then it is much more typing.
Can you get call stack and inspect all variables in scope with this kind of debugging?

3. Why would I buy and use external debugger? I have to buy compiler anyway and there will be some ide and debugger. Other vendors debugger, as I see it,  is extra cost to get one and extra time spent for learning other vendors user interface.

4. Intelligent IDE almost eliminates sintax errors. Show me emacs that can finish long variable name like Delphi IDE can.

If you tried some crappy IDE, maybe you should get yourself Borland or Microsoft trial just to get idea what can be done with nice IDE.

drazen
Wednesday, June 25, 2003

I can understand that Torvalds's anti-debugger desires -- if I were working on software where you couldn't always have nice modularity, I'd gently discourage debuggers too.  I'd like to limit the complexity of software to what people can keep in mind.

But debuggers are vital when you need to go through others' code fast.  Anti-debugger people always tend to assume you're dealing with code you've trained since it was born.

There's actually a lot of questions here.  IDE vs. best-of-breed...  with a certain Borland IDE, you definitely need to bolt on a 3rd party debugger because theirs is too slow.

sammy
Wednesday, June 25, 2003

Slow debugger?
What is slow debugger?

drazen
Wednesday, June 25, 2003

Hi Drazen, I don't believe in macho programming either, but here's how I'd answer your questions.

1.  In Emacs I can map F9 to save-compile-run too.  In fact, I usually remap a whole bank of keys, like f7-f11, to something like goto-line so I can just bash the general area.

2.  Not having an ide doesn't mean you can't have a debugger.  I don't usually care if it's Integrated.  But yeah, otherwise printf is used.  Many languages allow you to redefine functions on the fly.

3.  Debuggers are cheap, and there is a pretty large spread in quality.  Sometimes your toolset just comes with a crappy part, especially since ide vendors just go for a big feature list.

4.  I dunno.  I just cut & paste.  Apparently Emacs gives you code completion too.
http://jdee.sunsite.dk/quicktour.html (bottom of page)

sammy
Wednesday, June 25, 2003

It's a Cargo Cult.
They all now about the icons from the past that code(d) with no debugger, no IDE, just Emacs or vi and a command line compiler. Frankly, most of them did because there was no alternative until fairly recently, especialy on Unix. Now it is hard to teach an old dog new tricks, so later in their carreer these oldtimers aren't going to change, especialy if they got so successfull in their old habits in the first place.
The newbies now think that hey, if I start behaving like so and so, maybe I'll be a successfull (local) legend as well. So they grow a beard (or ponytail), ditch the tools and go bare. Doesn't change their productivity, nor the quality of their code, well, not for the better anyway. But hey, at least they got that 'l33t' style.

Just me (Sir to you)
Wednesday, June 25, 2003

Just me -

On the contrary. I have a text editor that is better than the one that ships with the IDE I use at work. Do the benefits of the IDE outweigh the costs of remembering 2 (or more) ways of doing every task and switching mental contexts if I move from coding in C++ to coding in, say Perl? Not for me. Moreover, the documentation for most parts of the IDE is horrible. It has a debugger, which I use from time to time, but I still don't know how to use it the way I want to. All I really use are the compiler and the form designer.

You call people who don't use IDE's cargo cultists, but it's just as easy to call IDE users alchemists who believe it is the secret ingredient that turns their lead into gold.

There are 3 things missing from this debate.
1) Has it ever been shown that IDE's improve the productivity of average programmers?
2) Has it ever been shown that IDE's improve the productivity of good programmers?
3) Will IDE's improve /my/ productivity?

From what I have seen of IDE's so far, #3 gets a No in my book.

Devil's Advocate
Wednesday, June 25, 2003

OK, now we are at 'IDE is crap'. Bad docs. Bad keys. Bad debugger.
What is that evil bad IDE? Is this general opinion on any IDE or do you have some specific bad, ugly IDE?

drazen
Wednesday, June 25, 2003

It always amazes me how much time otherwise smart developers waste debating issues that amount to a personal preference. I guess it's fun to hear the nth variation on the same old arguments though...

Chris Winters
Wednesday, June 25, 2003

Borland JBuilder - tedious debugger.  Try getting one from last year, since just to spite me, they've probably fixed it by now.

I've never thought you could have a bad debugger either, but it's a crazy world...

Now, there are such things as WONDERFUL debuggers.  Here's one for example that lets you step backwards.  Never used it, but I've often wanted to go backwards.
http://www.lambdacs.com/debugger/Article.html

sammy
Wednesday, June 25, 2003

... writes:
".. I also don't really like intellij, i would rather use emacs for java development - however I only do simple java stuff. .."

When you get up to the complicated java stuff, IntelliJ just cannot be beaten. For our current project, I had to pull together ~70-100KLOC of code that I didn't own + libraries, docs, libdocs & libsource and get it compiling and working right in a decent structure.

The way you set up projects in IntelliJ just plain rules, from that moment I was hooked, as setting up java projects in everything else is just a complete PITA.

Then it starts getting even better - theres work I couldn't have even attempted without its refactoring tools and usage tracking.

Richard
Wednesday, June 25, 2003

" .. Realistically, how often do you encounter this attitude?

I've been in the business for almost 15 years in a variety of environments and I've NEVER had somebody say "IDE's are junk." .."

It happened a lot a few years ago in Java, when there was a lot of IDEs and the standard was quite low. The whole let-the-tool-make-the-code thing.

I walked away from IDEs then and went back to text editor & tools, so that I could get back in control of my work.

Since then the quality of IDEs in Java has really taken off. Probably around the time that they let Java people write them (domain experts, coders, QA & UI engineers all under one roof).

Richard
Wednesday, June 25, 2003

A paragon of what an effective programming tool should be is something that achieves the best of both IDE and bare development i.e. something that is powerful and productive yet minimal and non-intrusive i.e. something that doesn't distract your attention away from the details of your project. What I mean by this are two things:

1. tools getting in the way of the craft
2. hands free tools compromising the quality of the craft

Yes, some parts of our work as programmers are tedious but that does not mean we should deny these parts of our work serious attention. Every line of code in our work counts. If you don't agree with that or care enough to concur, you should not be a programmer.

I love Textpad. It is the best balance between power and simplicity I have found to date. It is all I use for programming everything. I code in C, C++, Java, Assembly and write all my HTML with it. Don't leave home without it.

miss pacman
Thursday, March 04, 2004

*  Recent Topics

*  Fog Creek Home