views:

1292

answers:

24

In the U.S should programmers be licensed to practice much like electricians must be licensed to practice in the state they are in?

Personally I would be opposed to such an idea due to feasibility and political issues but I am curious what others think.

Thoughts...

I could see some merit to the concept and with software being a mission critical component for so many systems I see the social need for some sort of consumer protection.

I have also discussions with non-programmers about a lack of a programmer "code" (usually in the context of explaining why programmers are not interchangeable commodities)... for example, to my knowledge, electricians need to wire to code and it appears to be fairly easy for another electrician to follow up on a previous electricians work. The same is not true, in my experience, with programmers.

Is there enough peer policing of the industry? Should there be more sites like The Daily WTF?

Does vendor certification provide enough consumer protection?

+12  A: 

This might seem like a good idea, but I cannot imagine how it could be efficiently and practically implemented. Also, programmers generally don't have the immediate risk of causing bodily harm, as is the case of electricians and doctors.

JesperE
The practicality and efficiency issue were my thoughts against it.
Andy Webb
Programmers working on critical infrastructure, can. Or Medical Equipment, Aviation...there are lots of programming jobs which control life or death technologies.
JoshBerke
As for bodily harm.... there is the infamous Therac bug http://en.wikipedia.org/wiki/Therac-25.
Andy Webb
Yes, I know of the Therac bug. I meant "immediate" in terms of being able to kill patients or people by **direct** action, such as severing the aorta during surgery. In the software case, the programmer seldom has that kind of responsibility. Software can be tested before deployment, surgeries cant.
JesperE
Ha! I worked for a company that provided moving object detection software to those traffic light cameras you see now (instead of having the sensors in the road). Talk about causing bodily harm if your screw up. Try turning both lights green!
dviljoen
Everyone seems to interpret what I wrote as "software can't do any bodily harm". Fascinating.
JesperE
@JesperE - Software can't cause bodily harm...the stuff it controls can cause bodily harm. ;-) And, I understand the point you were trying to make.
JasCav
A: 

@JesperE: Engineers mostly aren't in immediate risk of causing bodily harm. neither are accountants, notaries, lawyers, etc. For those professions, in many countries state exams are mandatory to gain employment.

Even London black cab drivers have to pass the exam on 'the knowledge' and have to study really hard for that.

EDIT: added link to the cab wiki page.

Adriano Varoli Piazza
you might want to explain the phrase "black cab driver" for those that have never been to London
Steven A. Lowe
The exam is to protect consumers, who want to be reasonably confident that whatever arbitrary cab answers their hails will be able to get them where they want to go without getting lost. Riders don't have to be able to assess a driver's local knowledge before they get in.
Rob Kennedy
the cost of getting a cab license in NYC is over $100K. Tell me that is for 'local knowledge'. Besides, with modern GPS/navigation units the whole 'local knowledge' excuse is probably even more of a smokescreen
Steven A. Lowe
The cab license system is more a means to limit the number of cabs and protect the "legit" cabbies then to certify the driver. As for accountants, notaries, etc... they all have to work with a well-codified set of laws and situations so it's easy(er) to meaningfully certify them.
Schwern
For those who are curious, here is the Wikipedia article explaining what Moranar meant by "London black cab drivers": http://en.wikipedia.org/wiki/Hackney_Carriage
William Brendel
@William Brendel: thanks. I was going to reply 'What, is Google down?'
Adriano Varoli Piazza
@Moranar: I wasn't going to say anything and just let people think that London discriminates against cab drivers on the basis of race ;-)
Steven A. Lowe
@Schwern: the whole notion of "legit" cabbies is the smokescreen to justify the bureaucracy in the first place. "legit" = licensed, "non-legit" = non-licensed. This is a solution that had to invent a problem, to cover the real reason: barriers to competition.
Steven A. Lowe
@Steven: Argh, right. In Spanish, the sentence I wrote just doesn't parse that way, and I didn't realise.
Adriano Varoli Piazza
A: 

Wouldn't such an action simply be a veiled attempt to stop outsourcing.

