J.Storta said:
1) What, if any, IDE do you use? NetBeans? Eclipse? Other?
Doesn't matter a damn.
2) What do you spend most of your time doing? Debugging existing
code? Writing new code?
By preference, writing (and testing, and debugging) new code. Modifying and
debugging old code takes more time though. And my best estimate is that around
50-60% of my actual working time (not in meetings etc) has been spent doing
documentation (the "downside" of the fact I've been lucky in often getting new
systems to design/work on).
3) Aside from the knowing the language itself, what would you say is
the most important skill to have as a Java Developer?
In no special order:
- a good memory.
- the ability to talk to and listen to other people -- /in their terms/.
- the ability to read other people's code and work our what the hell they
were trying to express.
- the ability to search for information, and willingness to take the time
to absorb it.
- a nitpicking attitude to "doing it right".
None of these are Java-specific.
Other posters heave mentioned "good solid OO principles", and I agree
(strongly).
(One added, somewhat tongue-in-cheek, "in other words [...] learn
Smalltalk first" -- which I'd also agree with, but add the rider that learning
Smalltalk second is still /far/ better than not learning it at all. Oddly,
another reason to learn Smalltalk is nothing to do with OO at all: the
"white-box" style of Smalltalk libraries and frameworks (as opposed to the
black box style popular amongst Java programmers) means that you get a /lot/
of practice at reading and inferring the underlying design of other people's
code -- which is a critically important skill for any programmer, and (IMO) one
of the hardest to learn.)
Getting some familiarity with so-called "design patterns" will help too (btw
this has /nothing/ to do with OO programming -- although the two are sometimes
confused). It will help quite lot for a small input of effort.
BTW. If you were looking for an answer like "learn Swing" or "learn J2EE" or
something, then I'm sorry to disappoint you. I don't think that learning a
/specific/ library or application domain really counts for much. It may help
you get jobs because people will want programmers who don't need to be taught
Swing/XML/etc before they can be productive, but it doesn't make you a better
/programmer/ in itself. If you'll accept a slightly snobbish
over-generalisation: "Good programmers measure themselves by what they could
do, bad programmers measure themselves by what they know". Judging from the
other replies, the other respondents feel that general skills matter more than
specifics too.
(But, that said, I suspect that wherever and whatever you end up doing, it's
likely that you'll need to understand the basics of SQL databases, networking,
and XML -- not in detail, and certainly not to expert level, but just enough to
understand what people are talking about, and do simple tasks without help --
so those are areas worth looking at.)
-- chris