Fog Creek Software
Discussion Board




Certification/Licensing for programmers

I graduated with a computer science degree in 1999. When I was graduating I thought it odd that my friends in Engineering had to take a certification exam (much like the BOARD exam for lawyers or Clinical exams for doctors/pharmacists/etc) and I did not.

After graduating I went straight to contracting since I had already been contracting during college and did not like the idea of 9-5 M-F. The money was good, the market was good, there was tons of work available. The funny thing was I would be working with other programmers that had NO formal training in Computer Science. I worked with people that had backgrounds in Chemistry, English, Military, Medical, you name it, they are out there. And most of the time their code reflected the lack of training. I am not saying all, but MOST of the people without formal training did not structure their code properly, and turned out bug-ridden software that was sloppy and slow.

I know the market was in need of programmers, but a lot of these people had no business writing software. I was not complaining though, because I was making a killing cleaning up their mess. But I couldn't help wonder why these people were hired in the first place. Here are some of my thoughts:

1) Poor interviewing (see The Joel Test)
2) Immediate need for "warm bodies"
3) No formal system for ranking skill levels.

Lets look at item 3. Yes there are tests to rate you in one area or another. But  if there were a system in place where ALL programmers were  tested after exiting College, and were licensed to practice, wouldn't this go a long way in setting new standards in software?  I know this is where Oracle, Microsoft and everyone else is making a lot of money with "Certification" test and books, but I don't think this is enough.

We have seen how poor design can lead to security problems, lost revenue, loss of life, etc. Why do we not consider software to be as important as a bridge, pack of pills, etc?

I am interested in you opinion. Do you think programmers should be licensed/certified more than they are now?

Jason Poteat
Monday, February 18, 2002

Jason - We've covered this topic about 5 times in this forum.
Maybe you could check out some old threads.
Nice to see people with 1 years experience having so much knowledge.

Cheers,
Tony

Tony
Monday, February 18, 2002

I have always found Tom DeMarco's arguments very compelling:
[ http://www.systemsguild.com/GuildSite/TDM/certification.html ]

I will add this argument:  Software development is far too young now.  Certification would create Methodologies and Ways of Doing Things that would strangle this infant field.  When we finally say, "All right, we now know all there is to programming," then we can make certifications for it.  Before then, I think it's possibly even contrary to the entire spirit of personal computers.

Art Vandelay
Monday, February 18, 2002

Well, I don't think this is possible.

I agree with you 110%: It's a good idea. I just don't think it can be done.

Look at the different professions (and pray for my formatting...):
  * medical: The doctor can do procedures XYZ without killing the patient.
  * Engineering: He can build a building/knows the right equations/etc.

Now look at programming: he can, err.... write a quicksort? Implement a B+-tree? Data structure based knowledge is meaningless: you usually use a package anyway, and its the connection with the real program that makes a bigger difference anyway.

So we test them on say, can they make a word processor? Well, they can't, because if they could, they WOULD have, and taken MS's monopoly :). "Application development" is what is done most, but at the same time, is such a nebulous and vague and wide-stretching catagory that it is meaningless.

The thing is, the primary aspect of computer programming is problem solving: solving the customers problem. This problem solving process I can't see a way to test: i.e. they can solve problem XYZ, but, given problem ABC, can they solve it? Maybe, maybe not. And if they do, is it an elegant, understandable,  bug-free implementation?

There is no quality or skill that I can think of beyond "I've read 'Learn C in 2^4 usecs' and mastered it" qualification which can be easily, quantitatively tested.

Good luck ;)

Mike Swieton
Monday, February 18, 2002

Since code is fundamentally speech, any sort of "license to program" is really a prior restraint on speech.  And that just won't fly.

Also, the majority of the best software developers I know (a) didn't graduate from college or (b) didn't graduate from college with any sort of specialization in software development.

Forcing these people out of software development by making it illegal for them to write code will do far, far more damage to the industry than the continued presence of incompetent people in the field ever could.[1]  Especially since there are better ways to weed out the incompetents, such as better interviewing, portfolio evaluation, etc.

  -- Chris

[1] The one exception is in life-critical systems.  I wouldn't mind seeing some sort of licensure there, but that's a really narrow category.  It absolutely should *never* be possible for someone to be arrested or fined for writing any other form of software.

Chris Hanson
Monday, February 18, 2002

Actually, let me offer a constructive solution I just thought of.  Software itself, not the programmer, should be audited.  Test suites, process examination, proofs, etc.  That actually happens with the military ratings for operating systems.

The problem with bridges is that it takes so much cash to build one, and once it's built, it's built.  Same with surgery.  In these cases, there is no "end product" to test before it's released.  But with pills, I don't think the individual researchers are certified, but instead the FDA tests out the drug.

Art Vandelay
Monday, February 18, 2002

As a self-taugh programmer (Biochemistry, not CIS) I admit to being pretty sloppy initially.  One problem I think is many self-taught programmers start programming in a language like Perl that doesn't enforce typing and isn't as naturally object-oriented.  It's taken me a couple of years getting over my Perl-habits. 

