« Overloading in web programming languages | Main | What "A Normal Form" is short for »

Eclipse considered harmful for learning

There is a long list of reasons why the Eclipse IDE is bad news; I want to mention just one of them right now.

Eclipse is extremely bad for learning to program. Our first-year students are learning Java with the "aid" of Eclipse (moreso with the obstruction of Eclipse). A first problem is that the GUI offers a trillion commands, all minute variations of one another, all of which the students shouldn't need to think about (though I'm fairly sure that professional programmers don't need this, either). But that's just a drag, not the essential problem.

Rather, the squiggly-red-underline thing that Eclipse does is actively destructive to the development of problem-solving skills. Students start writing a simple function, and before they're done, something is underlined in red; then they get worried and start hunting around, trying to figure out what's making the squiggly-red-underline happen. They know that the program won't run as long as that squiggly-red-underline is there, so they feel they have to fight it until it's gone. Instead of thinking about their data structure, or the techniques they'll have to use to write the algorithm, they get derailed on syntax. Learning to program is a matter of thinking about your function, about what it needs to do and what components are available for doing it. Learning to program should not be a guessing-game of syntax.


You don't teach a first-grader to add by using a calculator. Like Feynman and the Abacus, you have to understand what you're doing first, before learning to do it with power tools.

However, for an experienced Java developer, Eclipse is essential. It automates so many tedious tasks. For example, I used to get upset that JEE development required writing awful-smelling accessors and mutators for every property. But now I just have Eclipse do it for me and I almost forget how bad the Java language is.

That's the thing, Eclipse is a big fat high-tech band-aid on a language with a lot of flaws. I understand that C# provides accessors by default, a major step forward.

The Java+Eclipse complex reminds me of a man who has developed really huge ankle muscles to make up for the fact that his ineffective thigh muscles.

For the record, I think the refactoring tools of Eclipse are pretty neat.

The "trillions of commands" I was talking about--that's just for the ordinary tasks. Just to create a new file I have to go through a wizard to select what *kind* of file; just to run the program I need to use a wizard to tell what *kind* of "run." There are two different search commands, one of which does the simple thing called "search" (finding occurrences of a word), and the other has 100 options to needlessly narrow my search in ways that I don't care about. I think Eclipse falls into the familiar open-source trap of providing every possibility and no sensible defaults.

But (ironically) the refactoring features are simple and helpful.

I agree that using Eclipse to teach programming to 1st years sounds like a bad plan.

However, I'm a big fan of the IDE (except for the fact that it is really SLOW!), and also of Java. But remember that Eclipse isn't specifically a Java IDE, and if you want to develop a large application using several languages, having a common IDE which can handle all the languages is really useful. I'm developing a large Java application which calls a bunch of PERL scripts and outputs C code. I can use Eclipse to develop my application and to debug the resulting code.

Also, the search facilities you mentioned above can be really useful (though not for the beginner). When you're dealing with thousands of classes split into many packages, it's really great to be able to specifically scope your search.

Finally, I don't find Eclipse's many features intrusive -- I don't use a lot of them, but the fact that they are there doesn't bother me (except for the overall speed issue). It's generally pretty easy to figure out how to e.g. change the compiler options (much easier than in VS).

Look at BlueJ, www.bluej.org, as a nice, simple IDE for teaching a first Java course. We use it and both staff and students are pretty happy with it.

BlueJ looks interesting--thanks for the note!

Hey! Quick question that's entirely off topic. Do you know how to make your site mobile friendly? My blog looks weird when viewing from my iphone 4. I'm trying to find a theme or plugin that might be able to correct this issue.
If you have any recommendations, please share. Thank

Post a comment