Software Certifications. Do They Matter?

Posted on June 6, 2010



Caffeine-induced brain dump follows below:

The question pops up regularly at the regular e-water holes: StackOverflow, JavaRanch, the LinkedIn forums. Will I get hired if I become a Spring Certified Professional? Can I get a job by being SCEA certified? And so on and so the general question about getting a certification in the software industry is seen, measured (and sometimes discarded) from the point of view of another question: does it help me get a job?

To me, that’s the wrong way of looking at it. Why? Because it is orthogonal to asking will spending X years in college getting Y degree will help me get a $Z/year paying job? Obviously, financial remuneration is a strong incentive to get any form of education, but it can’t be the main one, not on the long run, not if one aims to have a fruitful and sustainable professional life.

No matter how much you think you love your job or are ambitious or whatever. Work sucks a lot of times. Hard work drains you. You have to baby sit co-workers that suck, and catch up with co-workers that are much brilliant than you, all while addressing challenges that are malleable and in a business context that is not within your control.

If you don’t love the career choices you made, and if salary is the only (or primary) parameter, this will get to suck really fast, sometimes without you even realizing it. You might have to re-invent yourself at some point in time. You might even have to change careers. But while you go at it, at the career choice that you have made, you have to love it; it has to positively stimulate you in some form or manner independently of the financial gain.

And that is why any form of education or examination cannot be judge simply by its ability to get you the moolah. Sometimes, however, life can throw you a curve ball (read, a pink slip), and you have no choice but to look at education from that point of view.

About a year and half ago, I moved out of my ass and got myself SCJP certified. Not because of intellectual navel-gazing. There was a more pedestrian and basal reason: I was unemployed. I had been cozily working on JDK 1.3/1.4 for eons, and all of the sudden, I found myself like a unwanted tumbleweed, tumbling around the new and brave world of Java 1.5+.

I had a need to move out of the JDK 1.4 world and into the new one. And that got me thinking then. It would have had been much better if I had been more proactive when it comes to certifications. I should never had waited until I had a need for a job to get one.

And that is the sign of a healthy, sustainable professional growth (a sign that I neglected, like many other people have): you improve your skills because that is part of the career you have chosen, and not because ZOMG! CAN I HAZ TEH JOB!?

The unfortunate thing about software is that, unlike the physical engineering disciplines, we do not have standards to measure knowledge, nor we are legally bound to the results of our deliverables. So there is always the question: should we really care about certification?

Unlike having passed a professional engineering exam, having a software technology specific certificate doesn’t necessarily prove we know the stuff. It doesn’t even guarantee we know how to program ourselves out of a bowl of spaghetti.

But for a good software developer/computer scientist, an industrial certificate means that such a person put himself under the pressure of testing… and most importantly, took the time to prepare himself.

Perhaps the only time that it’s not worth the effort (to get a specific certification) is when you are extremely proficient in the subject being certified. This is true not only with Java certifications, but with industrial software certificates in general (.ie. Sun Certified, MS Certified, ZapThink SOA Certified, SEI Architect Certificate, IEEE Software Certified.)

One thing is certain: with certificates you get what you put in.

I never really cared to get certified for the longest time (I’m referring to the SCJP I got in 2009.) As I mentioned before, I was breathing Java 1.4 for years with no chance of working with the new Java 1.5 stuff. Preparing for the SCJP 1.6 was the only way for me to get through all that new stuff. Plus I discovered there were things I didn’t fully understood with Java in general (inner and anonymous classes or accessing private fields via reflection, for example.)

The value I got from the certification wasn’t the paper itself, but the objective assessment I got on my knowledge (and an equally objective list of things that I needed to review.)

Committing to a certification exams commits you, within a dead line, to review what you know… and most importantly, to discover what you don’t know or what you think you know but you really don’t.

Another anecdote: Last year I took a 5-day Spring workshop. The first 3 days were a piece of cake, reviewing what I knew from work already. But the last two showed me stuff for which I only had a very thin and superficial understanding. The same has always been true for different type of training and seminars I’ve had in the past.

I don’t really need a Spring certification to work or to get work. But it can certainly help my knowledge. So after a year of getting the SCJP, my next objectives are to become Spring-certified and a SCEA (Sun Certified Enterprise Architect). Those are my immediate targets within the next 12 months. Other certs will follow according to my work needs.

If you go for the certificate to simply get the paper in hopes of improving your marketability, that might work, and that might not work. Ultimately what matters in the real world is a job track record and our ability to deliver (and pretty much not suck at programming.)

However, if you go with the intention of testing yourself, of getting an objective assessment of your knowledge (which entails your preparation), then you will most likely be surprised and empowered by the new knowledge you will on the subject of study.

I think software developers should do it, just for the benefit of getting a better understanding on the technology they use on a daily basis. You should also pursue periodic certifications on technologies relevant to your work if you can afford the time and money. If you do it with the goal of strengthening your skills as opposed to simply get the papers, you will gain a lot out of it.

Remember that classic line from "The Godfather II"

In this business (the software business) we have to constantly study. Things change very rapidly and become obsolete in 36 months or less. If we have to put the effort to always be up-to date, we might as well funnel some of that effort towards being formally examined and certified in some of the subjects anyways.

Remember, when it comes to certs, we get what we put in, not just in terms of effort, but in terms of attitudes and objectives.