So you get licensed by the state or province in which you live. Suddenly to work as a developer there you need to pass their test like the bar exam. This would do more harm than good. Often for unique skills you have to look beyond your city or state because the person with the best skill at what you need might be on the other side of the world. Such an attempt would come at great expense and would harm people who need to hire software services. It would also be a pain for developers because of the need to re-certify etc.

minty
+7  A: 

I have never seen a certification certificate that truly indicated that someone was competent at the task described by the certificate. Certificates usually just indicate the person can pass a test.

Testing programming ability is not easy. This is because programming is not measurable. If programming were a measurable quantity, project schedules would rarely slip. Projects would rarely fail. In practice, projects fail and schedules slip all the time.

The difference between programming and those other fields (medicine, accounting, civil engineering) is that in most of those fields there is an underlying mathematical or scientific reality that is constant. In contrast, programming has the halting problem. No matter how much apply scientific methods to a programming task, when you attempt to run your program, you cannot know it will complete successfully until you actually run it.

The only thing licensing does for programming is put licensing fees into your state treasury and testing fees into the pockets of your state politician's friends who win the contract to administer the tests.

jmucchiello
A: 

Ignoring all the guild type problems the problem with a generic "computer" test would be how can you?

Alot of items in the computer world are art based where you can easy make the case for a different correct way. With electricians you have a bunch of set principles, laws of nature and laws of the state/city that apply and can be tested. In the long ago past, before every vendor stated doing certification, you had some organizations trying to do this and all thier tests came down to requiring you to use their authorized language(s) and being tested on usage and best practices for that language nothing of a generic test that would be required for a pass this or you cannot work.

Will Dieterich
+1  A: 

This is a bad idea. Programming should be fun! For some projects, like space shuttles, the employer should require special certification. But disallow kids to make their own web sites and games, no.

Anyway, profession-wide certification will have such low standards that it means nothing.

Jules
or such high standards - or worse, out-of-date standards - that the whole industry becomes 'black market'!
Steven A. Lowe
+35  A: 

this industry changes constantly, and undergoes radical changes every year or two. no bureaucracy could ever keep up with modern standards, and in fact they would not even try, they would simply drag down the pace of progress, stifle competition, and in general be a disaster. State licensing is primarily a barrier to competition, often hiding behind a 'safety' facade [this is not to say that safety codes are a bad thing, but who says you have to be licensed to follow a safety code?]

taken to extremes, we might see FDA-style licensing for all new 'approved' techniques (while people die waiting for 'experimental' treatments to be approved that have been used successfully for years in other countries)

remember two things:

  1. government is the least-efficient solution for any problem; government is force, not reason, and should be avoided in all rational endeavours
  2. the First Law of Bureaucracy guarantees that any 'licensing agency' will exceed its original intent and become a hindrance within a very short time span
Steven A. Lowe
Duncan Bayne
A: 

Is not a computer science or software engineering degree, a pre-requisite for most of programming jobs, a license itself to write software professionally? I am afraid you are comparing software engineers with more skilled workforce. A better comparison would be with electronic or mechanical engineers.

Ather
since when is a degree a prerequisite? i was writing commercial software at age 16...
Steven A. Lowe
Oh god, don't get me started on the applicability of a CS degree to the workplace. If I had $100 for every hour I've spent retraining a fresh CS grad.... oh wait, I do! ;)
Schwern
The short answer to the first question is: no.
Robert Rossney
+7  A: 

Think of it this way: if there was a "programmer's competency test" in 1960, the entire industry would have been stillborn as only COBOL and FORTRAN experts would have been considered "competent" enough to contribute. Those who had "other ideas" may well have been shut down by agents of the state enforcing the standards created by the COBOL cabal.

Mark Brittingham
i recall an early programmer certification test being all about cobol - when i was learning C++
Steven A. Lowe
+1  A: 

I vote no. Consumer "protection"? More like consumer control. The exercise of power for the sake of it, to generate more opportunities to exercise power.

"Those who torment us for our own good will torment us without end for they do so with the approval of their own conscience.” — C. S. Lewis

