Kathy Sierra posted some updates for the Sun Java Programmer Certification (SCJP) exam. Seems that this time, question will focus on some of the newer features of Java 5 a.k.a. Tiger. Some of the questions are really tied to the newer features of the language which I have yet to see. Partially because there is no official Java 1.5 for Mac OS X yet. Even then, I have yet to see any new code take advantage of these features. You can check out some of the questions here.

I am sure that the purpose of the exam is to certify that you have indeed achieved mastery of the language. However, how is this a useful measurement for your programming skills? Especially since language features are bound to change every now and then. I mean even an old language such as Fortran has been revised several time (F77, F90, Fortran 2003, etc). Chasing the newest features of the language does not seem to be a very practical nor sought-after skill. I mean a good programmer can always pick up such things by reading documentations or just reading other people's code. My professor, of whom I am a teaching assistant for, makes this point by not teaching advanced features of assembly language. He justifies this by teaching only the skills that are going to outlive the features of the x86 instruction set; skills such as writing clear code, debugging code and working in teams. Personally, I would be very wary if the company I wish to work for requires that you are a certified Java/Lisp/.NET developer. Well, maybe .NET might be OK since .NET is a behemoth of a framework and has a lot to offer (and require from its developers).

Of course, being certified does have a certain status associated with it. After all, it means that you have invested sweat and money going through piles of books that concentrate on one very small subset of development. So, you should be better than the fresh college graduate, right? Maybe. But I have never heard prominent figures such as Joel Spolsky and Eric Sink mention that they are going to require specific certification to be considered for a job. In fact what they look for are basic skills that transcend languages. After all, in a worse case scenario, features of the language can be simulated, albeit inelegantly, to serve its purpose. For instance, Java does not have closures (yet?) so make do with the anonymous inner classes.

So I am not really sure what one would want a certification in some language. Maybe being certified as a Microsoft Developer (MCSA, etc) might be more useful since it covers a myriad of skills that might actually be useful. Then again, real hackers have other ways to prove their skills: through ingenious code. Who's going to teach you that?

If I were going to take a certification exam in some language, it would probably be for 2 reasons: because I like the language so much that I feel that being certified shows my passion or because there is something that you can actually learn from that certification that you will find hard to learn unless you spend 2 years on the job. Getting a certification because of a job seems like a weak motivation for me (as of now, but things might change when I really need to get a job).

Of course, it could also be another form of passion, as Vendor Wars [] points out:

"I've always found it curious how easy it is to recruit foot soldiers for a particular vendor. There never seems to be shortage of Microsoft or Java or Oracle etc. apologists, who are canvassing the tradeshows, propagating the vendor of their choice. They appear as if they're working for their sweetheart vendor, but what's fascinating is that all these Herculean efforts are voluntary. No one pays them to do all the free marketing and advertising for Microsoft, Java, Oracle, IBM...

Why would someone sacrifice so much of their lives to serve some giant vendor? I must honestly say I really don't understand the motivation behind that. However, it neatly explains why so many developers are happily embracing the morecode gospel."

comments powered by Disqus