• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Beta Impressions, open letter to exam writers

 
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Executive Summary:

1. Drag and Drops are great (they just need to fix the lousy testing program)
2. Questions not hard, Mostly fair
3. Time is short

and number 4...

Since I know some of the exam writers are part of the community here, I have to vent on this next topic.

STOP USING "CUTE" IDENTIFIER NAMES

I hate wasting time wading through variable foo of method foobar in class Foo. Which is subclassed by Fooo. This also applies to all rhyming and nonsense identifiers.

If you have to play games with variable names to make your questions interesting, then I submit: 1) It's a lousy question, or 2) You're testing the wrong thing. There's no "parse the goofy code" section in the objectives.

If anyone at my work wrote code that looked like that, they'd be fired. It may be fun for the test writers, but the test isn't for them.

Generally, the DnD questions were free of this nonsense, and that made them much more straightforward. In fact, the DnD questions looked like (gasp) Real Code (TM).

Just my 2 cents.
 
arch rival
Posts: 2813
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Cute/individual names in questions make it far easier to detect when there is a leakage (i.e. copying/plagiarism). I am not one of the exam authors and I have no idea if this is part of the actual thinking behind the naming conventions. Good to read your overall feedback. Having taken industry exams over several years from outfits like Microsoft and Novell I have always rated the Sun exams highly.
 
Ranch Hand
Posts: 5093
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Having a member foo in a class Fooo derived from a class Foo also tests the mental capabilities of the candidate.
Does he properly read and understand the code without having to depend on proper naming?

From practice exams I've done and from the certification books this seems to be a central concept of the exams, thus making the decision to use code style which would get one a black mark if used in professional development most likely a deliberate one.

And no, I'm no exam author either but I do try to think like them leading up to my own 1.4 exam this week
 
Bartender
Posts: 1155
20
Mac OS X IntelliJ IDE Oracle Spring VI Editor Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
metasyntactic variable, Commonwealth Hackish.
I like 'Wibble'Wibble.

Yes, I agree these names should not be used for 'real' systems. But you got to have a bit of fun while learning.
PS - I'm not an exam author.
[ March 07, 2005: Message edited by: Peter Rooke ]
 
Stephen C Johnson
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Perhaps then, Sun should run all the sample code through an obfuscator first, and then the candidates would get a real workout!

While you can rationalize any bad decision, I believe the objectives cover what should be tested. That is the basis for evaluating the "mental capabilities" of the candidate.

Goofy names are a crutch for poor question design.

[ March 07, 2005: Message edited by: Stephen C Johnson ]
[ March 07, 2005: Message edited by: Stephen C Johnson ]
 
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
"Having a member foo in a class Fooo derived from a class Foo also tests the mental capabilities of the candidate."

with due respect to all, how about asking

"member porno in a class felatio derived from a class Jerkoff " would also test the mental capabilities of the candidate.

these Foo-Faa-fooo 'wayward' names only tend to serve as jarring effects in the concentration.

No offence
&
only pun intended
 
Ranch Hand
Posts: 4982
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The name might be a bit different to read, but still, it is better than using Q64ObjectA, Q64ObjectB, etc, I found these namings are more difficult to read.

Still, the overall outlook of the exam is good, I believe.

Nick
 
author
Posts: 9050
21
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey Stephen -

STOP USING "CUTE" IDENTIFIER NAMES

I hate wasting time wading through variable foo of method foobar in class Foo. Which is subclassed by Fooo. This also applies to all rhyming and nonsense identifiers.



I'll start out by confessing that I've worked with Sun on their last six Java-related certification exams, so I'm stepping up to take some of the heat.

When a question uses similar names like Foo and foo and foobar, there's almost always a compelling reason to do so, for instance, "can the candidate determine by strucure and / or signature alone what elements are being used?"

You don't say why you are bothered by rhyming or nonsense identifiers...

I guess my question is, what would you recommend instead?

You say that if anyone in the real world wrote code like that they'd be fired... well I agree!

