When I was looking for a job a while ago, I was told by my recruiter that a web development position was open and I was a good match for it.  I had done a handful of web development, but nothing close to the scale of the client app work I had done.  I saw this as a good chance to broaden my skills.

“Do you have any javascript,” my recruiter asked.

“No.”

“Have you ever worked with it?”

“I’ve done some for my personal website.”

“Great, can you put it on your resume and send me an update?”

That is really how our conversation went.  This resume technique is rampant in programming these days.  I’ve seen resumes of developers who say that they know practically every technology that’s come around in the last ten years.  They list more acronyms than actual skills.  It’s virtually impossible to know exactly what a developer’s current skill set is by looking at a resume.  It’s also incredibly difficult to tell from a job interview.  The result is companies losing a lot of money because of dishonest representation.

Let’s be honest… computer programmers are engineers.  There’s a lot of talk about programming being a soft skill and having no right answer.  However, programmers write software that manages banking transactions, controls air and ground traffic, analyzes medical data, all of them critical applications.  Let’s compare this with civil engineering.  Most civil engineering jobs require a license.  It’s a means of validating your credentials that must be renewed regularly in order to work.  Many, many professions require a license; doctors, CPAs, surveyors, tatoo artists, and even barbers.  Computer science has more than its share of licenses; MCSE, SCJP, CNE, etc… However, none of them are required to work, and that’s the key difference.

Can you imagine the stir if programmers were required to be licensed to work?  A license to practice programming!  Such a license would require that a software engineer understood enough about software design and implementation to write reliable applications, just like a civil engineer must prove that they know enough to design and build safe structures.  This license would simply prove that a software engineer had a base competency in programming.

I think there would be some very interesting side-effects from this as well:

  • It would weed out some of the frauds that manage to get a job because the interviewers weren’t smart enough or tough enough to really put the candidate to the test.
  • It would ease the long-standing misconception that school taught programmers are better than self taught programmers. 
  • It would also help reduce the misconception that a programmer’s quality is directly related their language background (for instance, VB and Perl vs. C++ and Java).
  • Hiring companies would have a licensing agency to consult for a work history, instead of trusting a list of unknown references.

Imagine if doing careless programming work could result in a suspension or loss of your license.  It could even potentially mean being sued for malpractice in extreme cases.  I’ve known programmers that I would have reported.  I’ve met programmers that I wish I could have turned in so that no company had to endure the process of finding out how bad they were.  A license could also empower software developers.  Management driven shortcuts to meet a deadline could be challenged by software developers on the grounds that it would compromise the quality of work required to maintain their license.

Some might view licensing as restricting the freedom to work, or that it’s adding government interference into a currently unrestricted job market.  However, I truly believe that the quality of programming would rise and the software engineering field would be better for it.