Thursday, February 23, 2012

The topic of programming / agile / IT certifications seems to make the rounds every few years. At least in the circles I hang out in we're in a lull, no one's complaining about certifications or coming up with alternative ideas. Which in my opinion makes it a perfect time for an alternative idea. tl;dr

As a programmer what might a meaningful certification of your skills look like? Is it something like http://www.scrumalliance.org/CSD becoming a certified scrum developer? Is it a social network of recommendations, Bob says Fred is a great programmer and you trust that Bob is a great programmer so the transitive property of programmer greatness goes into effect? Should we look to other industries like engineering or medicine? These are the kinds of arguments I remember hearing in the past.

Why do we care? Why does the topic keep coming around? The answer, demand. Companies have caused a demand in certifications, and other companies (e.g. scrum alliance) have looked to fill that demand.

The debate about certifications always seems to come down to: How can you certify that someone is a good programmer? That's a flawed question. There will never be some metric that you can say this person is a good programmer because of X,Y,Z (or maybe there will but we're no where close to that as an industry).

There is demand, there are certifications, they're of limited value and possibly misleading. Our job as an industry is to provide good alternatives. Meaningful certifications that have teeth behind them. My solution, domain specific programmer certifications.

Assume I'm a bank I have two very similar resumes in front of me, I only have time to phone screen one of the candidates. The difference one candidate worked their whole career in finance, the other bio informatics. I'm going to call the finance guy.

Different scenario, I'm a bank again, the two resumes in front of me are both pros who've been coding in finance. One of the guys has a the Financial Programming Certification with a focus in trading (it's the most difficult financial certification to get with a 75% failure rate for first time test takers), the other guy doesn't have it. I'm going to call the certified guy.

So what is a domain specific certification? It is a difficult to achieve certification focused on verifying knowledge in a domain as it pertains to writing software. One could imagine them in finance, bio-informatics, medicine, healthcare, education, etc. They are business focused, not technology focused. They validate that you know the important domain concepts and the subtleties of those domains. That you understand common client needs. That you know common design pitfalls.

What about CSD? The content looks great, the name is misleading. Because what does it certify? It certifies that you are familiar with the daily practices and language of a scrum team. It's a domain specific certification for being part of a scrum team. Which is useful, but does it really mean that you're a good developer? That you can abstract well?

Certifications are about filling a need for businesses, they're not going to go away. Businesses have made that clear, and we can't ignore them. We have a choice as an industry do we have certifications like CSD or do we certify that programmers know about certain domains and the pitfalls of programming in those domains. We can either shape the certifications towards something useful or allow them to be shaped for us.