views:

958

answers:

19

I am working on a solution that aims at solving problems that newbie programmers experience when they are "modifying code" while bug fixing / doing change requests, on code in production. Eclipse, as we all know is a great IDE. Features such as Code Completion, Open Declaration, Type Hierarchy, Package Explorer, Navigator, Finding References etc aids people in fixing things quicker compared to say using something like Textpad.

If you are a newbie java programmer and you are using Eclipse IDE, what areas of the Eclipse IDE do you think were less helpful/ less intuitive? If you are a seasoned programmer, what are the common issues that newbies look up to you to solve for them?

Please ignore issues related to : Domain Expertise (Business Knowledge), Infra( where to test your change etc), performance related (eclipse search being slow,etc), Skill level in a particular language (think of the developer as a noob) ... and think one language - Java

I did a local survey in my small team and here are some:

  • Newbies using Eclipse to handle code that is written to interfaces where the implementation is supplied at runtime. Doing a 'Open Declaration' will always show you an interface. This could be confusing at times.
  • Eclipse is not intuitive while developing EJBs. Sure, you know all you have to do to create a new bean is to right click and 'Create Bean', however, once created it shows no contextual help to what the next step should be. For instance, generating stubs.
  • When Data Source Mapping with entity beans, changing something screws up the entire flow of things and eclpise never complains / hints.
  • Developing applications that make use of Struts, eclipse doesn't tell you that when you change struts-config.xml, particular web flow would get affected.

At this point, to me, as someone who is interested in collecting opinions for my research, it appears as if Eclipse could use more 'contextual runtime hints'.

I am sure the community would have a lot more to add... Please add more of your negative experiences (just from the code change perspective).

EDIT: I guess, my question was too lengthy and confusing. I am gonna rephrase it a bit and keep it short:

While "making a code change" (not analogous to code formatting, infra related activities, CVS etc... say something like refactoring), what feature(s) of eclipse IDE did you not like / hate the most? Here are the examples:

  • When modifying code that has been written to interfaces: 'Open Declaration /F3 on an object instance shows you the interface when the implementation is supplied at runtime'.
  • When changing apps using EJBs: No contextual help
  • When changing apps using MVCs(Spring / Struts) : No warnings about change impact.
+1  A: 

As a beginner, I didn't do EJB or Struts stuff. Or even data source mapping. So I think the question's title may be a little misleading.

I would have appreciated having something like JadClipse built in to "look at" library code when I hit it in debugging or such. But it should be made VERY clear that this is "reconstituted code" and not meant to be hacked around in.

Second, noobs need to be made much more aware that Shift-F2 will get them the API documentation for whatever class/method they're looking at. I know too many novice Java programmers who explore their APIs with nothing more than code completion; they're missing many valuable hints provided by the library authors.

Carl Smotricz
Seconding the lack of a decompiler.
Dean J
+3  A: 

For me, the biggest hurdle to learning to use eclipse effectively was understanding where to set the classpath and also how to figure out exactly what is included on the classpath for various stages of development (compile, build, test). I was confused for a long time about the difference between compile time, debug configurations, and run configurations classpaths. Then if you throw ant into the mix (which automatically creates a run configuration ) it makes it even more confusing for newbies.

Dave Paroulek
this kind of qualifies as infra (setup/build related). assuming that your class paths are correct, you are going to change a method / class or whatever, what did you find it difficult? (for instance, when you are about to change a method name, it is an intutive thing in eclipse to right click and look for references - when I was a newbie, this was one of the positive reasons for using eclipse. Today,I am here to collect all negative opinions :-)
Jay
+1  A: 

VCS integration - typically the developer is also new to merging changes, keeping working copies in sync, resolving conflicts and so on. There are often several ways of achieving the same thing in Eclipse and I've seen this cause confusion on several occasions (actually, I've seen this with experienced developers too; they know Subversion but not Eclipse, and the latter tries to 'hide' the underlying repository operations).

SimonJ
@SimonJ : VCS integration - would be infra. Assuming that the code is already setup and the developer is ready to do his/her change - what kind of problems would a developer face in such a scenario?
Jay
+1  A: 

I think the issue with all IDEs for beginners is the disconnection from the tool chain: how the compiler takes some source and compiles it to bytecode which I then run using the VM with a correctly configured classpath.

As a dev I love the fact I don't need to deal with this - and I've never found myself unable to do what I want concerning more complex build configurations - but it's too important for beginners to understand what's happening when you press that Play button to be ignored.