I also vote no for licensing electricians. Where I live, it's getting to the stage where I'm not going to be allowed to replace a light bulb by myself without paying either a fine or buying an electrician's license.

I smell a scam - or possibly scamola.

Daniel Earwicker
A: 

No offense to anyone who has responded previously, but IMHO the problem with this kind of discussion is that there are different concepts of "programming" underlying different positions. I am all in favor of higher education, good job interview practices, and students / hobbyists being able to pursue their avocations and self-eduction, however...

Consider an analogy with many trades, from barber and beautician to plumber and electrician, where the standards are different depending on whether one is a "do-it-yourself-er" or "hangs out a shingle" and offers services to the general public. (Of course a similar pattern applies to the professional level, as in e.g. accountants (CPA) or engineers (PE).)

If you are engaging in the task for fun, or for the sake of learning, the severity of consequences are typically lower, and you are the one who will suffer them (e.g. your Christmas lights don't win the contest, etc. Of course in the extreme you can burn your own house down...) But if you offer services to the public, there is typically a greater range of damage that may occur, it will occur to someone else, and that party may not be able to assess your skill level realistically.

So, if you want to change your own oil, by all means please go ahead. But if you offer to overhaul my transmission, I need to see some credentials. Likewise, if you want to put up your own hobby web site, have fun! But if you are going to work on mission-critical information systems, you have the potential of causing economic (or, in some fields, even physical) harm to others. Most professionals I know personally engaged in such work have no problem with providing evidence of their skills and experience. Professional certification would simply be another such credential.

joel.neely
"Professional certification would simply be another such credential" - hardly. Take a good look at, say, the licensing requirements for NYC cab drivers, or for California hair-braiders. These are not ridiculous rare extremes, these are the logical consequences of bureaucratic regulation.
Steven A. Lowe
If I want to pay someone to overhaul my transmission and he doesn't have any credentials, what business is that of yours? It's my money and my car. Licensing is wrong in all of those other trades, too. In the medical profession, it's killing people through restricting the supply.
skiphoppy
@Steven: Any tool, including credentialling, can be over-used or abused. I'm confident that there are many other examples of abuse.@skiphoppy: In one sense, it's none of my business. But in an economy with high interdependence, reliability is a legitimate issue IMHO.
joel.neely
@[joel.neely]: you misunderstand my point. I am not saying that credentialing might be abused, I am saying that it WILL be abused, due to the nature of bureaucracies.
Steven A. Lowe
+2  A: 

Vendor-sponsored certification is primarily for the vendor to earn more money by selling expensive training and exam fees. It doesn't have much to do with whether the holder of a certification is a competent software developer. Besides, the developer could be capable of doing great work, but on a given project, he may cut corners (perhaps due to a client's demands).

For example, I might know better than to store passwords in plaintext, but if my client insists that users can request a password reminder, I may be required to store passwords to support this.

Adding state regulations to license programmers has the same problem as vendor certification -- it doesn't show quality in any given project. We're forced to assume that a worker who holds a license always does his best work.

Instead, software projects that have safety requirements should be subject to independent safety inspections. Software that runs finance, medical applications, air traffic control, voting systems, etc. would each have to prove their quality. But projects that have low requirements for safety would be exempt.

We already do have quality process standards that can be applied to software development, such as ISO 9000, Six Sigma, and others. If developers of critical software were to follow some verifiable quality process and allow independent inspection of the process and the product, that would probably be more effective than licensing or certification.

Open-source is another means to allow transparency of software quality.

Bill Karwin
I work for an ISO 9000 certified company. It's not much of a standard. All it means is that the company has documented its processes and runs those processes as documented.
RobH
Yeah, I know ISO 9000 merely says "you must have a process and you must follow your own process and document it." But that'd be a great improvement over many software projects today!
Bill Karwin
+1  A: 

Socialism is wrong in principle and has never worked in practice. This is true both in general and as applied to one profession at a time. The application of socialism to the field of computer programming will only retard the growth of the profession and, if the degree of socialism is large enough, will actively destroy the profession.