But I'm wondering, has anyone done a study to see if "Sun certified" Java programmers can actually program "better"?    I'm not a big fan of *mandatory* certification-because as someone mentioned in an earlier thread-we're not brain surgeons, no one's life depends on us.  Also, some of the most brilliant coders (and some of the worst hackers also) I've met simply went from their senior year of High School to the work-world.

razib khan
Monday, February 18, 2002

Answers all over the map on this one...

The viewpoint  that theoretical knowledge "isn't useful" is wrong-headed.  To say you only use a package for data structures doesn't mean you understand how to use that package effectively, or even choose the right package.  When should you NOT use a quicksort?  When should you use a B+ tree?  If you don't know the answers to these questions, how can you expect to even select a package to handle your data structures?  I wouldn't expect any developer working for me to regularly write their own sorting routines, but I'd expect them to be able to if asked.

And I say all this as someone who has relatively little formal training in software, just 20 years of hard-won experience.  Indeed, this is the real reason why demanding formal training isn't the best way to go right now.  In 1972, the number of schools offering a degree in CS could be counted on one hand.  In 1982, perhaps on both hands.  40 and 50 year old programmers aren't useless just because they could only get a degree in some other field.

Software also regularly requires domain knowlege that's outside the strict field of CS.  Anyone can USE a bridge, but not everyone can use a gene-splicing program.  Lots of engineers have been taught how to build bridges, but I'd expect every engineer that built a gene-splicing program was self-taught in at least half the job.  The ability to continually learn new things is much more important in writing software than it is in most fields, and that's a skill I've never seen a course in at any university, or on any certification test. 

James Montebello
Monday, February 18, 2002

Wow.

Saying that we need to license people for "programming" in the year 2002 is like saying we need to license people for "industry" in the 1800's - the term is just far too broad.