monorailkitty
+4  A: 

For me, most of the newbie problems in Eclipse come from one of it's strengths, its configurability & plugin structure.

When I need to change a property in Eclipse, I always seem to have to spend a few minutes working out where to change it. Example: changing the Java editor to insert 4 spaces instead of a tab. The search bar in the properties is always welcome :-)

That and the lack of documentation for some of the plugins always makes for fun when I'm setting up a project.

EDIT: You can always show the classes that implement an interface using ctrl-T.

One thing I would add is that when I have a complex project, I tend to use Refresh & Project->Rebuild All *a lot". And I use TortoiseSVN to maniuplate stuff outside of Eclipse, because a lot of times this is easier (some refactoring for instance). However, if I'm modifying the project outside of Eclipse, I *always" quit Eclipse, and do a full refresh and build when I restart it. Otherwise Eclipse gets very confused sometimes.

MatthieuF
A: 

The other confusing part is that for web development there is a separate version that needs to be used! Well I didn't like this at all and I know that a lot of people just don't about this.

Aayush Puri
+1  A: 

when i first tried using eclipse i absolutely hated it's coplexity.. you had to do a whole bunch of things befor you were able to start working. furthermore you have way to many options to check and it's not always selfexplaining what each button does.

instead i started using netbeans. way more intuitive and easier to handle. check there gui.. not to much buttons and most of the time you know what the button does even if you have no clue of java (as i had at that time).

when i changed back to eclipse (due to some features not supported in netbeans) it seemed far easier to work with it. so some part of the gui might just be added in a not intuitive way and beginners will definitly have a hard time with it.

Dimitri
+4  A: 

"newbie issues" I've seen myself (I've used Eclipse for a good while, but it keeps "surprising" me occasionally) and helping colleagues just starting to use Eclipse:

  • It's large and complex enough to be very intimidating to some at first. Seems people consider netbeans easier to use initially. One colleague took refuge with the VI editor for a god while...
  • Installing plugins can be tricky (finding site URLs, awareness of plugins, why is "install"+"update" under the Help menu???)
  • Updates are still slow (but much better than before) with Eclipse 3.5/Galileo. It's difficult to understand which plugins to install just by their name sometimes.
  • Any platform besides Mac - preferences under the Window menu seems illogical?
  • Understanding how to set the project class path neatly. Setting the right project JDK version.
  • Lack of or unexpected interaction between ant/maven build tools' classpath and that of eclipse's (ant/maven clean causes Eclipse compiler errors when classpath is shared etc.).
  • Views and (large number of) perspectives are confusing/overwhelming at first. Which are useful when? How to drag views to the desired location or restoring closed ones?
  • Some JDK/Eclipse version combinations required too much PermGen space than available by default, took a while to diagnose.
Stefan L
+4  A: 

I think the biggest problem I faced (and still face) with Eclipse is that it isn't particularly aware of standard technologies that surround modern Java development. If I'm developing an application, it might include the following:

  • Spring
  • Maven
  • JSF/Struts 2
  • Subversion
  • JUnit

I think Eclipse handles those technologies in increasing levels of awareness: (so JUnit will be fine, it works out of the box; Subversion requires Subclipse, and it's a little ropier than the CVS support; JSF needs some WTP tooling to be installed; Maven...you're probably best off setting up your own external tools commands rather than trust M2Eclipse, unless it's become dramatically better in recent times; and Spring, well, as you say, try ctrl-clicking on a method and you'll almost certainly get an interface, because the implementation is hidden away behind a Spring config file).

Getting all of that to play together and check out/compile, then later compile/run tests/check in is the difficult bit. The code change itself is probably easy :)

Robert Grant
@Robert +1 for relevance in your answer to the question asked.
Jay
+1, it's so true, especially for Spring and Maven. SpringSource Tool Suite (http://www.springsource.com/products/sts) adds a little comfort, however, still a lot os missing.
Ice09
+1  A: 
  • simplicity
  • clearness
  • consistency

I might write it much more in detail, but i think, that eclipse is overweight and much too much oriented on features - instead of ease of use. IMO, this concerns beginners as well as professionals.

RED SOFT ADAIR
I'd second that one and then some; "infinitely configurable" isn't a good thing, unless you really, really, really want to sort through a wall of buttons, knobs, and switches to do something common, like changing a tab to four spaces.
Dean J
+12  A: 

Missing in Eclipse are:

Software visualization, as for example System Complexity View [Lanza 2003]