Justice
licensing and socialism are not the same thing, but +1 for a good libertarian rant nonetheless ;-)
Steven A. Lowe
A: 

I think programming licenses should exist. Only a small minority of programmers would need them, though.

Languages would have nothing to do with it, the issue is fail-safe design.

I would require a detailed code review/signoff by such a licensee for any code with safety implications. The issue is not ensuring it's bug-free, that could never be done. The issue is ensuring the code is written to minimize the possibility of failure and to minimize the consequences of failure.

Loren Pechtel
Why the downvote? I'm worried about things like one I had to stop--someone rewriting a control for a saw and putting the e-stop on the computer screen instead of a hardwired button.
Loren Pechtel
and do you really think that a state-sponsored license would have prevent this mistake?
Steven A. Lowe
His clarification/branching about code reviews and signoffs is on topic, though.
Adriano Varoli Piazza
Yes, licensing would have ensured that someone with an eye towards safety had looked over how it was working. It was pure chance that I saw what was going on and was able to stop it, nobody else saw the danger.
Loren Pechtel
How would you decide whether a given bit of code had safety implications?
Daniel Earwicker
Code has safety implications if it directly or indirectly controls something whose improper operation could be dangerous.
Loren Pechtel
+9  A: 

Licensing is an immoral and criminal way of protecting entrenched interests and has detrimental effects for civilization.

The proof is completely out of scope for Stack Overflow, being firmly grounded in economics and ethics, but if you want to start studying it, start here and move on to:

(If you'd like a kindler, gentler introduction to economics before digging into the harder stuff toward the end of this list, you can try this textbook. All of these are also available for sale in hardback from the store on the same website where these free versions are available.)

If you think licensing is great, then you should market yourself as licensed and/or your licensing program, demonstrating the value to people and persuading them that they should accept someone licensed/certified over someone unlicensed/uncertified. If you can't persuade people of that in a peaceful way, then using the force of law to require them to hire only licensed people is nothing more than being a bully. In the end you are taking people's liberty away at the point of a gun.

I close with a quote: "It is no crime to be ignorant of economics, which is, after all, a specialized discipline and one that most people consider to be a 'dismal science.' But it is totally irresponsible to have a loud and vociferous opinion on economic subjects while remaining in this state of ignorance." People who haven't studied this kind of information ought not to have the power to make these kinds of decisions. In other words, the general public is ignorant and shouldn't have the power to force crazy ideas like licensing onto others, taking away their freedom and prosperity.

skiphoppy
Facility with libertarian ideology is not intrinsically different from ignorance of economics.
Robert Rossney
@[Robert Rossney]: i would quote you on that, but Rothbard makes more sense.
Steven A. Lowe
A: 

For safety-critical applications, ABSOLUTELY. Otherwise, it's not the best of ideas.

TraumaPony
certify the safety-critical applications, not the programmers that write them; certified professionals can still make mistakes!
Steven A. Lowe
Certify both, of course.
TraumaPony
Not. Certifying the application is valuable and might - MIGHT - prevent a problem. Certifying the programmers adds no value, for all of the reasons listed above.
Steven A. Lowe
+5  A: 

My wife is a licensed professional in a field that changes much less rapidly than programming. From what she and I can tell, professional licensure is just a means of restricting competition---there are special courses for the licensing exam, these courses cost hundreds or sometimes thousands of dollars, and the questions have nothing to do with what you actually need to know to be a successful practitioner. Considering what I know about other standardized tests in computing (AP exam, GRE subject test), I'm terrified at the very thought of state licensing exams for programmers.

Norman Ramsey
+6  A: 

Can we make VB coders wear stars? :P

Quibblesome
I admit it, I laughed
PhoenixRedeemer
Too soon! But +1 :P
Craig P. Motlin
A: 

To me, telling someone they'd have to get certification to program is like telling someone they have to get certification to draw or write. Whether you want to call it a skill or a talent, I find it more akin to an art-form than anything else. It's something you can reasonable learn to do from top to bottom on your own if you have the aptitude. Certifications would only serve to slow down or stop people.

I find it unlikely that requiring certification would get rid of bad programmers either. Being able to answer arbitrary questions on a test is in no way indicitive of how you will perform on a day to day basis in various types of projects.

PhoenixRedeemer
A: 

No. Licensing would lead to the formation of unions, and I do not see development as something that should be a union job. I do not want to have to give anyone any more of my paycheck than I already do.

If there is some sort of niche market where it makes sense based upon the industry, than that should fall as a responsibility with that industry to decide. I do not think an "across the board" sort of approach to this is either feasible, or productive. I already have a hard enough time getting rid of dead weight. If you license them, and potentially make them unionized dead weight, I could see being stuck with sub-par employees out of fear of union retribution.

joseph.ferris
Did you mean to say you don't see development as something that should be a union job?
Scottie T
I did. Thank you and corrected!
joseph.ferris
+3  A: 

I know the bridge analogy is really worn out, but bear with me for a moment here...

Civil engineering has the concept of a "Professional Engineer." Civil engineers are not all licensed professional engineers. In fact, most of them are not. A significant structure that could pose a risk if unsound is probably designed in part by engineers that are NOT PEs. But a PE has to review and sign off on the final design. Something similar could be implemented in software engineering for certain critical applications. The majority of software projects would not require licensing.

A number of people here have said that tests and certification would necessarily impede progress. I disagree. Programming is not about the language you use. Assembly, COBOL, C, C++, Java, and C# require adherence to many of the same basic principles, and the principles do not undergo constant dramatic change. There are known "good/best practices." A given algorithm will work the same in just about any language. Also, despite what some people here seem to think, software can be effectively validated (Ada, anyone?). And before somebody complains "but the spec can be wrong too!" I'd like to point out that the same thing is true of other engineering disciplines that already have certification.

Civil engineering does not stand still either. New materials are continually being developed, as are more effective methods. New code books are produced on a pretty regular basis. And if software engineering moved so much faster (like everyone claims) nobody would ever be able to get anything done because each new version of a library would break compatibility.

EDIT: One more thought. If our industry undergoes such dramatic change all the time, why is one of the most recommended books on SO Mythical Man Month? It's not a recent title. And MMM isn't the only example of an oldie-but-goodie.

Steve S
The comparison between civil engineering and computer science is flimsy at best. For one thing, civil engineering has hundreds of years of trial and error behind it, and is supported by materials science, physics, geology, et al. CS by comparison is the village idiot doing odd jobs. ;-)
Steven A. Lowe
The analogy works just fine for this purpose. It's a matter of design, product quality, and most of all accountability -- all of which matter in both fields.Even if it isn't "hundreds of years," CS does have an established history. CS is supported by plenty of math and science as well.
Steve S
Steven A. Lowe: Software engineering != computer science.
TraumaPony
I agree. Critical applications should be somehow licensed, which may involve a couple of programmers sign off something.
ilya n.
+2  A: 

No. As others have pointed out, requiring licenses that are issued by a government bureaucracy to program would cause the gears of innovation and progress to grind to an awful, screeching halt. If licensing were required of individual programmers, it would also have to be required of software companies. This could be catastrophic. Open source software would no longer be viable, because how do you license (more specifically, how do you hold liable) a group of volunteers? Commercial software companies would be handcuffed by their duty to hire licensed developers when searching for new programmers, and it would be difficult for recent graduates to obtain work.

Scottie T
A: 

If only to perpetuate the idea that not everyone who knows Java knows how to make elegant applications.

A: 

Anyone against insisting programmers having a degree and be licensed there after are just those to lazy to go to college.

College does not teach specific implementations but how the underlying systems work and as such someone can pick up and learn new technology with much ease.

I go so tired of having to debug all the Microsoft Certified programmers code because they have no idea what goes on behind the scene. If you asked them to convert a decimal number into Hex or Binary they would just look at you stupid. And these are the people writing the code that operates things like hospital equipment.

But to be a barber you need a license.

Anthony Mathews