Our organisation recently recieved a two day Java training course from
an external consultancy. Myself aside, most of the attendees were
unfamiliar with Java and OO. I have been away from Java for 2 years or
so, and am a little rusty. However, I felt disturbed by many of the
things that he repeatedly asserted as fact, despite my attempts to pose
alternative views. Which of us is lacking?
I find it difficult to believe that anyone is going to learn Java
programming in 2 days. Even books claim 'learn Java in 21 days' and that
tends to be a bit of an exaggeration.
1. Java is pass by reference.
Yes and no. If I pass an object to a method then it is pass by reference.
If I pass a builtin data type, e.g. int, long, double, then it is pass by
value.
2. String s1 = "Fred" is always the same as String s1 = new
String("Fred")
From a high level point of view, sure. It would be safer to say that the
first format is 'syntactic sugar' for the second format.
3. Never heard of SpringLayout
Who? You or your instructor? The SpringLayout was added on v1.4. If your
instructor had never heard of it then they are not keeping current.
There are a lot of people out there still using v1.3.1 and maybe your
instructor is one of them.
4. Never heard of the EventHandler utility class and couldn't see why
it would be useful when explained to him. He also asserted that you
should only ever use inner classes as event handlers and saw no reason
for using Swing Actions.
Another v1.4 addition. I also learned Java originally on 1.0.2 through
1.1. I dropped out of the Java scene for a while and came back in 1.4.2. I
used to teach Java 1.1 so when I brushed up on 1.4.2 the sight of inner
classes seemed odd to me. After a bit of real life use I saw how nicely
they could be used and got used to the idea. Sounds to me like your
instructor is old school and not open to change.
5. His presentation slides stated that you should never modify/extend
any of the base Swing components.
Hmmm, this just sounds wrong. Mind you, I read a few books on 1.4.2 and
most did not cover this. This strikes me as something not to be covered in
a 2 day course. I can see him not covering it but it is wrong to say it
should never happen.
6. Stated that you should only ever use GUI builder tools and that hand
coding was a no-no.
This is a matter of opinion. I know that there is a lot to remember and I
appreciate the fact that a GUI builder tool helps with a lot of tedious
details but I'm a strong believer in doing it old school and then having a
tool do it for you. If you depend on the tool you are limited to what the
tool will let you do.
7. Never heard of JDBC RowSet or any of its subinterfaces.
If you are doing a 2 day course on J2SE then JDBC might not be something
that gets covered. It is sounding more and more like the person teaching
the course knows just enough (or maybe a little less) to teach a 2 day
course on J2SE and not much else.
I've seen this a lot. I've received training at work and often the
instructor is just smart enough to teach the material in the course
outline. If you ask them questions outside the course material they have
no idea and suggest you attend some more advanced course (taught by
someone else).
8. Stated that if you do not use GridbagLayout your GUI will look
appaling and developing it will be unmanageable.
Is he assuming you are programming a particular application? If he is
stating that generally you should use GridBagLayout then he is an idiot.
Why would they have other layouts if no one is supposed to use them?
9. Stated that GridBagLayout could do things that other layout managers
couldn't do ( even in combination )
Doubtful. See second sentence in response to point 8.
10. Though currently writing a book on Java 1.5, he didn't know the
syntax for a simple generics example e.g List<String> myString etc. I
had to help him out.
What was this guys name? I'd really like to know what book to never
recommend to someone. If you tell me it is Herbert Schildt I'll hurt
myself laughing.
11. Stated that you can not develop Swing applications using a GUI
builder plug-in with Eclipse.
Therefore, based on point 6, you should never use Eclipse.
12. Though using Eclipse as his training IDE, he was unaware whether or
not any version of Eclipse was up-to-speed with generics.
Wait a second. He uses Eclipse for training, tells you to always use the
GUI build tools but that Eclipse cannot develop Swing applications. See
response to point 9.
13. Stated that the class Class was the base class for all classes ( as
opposed to Object being the base class for all objects )
Maybe you misunderstood him. Or more likely, maybe he is a little
confused.
14. Repeatedly described static initialisers as static constructors.
Obviously not detail oriented?
15. Asserted that any Java 2 applets deployed in internet explorer must
be launched via an ActiveX control.
Don't know anything about Java 2 applets but this sounds wrong to me...
even without all the other garbage I've read so far.
I do not expect a consultant to get everything right all of the time.
However, when paying several thousands of pounds ( more in US dollars )
for a consultant with 10 years Java experience, and currently
co-writing a book on Java 1.5 with a well-known, established author, a
better quality of service should have been delivered. Please help as
I'm beginning to question my own judgements! In fairness, he did
partially back-track on some of his assertions after some uncomfortable
moments. In the interest of fairness I won't mention any names and I
hope I have represented the training course accurately.
Ask for a refund. Seriously. Additionally, make sure your management knows
what a waste of time this training was.