First of all, you have to define programming - is a DBA who occassionally writes stored procedures a programmer?  Is the guy who only does GUI a programmer?  To a grizzled C++ vet, is someone who writes VB a programmer, and vice-versa?  Is building a web site with Front Page programming (after all, you're generating code)? Is building a Word macro programming? 

You may personally have quick answers for all these questions, but there are going to literally thousands of people whose input will be needed just to defne the terms "programmer" and "programming".

You know...thinking back, I see I was wrong.  The first step is NOT to define the terms.  Truly, the first step is to select people to define the terms. 

Wow.  This just got a lot more complicated.

And it's not going to get any better from there.

The reasons engineers and doctors and attorneys have to get certified is because they can cause grievous harm to the populace if they are not up to snuff on their stuff.  A bad lawyer can end up getting his client imprisoned (or worse, executed!) wrongly.  A bad doctor can kill his patient.  A bad engineer can kill hundreds with a flaky bruidge oir building design.

A bad programmer?  He can cause a lot of headaches at worst.

It's a bit of a conceit to think that what we do is critical require to warrant certification/licensing.

Before you think me in the "anti-certification" camp, let me say this; certainly certification is better than no certification, but REQUIRING certification is not a slope we want to attempt to negotiate.

Norrick
Monday, February 18, 2002

You'll find a lot on this subject in Steve McConnell's 1999 AFTER THE GOLD RUSH. McConnell argues that professional licensing for software developers is both inevitable and desireable, and draws many parallels with the licensing of professional engineers, which started after engineering disasters became too-often fatal. The more bad software we see, the more likely professional licensing becomes.

Everyone from jockeys to hairdressers needs a license from the state. We won't be immune forever.

Mike Gunderloy
Monday, February 18, 2002

Let's just keep perspective though.  In the 19th century a some "doctors" were smart guys that bought some books on medicine when they went to the book city.  By the early 20th century that stopped and they had to have college degrees.  Now doctors have to have 4 years post-college at *AT LEAST* 2 years residency, more likely 3-7 years.  Similar sort of thing happened with lawyers.

So yeah, it's inevitable.  But how long has software programming been a "profession."  I'd say a generation and a half.  We've got a ways to go. 

razib khan
Tuesday, February 19, 2002

One more thing.  A note of caution from a libertarian perspective (yeah, perhaps I'm a crank, but hear me out).  In my opinion Doctors and Lawyers are basically cartels.  90% of legal stuff & medical stuff legal assistants and nurses can handle-but a doctor or lawyer still has to sign off and so they charge us $50-200/hour.  In most states (all perhaps?) it's illegal to give medical or legal advice without certification.  This has some merit, we don't want quacks all over the place. 

But there is a downside in terms of cost.  A lot of poor people could probably have more affordable medical care and legal advice the supply of services wasn't artifically restricted.  I bring this up because I remember a case where a guy was giving legal advice to people in a trailer park and charging them like $10 a pop where otherwise they wouldn't get any.  They arrested and fined him and threatened to put him in jail.  He just had a *huge* collection of legal books to draw upon.  When I was a kid and my family went in to talk to our immigration lawyer, I remember the guy stopping all the time to look something up in the books....

razib khan
Tuesday, February 19, 2002

Certification?

Certified by Whom?

That is the real question.

Tony
Tuesday, February 19, 2002

"certified by whom?"

Why, Microsoft, of course. Who else writes stable enough, robust enough code to judge everyone else's coding abilities...

Katie Lucas
Tuesday, February 19, 2002

A one-size-fits-all certification for programmers is a bad idea. There's too much to test and lots of it isn't at all relevant to an individual programmer's job. Trying to create a single license would lead to a situation where one had to spend lots of time studying things that were only useful for the test.

Platform-specific certifications are much better. Sun or Microsoft or whoever can say "we've created a test that you can take to demonstrate knowledge of this clearly defined list of skills." I can choose the tests that are relevant to my job and decide to take them. An employer can look at the certifications on my resume, look at the clearly defined list of skills published by the certifying organization, and use that information to decide whether or not he wants to hire me.

The organization that does the certifying doesn't have to be the platform vendor, but it sort of makes sense. If you're going to spend millions of dollars on Oracle database software, you can probably trust them to assess someone's knowledge of that software. If not, why are you giving them millions of dollars?

Still, even very specific certification exams only have so much value when it comes to hiring people. You can ace 100 multiple choice tests but if you can't be bothered to comment your code then I don't want to work with you.

Beth Linker
Tuesday, February 19, 2002

Mass developer certification is just one step closer to unionizing.  "Hey - if I went through this, so do all my co-workers."  Is this what we really want?

Justin Credible
Tuesday, February 19, 2002

I think some of the confusion here is that two different types of certification are being brought up as examples. 

1. Doctor/lawyer/hairdresser.  License given by the state attesting to the fact that you have a certain level of knowledge in a given area.  Everyone wanting to work in these fields must pass their exam before they can call themselves a ________________.


2. Professional Engineer.  (I'll use civil engineering as my example because my dad is a civil engineer and I used to work at a civil engineering firm.)  You can have a life-long career as a civil engineer without ever becoming a PE.  A PE has educational requirements and has passed a series of exams during their professional career, with the final exam coming after 10-15 years experience.  You also have to have letters of recommendation from other PEs attesting to their knowledge of your competence.  The exam is 2 or 3 days long.  My dad is now retired but still can get going about his final exam which involved designing a drainage system for an airport.

But, unlike lawyers, where everyone has passed the bar, there is usually only one PE of record on a project.  So, the junior folk do most of the work, but have to get a senior person to sign off on it.  And because their license (and malpractice rate) is on the line, the senior folk tend to carefully review things.

Note:  a license is what creates malpractice.  A person who has passed a given exam is legally assumed to not screw certain stuff up.  What will drive programmer licensing is when the shrink-wrap licensing absolving software companies of all legal liability for their code is abolished.  Software companies will have to buy insurance.  Insurance companies will demand to have someone legally accountable for the quality of a software program.

That said, PE style licensing is clearly what is needed for software, but will legislatures and customers understand that?  “What do you mean everyone on this project isn’t a PE?” It could also build a job market for folks beyond the current 3-5 years of experience “senior” programmer.

Mary
Tuesday, February 19, 2002

Usually people assess the credentials of the *company* which produced the software, not of the programmer.

People do 'due diligence' before choosing a software vendor.

Sometimes the companies are more-or-less 'certified', e.g. via ISO9000 or similar.

In any case, responsibility for the software and its quality is usually distributed ... e.g. it involves development, and QA ... so it is IMO more the responsibility of the company as a whole, than of individual programmers (for example I unit test my software, but to what extent am I personally responsible for its behaviour under system test and integration test) ... and as such it makes more sense IMO to 'vet' the companies than the programmers.

A company will have its own policy re. what qualifications etc. it expects of its staff.

Christopher Wells
Tuesday, February 19, 2002

Interesting link:
http://www.computer.org/certification/
Certified by IEEE sounds better than MS or RedHat.
I haved looked at some of the proposed requirements. This ain't gonna be easy.

Doug Withau
Tuesday, February 19, 2002

In reply to:

==
Why, Microsoft, of course. Who else writes stable enough, robust enough code to judge everyone else's coding abilities...

Katie Lucas
Tuesday, February 19, 2002
==

Ok...haha...I've never heard that before.

When will this joke get old?
It's so easy to rank on microsoft programmers, but I see tons of crap code everywhere.

The funny thing is,  most of the people that rank on Microsoft couldn't even get hired there.

Get Over It
Tuesday, February 19, 2002

Still,

Perhaps if Jasons Certification had been around 20 years ago, then that college dropout William wouldn't have been let near a computer.

America's largest company would be a proper, qualication/status obsessed organisation likes the fine establishments we have here in Britain.

Ged Byrne
Wednesday, February 20, 2002

MS hires 2.5% of applicants according to FORTUNE.

razib khan
Wednesday, February 20, 2002

*  Recent Topics

*  Fog Creek Home