And also by Lanza, the Class Blueprint [Ducasse 2005]

Post Scriptum: Software visualization in Eclipse: X-Ray provides System Complexity View of Java projects, http://xray.inf.usi.ch/xray.php (via @anjaguzzi and Paul Lammertsma)

Software Visualization

And then collaborative filtering "other developers that edited this method before also edited" [Zimmermann 2005]

And the collection of browsable examples, and autocompletion at the level of these examples. That is, for example if your write

ByteBuffer buf = file.

and hit autocompletion it should search the codebase and the interwebs for examples that convert files to bytebuffers and insert that 10-20 lines there.

And of course also the feature that I can write a Unit test and then the IDE searches the interwebs for classes that pass the test. Yes, this can be done!

This list could go on and on, good starting points for more work are the proceedings of past

which are all under the umbrella of the ICSE conference.

Adrian
+1 for a wild and visionary answer.
Kaka Woef
Both System Complexity and Class/Package Dependencies can be added to Eclipse with the X-Ray plugin: http://xray.inf.usi.ch/xray.php Officially still in beta, but works brilliantly!
Paul Lammertsma
Soo...these are the problems newbie programmers experience? :)
Robert Grant
@robert my suggestions are visionary rather than incremental, for sure. How to get from type A to B is a problem newbies face very often, also search by writing a test might help them a lot.
Adrian
They're great suggestions, no doubt; great responses to another question :p
Robert Grant
+1  A: 

A mindreader which generates code on the fly, so that a single click is sufficient to complete a project.

BalusC
+2  A: 

I found Visual Studio easy to pick up, I tried clicking on each button at least once, and figured out what the whole thing does. It's thought out by a single design team at the highest level, and everything follows the standards top to bottom, more or less.

Then, I play with Eclipse. In technical terms, it's janky at best. Look at the preferences dialog; it's an overwhelming trainwreck, unless you already know exactly what you're looking for, and what the developer working on that feature decided to call it.

Eclipse's configurability relies on the fact you already know how to configure it. The learning curve there is awful, and the only saving grace is that most of the defaults are okay to begin with.

Dean J
+2  A: 

Here are basic missing features as far as I know :

  • Show the beginning '{' when you are at the end '}' where beginning '{' is out of the view
  • Automatically synchronize the editor with package explorer
  • Go to different view (package explorer, outline, etc) with keyboard
  • Inline find, which does not open a dialog.
  • Go to next error location with keyboard
  • Go to next/previous structure with keyboard
  • More stability in general.

These features work great in IntelliJ. Especially #1 and #5 are really useful.

fastcodejava
+2  A: 

I was a noob to eclipse recently, mostly doing Android and BlackBerry stuff. And one thing that eludes me to this day is the massive multitude of options and settings and various places they can be found in. For instance, if you have a plugin installed (say BlackBerry plugin), the setting might be found in the general prefs or BlackBerry prefs or the project prefs.

It's always a hunt.

AngryHacker
+1  A: 

Eclipse has no visual designer for Swing components.

Compare that to Visual Studio, where:

  • click 'new form'
  • drag buttons and text boxes onto the form, move them around, add some labels
  • double click on a button, add some code
  • done, one quick application, show it to the boss, get paid/promotion/coffee break

In Eclipse you either have to use Netbeans instead (ie not Eclipse...), or use IBM's SWT, or code the Swing forms by hand.

I feel it would be very nice to have a great wysiwyg forms designer in Eclipse for Swing forms.

Hugh Perkins
A: 

Eclipse is missing Maven Embedded in standard distribution , Maven would help any user in getting their program all the jars and better library management . Netbeans already has this tools. Also eclipse misses integrated tools for hibernate , spring , xfire and tomcat deployment using maven.

Check this site http://maven.apache.org/

madicemickael
A: 

All of my other problems with Eclipse have already been mentioned except one: It's slooooooooow. Was their goal to prove the "Java is slow" people right? I'm guessing this is related to the "Eclipse does everything", but I stopped using it because it lags every time I click on anything. Change tabs? Lag. Open preferences? Lag. Change tabs in preferences? Lag. It's like using Photoshop with 32 Mb of memory.

Oh and it's incredibly ugly. I wish I could get it with real GTK+ integration.

Brendan Long
And apparently having a real problem with Eclipse gets me modded down with no explanation?
Brendan Long
A: 

The android SDK integration is full of jank. xml layouts don't render correctly. Code completion doesn't work well. IBM needs to fix the jank for sure.

arunabhdas