Is a Certification worth it?

Thomas informs that according to the Sun Wireless Developer Newsletter a new certification exam Sun Certified Mobile Application Developer for J2ME, Version 1.0 is coming up. While this may be some good news for developers, it makes me wonder whether taking a certification exam is worthwhile at all. In a previous post Thomas had raised a similar point.

I am of the opinion that the preparation process for such exams if extended over a good time period does help a lot in building strong understanding however from the job point of view I have hardly seen it making any impact on prospective employers, atleast here in India. Employers here still expect less experienced programmers, certified or not, to pass their tailor-made Java tests, more-or-less lifted from Marcus Green's exams, before they even interview them. If you have 3+ years exposure to java, may be they would not opt for the test but still your certification does not makes any difference to them. Infact, only a few of Employers would even specify it as a criterion in their job advertisements. This has been my experience, may be others would differ.

A factor that has been preventing me from taking another certification test after the SCJP is the fact that it would blow a big hole in my pocket. By Indian standards a certification fee exceeding Rs.7000/- amounts to 15-25% of the programmers monthly take home, for his US counterpart it might not be more than 2.5%. I agree that the high fee may be a gesture to discourage less serious programmers but if Sun has confidence over its tests, that I hope are designed and set by the best, then the less gifted can still be separated from the genuine ones by the final scores. If the test become affordable maybe I would plan for my SCWCD and this upcoming SCMAD.

Castor and the Namespace bug

While working with a new version of Castor I recently encountered a strange error during unmarshalling (creating Java object out of corresponding XML schema). The error was as follows:

java.lang.IllegalArgumentException: The prefix ‘xml’ is reserved (XML 1.0 Specification) and cannot be declared.

Luckily, some Googling brought me to this thread which explains the probable reasons for this “bug”. As it suggested (and it works since I incorporated it) we need to set the namespaces property to true in the castor.properties file as follows (caveat: needs to be done with Xerces 2.5 only):

org.exolab.castor.parser.namespaces = true

Following is a quote from the said thread, which is in fact a reply from Keith Visco, the Castor XML project lead, that throws light on the cause of the bug:

The issue seems to be with newer versions of Xerces. The older version that ships with Castor works fine. For some reason, when the newer version of Xerces encounters an “xml” prefixed attribute, such as “xml:lang” it tries to automatically start a prefix mapping for “xml”. Which, in my opinion, is technically incorrect. They shouldn’t be doing that. According to the w3c, the “xml” prefix should never be declared.

The reason it started appearing in the new Castor (0.9.5.2), was because of a switch to SAX 2 by default during unmarshalling. I found a simple workaround (tested with Xerces 2.5) , at first I thought about disabling namespace processing in Xerces, but then realized that it’s already disabled by default by Castor…so I have no idea why they call #startPrefixMapping when namespace processing has been disabled. But in any event…explicitly enabling namespace processing seems to fix the problem.