The value of Java certification
At the end of 2016 I had a discussion with two colleagues about obtaining an official Java certificate. One had recently started his study for OCA Java SE 8 and the other had passed the SCJP exam for J2SE 1.4 in the past. Both agreed it was a pretty tough to get certification. I was not convinced that someone who was certified, should automatically be regarded as a java expert; the material is easily learned, but also forgotten fast. During this discussion, I realized I was critical, but could not speak from experience. So I felt there was only one thing for me to do: get certified myself.
The study
Java certification comes in various forms. The general certification consists of OCA and OCP. In addition, you can obtain certificates for specializations in the field of JEE. I have chosen to do the general OCP certification. You must first obtain your OCA certificate before you can take the OCP exam.
I ordered two books [1] to prepare myself at home through self-study. Around the Christmas days of 2016 they fall on my doormat. Together more than 1000 pages. Okay, this is going to take a while. I make a plan and think that I can work through the material by the first quarter of 2017.
It is the end of March when I close the second book. Finished! Each chapter in the books is concluded with a test to determine whether you have mastered the material enough. According to the writers, the questions correspond to the level of the exam. And then you can only draw one conclusion: there must have been at least one sadist among those examiners. Because every question seems to be a carefully constructed pitfall, intended to make you stumble as a future OCP graduate. They force you to think like a compiler, and that’s something I’m not used to, thanks to all the great tooling and IDEs we have today.
Exams
All in all, I think that I should be able to pass the OCA exam without much effort. OCP is a different story: it contains a number of subjects, which I have too little experience with, or where my experience is too far in the past. E.g. concurrency, Fork-Join framework, Paths and the Java 8 functional extensions, like streams and lambdas. First I have to study these subjects a little further. But, I am confident enough to purchase the exam voucher for OCA (they expire after six months). That is not easy, if you do not own a credit card. But after an iterative process of calling and waiting and e-mailing and waiting, I managed to obtain a voucher from Oracle through a wire transfer. On June 16, 2017 I take the OCA exam and pass with a score of 91%.
In the meantime, the workload at the office has increased considerably after the summer holidays, due to deadlines and ambitions of my employer. There is little spare time left for me to take on the OCP challange. Finally, I decide to take two weeks off, following my visit to the great Devoxx java conference in Antwerp from November 6 – 10, to prepare myself for the exam. On Friday, November 24, 2017 I pass my OCP with a score of 82%.
Conclusion
Also the experienced Java developer will also have to make a considerable effort to obtain the OCP Java certification. Read a lot, check examples in your IDE, make test exams, and so on. What you gain is additional sharpness and a refreshed knowledge. In practice, I find that following the certification path is particularly helpful when I review code from colleagues. It can also be a (renewed) introduction to parts of the Java platform that you hardly or never use in your daily work. Parts that you will forget again soon, if you do not apply them. On the other hand, next time you may choose the new way over the old, familiar way: it happened to me with applying Streams and lambda’s, and with NIO.2 Paths or the new datetime APIs.
For beginning Java developers, certification is not a good way to get to know the language (better). The textbooks and exams are full of examples of how things should not be done. Such as: one-letter variable names, unreadable if-else or try-catch constructs, etc. As mentioned earlier, you learn to think like a compiler, not like a fellow java developer who also has to read and understand the code.
For an employer or client it can help to make a quick selection in CV’s, e.g. if you are looking for developers with knowledge of the functional additions in Java 8 (Lambda’s and Stream APIs). But always check which Java version the certification applies to.
All in all, certification has yielded me some, but in my opinion it does not outweigh the time investment. And I still think that Java certification is not a measure of craftsmanship.