Over the past few days I have been thinking that the Software Industry is in drastic need of a Professional Licensing mechanism. I cannot even begin to imagine how much it costs businesses when they hire people that are unqualified, and there is presently no mechanism that I know of, outside of Vendor-based Certifications and College Degrees, to tell managers and business owners whether candidates are qualified or not. I am surprised that this issue has not been more widely discussed; I presently know of no such initiative to impose a licensing mechanism similar to that of Doctors or Engineers.
I think we need this for various reasons:
1. To give hiring managers and business owners confidence in who they are hiring (and tell them when they are taking a risk if they decide to hire someone that is unlicensed).
2. To give qualified professionals the respect they deserve and keep the integrity of the profession intact.
Without this licensing mechanism it's easy for non-Software people to fantasize about how easy it is to "code". If this doesn't sound like a big problem, consider that the entire concept of Outsourcing Software Development jobs is primarily based on this idea. Jobs that are "easy" to do are the ones that are Outsourced first. I don't think people would Outsource their Doctors or Lawyers. So the fact is that a rigorous licensing process would create a conscience which states: "yes, this job is hard. Not everyone can do it. When this person speaks, listen to him or suffer the consequences." How many of us would like a little more of that in our professional lives?
Another problem that is caused by this lack of respect is the promotion of a non-Software person to a Software Management role....how many times has this happened and how much grief has it caused? Would you promote a non-Doctor to be the head of Surgery at a hospital? What would happen if you did?
Yet another issue is how work environments degrade because of this lack of trust. I have been in many places where Executives are frustrated because they have been lied to for years and still don't have a decent Software Infrastructure in spite of large investment and commitment on their part. Then, when a good person joins the organization, he has to bear the brunt of this distrust along with all the other incompetent people who enjoy the obscurity as it offers them a place to hide.
In short, a Professional Licensing initiative will help to bring the Software world out of the Dark Ages.
One of the questions that comes to mind is "why hasn't this already happened"? I can't say for sure, but I think that Software is much more abstract than most of the other professions out there. It's hard to explain what you do to many people (especially if you're a Database person) and this makes it equally easy to "fudge" results of projects and "redefine" concepts such as "success" and "quality". Surgeons can't fudge their results that easily, because they are more obvious to the layman. If a person dies on the operating table, that's that. Same with Engineers. If a bridge collapses or a Ford Pinto blows up when it's rear-ended that's not very easy to explain away. But software is so abstract that you can easily fudge or obscure many facts about it that are not possible with the other professions.
Of course there are aspects of Medicine and Engineering that are not as clear-cut as what I mentioned above, and there are aspects of software development that are rather clear cut (a broken website), so we're not talking absolutes here, but I think that on the whole the Software industry is more abstract than most of the other professions, and this fact alone SCREAMS for a Professional Licensing initiative.
Naturally there are numerous issues to be resolved, and many heated arguments are going to come out of this, but that is how life works and how progress is made. However it turns out, I think this licensing mechanism should bear the following characteristics:
1. Should be vendor-independent.
2. Should be rigorous enough so that any licensed person is well-versed in the structure of how Software works. Making a piece of Software function is relatively easy; it's the deeper understanding of Software that is more important.
Comments? Thoughts?
SB