Wed 25 Jul 2007
007… Licensed to Program
Posted by Scott Hackett under Programming
[12] Comments
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.
July 25th, 2007 at 9:52 am
Wouldn’t this lead to certified vs uncertified software? How do you think this would impact the open source world?
July 25th, 2007 at 11:16 am
I don’t believe this would help… There are still professions that require a license (gas fitting, electrical rewiring, etc) that get by doing shoddy work. If anything this usually just stops people doing odd jobs themselves (under the guise of “safety”), and forces people to pay extortionate prices for what is still substandard work…
July 25th, 2007 at 11:51 am
I don’t think it’s going to solve everything, because developers are only part of the problem. Quality is always set against time and resources, and the last two are more important to most businesses. Also, I’d be concerned about holding up an MCSE as proving anyone is a good developer.
July 25th, 2007 at 11:54 am
Isn’t that what certification is supposed to be? And would you really like to institutionalize that scam any more than it is already? Say you’re about to interview 2 candidates for a position. One is a MCSE (or SCJP, SKAJUW etc.), the other has no certification. Before you meet them, don’t you assume that the one with no certifications is probably going to be better? I know I do.
July 25th, 2007 at 3:16 pm
@Ze3U: Hahaha
July 25th, 2007 at 4:14 pm
Unless I am mistaken, the purpose of a college degree in computer science is to provide a basic understanding of programming and programming practices. Having said that, my CS program used C, Microsoft C++, Java, and VB.NET. I know others who did their entire program in Java, and yet others who could pick the language they wanted to use, as long as they solved the problem at hand.
As for certifications, I have met many a paper credentialed person who was practically worthless. They could pass a test, and that is it. Fortunately, that was not status quo.
In my opinion and experience, which is by no means as extensive as that of others in the industry, the best way to test someone skills is to pair them with a proven developer and get them working on a project. When push comes to shove (so to speak), the wheat quickly gets separated from the chaff.
It is the domain of the project manager or manager to make sure that a client doesn’t get burned in the process.
July 25th, 2007 at 5:19 pm
Who would certify the certifiers? Have the government do it you say? Surely you don’t mean that! Can you image them coming up with a test for Perl, Ruby, Java, Lisp flavor A, Lisp flavor Bubblegum, blah, blah, blah,… ? Truly? Better yet! Maybe they could implement a new language that includes the constructs all other languages (call it OmegaX maybe). Wait, but then why would we need any of the old ones? Oh, that’s right, we’re human (meaning we’re mostly too stupid, stubborn, and prideful).
Anyway, that’s what the marketplace is for. If a company is too stupid to hire qualified individuals, for any position, (or weed out the ones that slip through the hiring process), too bad. They go away. As they should.
Anyway, lofty goal, but, if it ever succeeds… well, I’ll probably go back to framing houses for a living. You need an uncertified carpenter to frame your house for you?
July 26th, 2007 at 5:49 am
Great article
If it wouldn’t be so time consuming interviews would be entertaining!
I had one person who put about every acronym on his CV. He did however not even know the meaning of half of them save had ever worked with them.
July 26th, 2007 at 5:54 am
In my experience, the biggest part of the problem is the recruiters. Programmers are rarely so desperate as list skills they hardly possess, knowing they will be found out soon enough. Recruiters however have no such scruples, for them it’s a matter of ‘selling’ a candidate before a competitor fills the position.
I’ve never met a recruiter who didn’t attempt to get me to pad my resume to match the position. The conversation you described is the standard, and as a programmer you have to learn that it only sends one message: “You’re not actually a match, but I think I can sell you anyway and get my commission.” If the company where you are placed figures it out, YOU will be the liar, after all, it was YOUR resume, and YOU misrepresented yourself.
Most forms of certification have so far only made the problem worse. If there’s one thing employers have found out the hard way is that half the candidates with impressive certificates and education can’t code their way out of a paper bag.
July 26th, 2007 at 8:59 am
Sure… You could do that. But still there are very bad engineers out there who are certified. That’s why roads and plumbing break down.
You made me spawn a blog post Comments
July 26th, 2007 at 9:51 am
Great comments, thanks for the responses. I think Rick really nailed something when he commented about the recruiters being a problem. doylecentral wrote a great blog post about his interview process and Joel Spolsky shared some of his techniques. Unfortunately, the burden of identifying good programmers is almost made worse for hiring companies by the recruiting industry, which embellishes unqualified programmers’ resumes in hopes of yet another money-making placement.
I don’t know if licensing is a real solution or not. I do know that the certification process that exists now is just another money making scheme, as others have noted. And the recruiting process mainly helps two people; the recruiters, and bad programmers who get “recruited” for jobs they aren’t qualified for. The good programmers and the hiring companies lose out, because they have to deal with a flooded programmer pool.
So how do you fix that? I don’t know for sure, but licensing for core competency in a field someone claims on their resume might be a start.
July 27th, 2007 at 2:04 am
“Let’s compare this with civil engineering. Most civil engineering jobs require a license.” Not here… If you have the right diplomas (or can claim enough work experience) you can get the job.
It’s the same with programming. If you can show the right credentials you get the job. And any company looking for hyperspecialists either get what they deserve when they don’t do thorough screening or will have to count on needing to do some training of their own.
How would that “licensing” be done anyway in a rapidly changing landscape?
Would I need a separate license to use EJB2, EJB3, Spring, and every other thing I list on my resume?
Or would a single license cover it all whether I used it or not?
If the latter, how would things be different from what they are today (except creating more bureaucracy and increasing cost for individuals and corporations alike)?