We are tightly constrained by a number of factors when creating questions. In the end, we are balancing factors such as limiting the expense of the exam, and making the exam accessible to candidates world-wide. We realize that we're often jamming 30 lines of code into 15 lines. We also realize that exam code just isn't (and shouldn't be), real world code, for lots of reasons.

Thanks,

Bert
[ March 07, 2005: Message edited by: Bert Bates ]
 
ranger
Posts: 17347
11
Mac IntelliJ IDE Spring
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
C1, why don't you just come down to my cubicle and ask me.

So you finally found a place that was open to take your test?

If anyone at my work wrote code that looked like that, they'd be fired.



No they wouldn't, it takes way too long to get someone fired here. Well, ok, maybe about 2 years down the road.

Hmm, now I'm thinking of writing a FooAdo that has FoooAdo and FooooAdo subclasses that is called by the BooService, which is called from the YouTooBean.

Mark
[ March 07, 2005: Message edited by: Mark Spritzler ]
 
Stephen C Johnson
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Bert --

Let me clarify -- my only objection is against using identifier names that serve no purpose *other than* to confuse, distract, or otherwise trick the candidate.

I have no problem with Foo, Bar, or whatever Monty Python or Hitchhiker's Guide reference you come up with.

I won't post again on this thread (I promise), so I'll try to be clear:

Suppose you have a question that tests the candidate's ability to correctly follow the sequence of method calls up a constructor chain. There's plenty to work with there. Any decent Java programmer could write such a question that varies from very simple to complex. You can thoroughly test the objective *without* names like boochy, snoochy, snoogy.

Anyone is free to disagree with me, but intentionally trying to distract the candidate is dirty pool. I believe it falls under "trick question", something I thought we were trying to avoid.

At best, it wastes more of the candidate's time. At worst, the candidate gets a question wrong on an objective he/she knows thoroughly -- just because they had 2 minutes to answer a question and spent 1 minute wading through the intentionally confusing code.

If you've taken the test, you know which questions I'm talking about -- there's not too many of them, but they stick out like a sore thumb. I'm not sure I buy the "we do everything for a reason" response. I assume that because this is a Beta exam, there are things to change and Sun wants feedback. Please take this as constructive criticism of the exam, and not the exam writers. It's not personal.

Thanks,
Steve
 
Stephen C Johnson
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
But Mark, I wrote exactly what you told me!



Darn Mark tricked me into posting on this thread again!
[ March 07, 2005: Message edited by: Stephen C Johnson ]
 
Wanderer
Posts: 18671
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Personally I wrote several questions using Foo and Bar. It didn't occur to me that this might be viewed as confusing to anyone - that certainly was not my intent. I think that having Fooo in addition to Foo is a bit questionable, as it looks too much like a simple typo IMO. Depends on the question I suppose. In the case of boochy, snoochy, snoogy - I think if they are presented in a parallel structure that makes it easy to compare the names side-by-side and spot the differences, it should not be difficult for a programmer to keep them straight. But if they're buried amongst other code where they're hard to see, then I'd agree it seems a bit unfair. I wouldn't want people to miss a question just because they overlooked a minor typographic difference, e.g. the difference between a 1 and an l. Especially if it's something any decent IDE would've flagged for them. On the other hand, I would expect them to recognize the difference between foo and Foo, because such differences are very frequently important in the real world. That may seem inconsistent, but it's reflective of the types of differences I've observed to be important in my experience.

Offhand, I can remember recently seeing a method getRecords() which called a getRecords(x) which called a getRecord(y) which called getRecord(y, z). Where x, y, z are some aribitrary types I don't remember - point is, the call stack involved multiple overloads of the same method name, plus similar names. Now one might argue that this should be refactored to something clearer - but the ability to pick out differences like this is in fact a useful job skill, I think.

Ultimately though, I really can't see what's "distracting" about these silly names. Are you objecting to the silliness, or to having excessivey subtle differences between some names? I've been addressing mostly the latter, since I don't see any problem with the former.
 
Marcus Green
arch rival
Posts: 2813
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Stephen, I took your comments as constructive, and Bert, it is most excellent to get feedback from the people involved in creating the real exams.
[ March 07, 2005: Message edited by: Marcus Green ]
 
Mark Spritzler
ranger
Posts: 17347
11
Mac IntelliJ IDE Spring
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Stephen C Johnson:
But Mark, I wrote exactly what you told me!



Darn Mark tricked me into posting on this thread again!

[ March 07, 2005: Message edited by: Stephen C Johnson ]



And why aren't you at your assigned workspace? I have some PTRs for you to close. Still trying to recover from the test?

Mark
 
Bert Bates
author
Posts: 9050
21
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey Stephen -

No worries! This is a perfectly good question!

Let me clarify -- my only objection is against using identifier names that serve no purpose *other than* to confuse, distract, or otherwise trick the candidate.



As far as I can remember that was never our intent... the older exams tended to be very "tricky", and in this exam we tried very hard not to be...

We might very well try to confuse candidates with things like shadowed variables, or constructors named like methods, but as far as I'm concerned that's valid. I guess I'd like to hear more about what you found distracting, and how that wasted your time.

- Bert
 
Nicholas Cheung
Ranch Hand
Posts: 4982
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Please do not post out the real question. Try something else to repharse it.

Nick
 
Bert Bates
author
Posts: 9050
21
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey Nicholas -

No worries! If you study the posts concerning the 1.4 exam you'll see that "topics" are discussed - but not actual questions. As the 1.5 exam becomes more well known, "topics" will be discussed for it also.
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic