greenspun.com : LUSENET : Joel on Software : One Thread

What do you think about certification of programmers?

-- Anonymous, November 04, 2000


This is rather timely: I have to write an essay about this topic for my software engineering class.

As long as the certificaiton isn't run by the government, I wouldn't have a problem with it. But I don't think certification could work. To have any lasting value, it would have to be extremely high level (tool agnostic). Otherwise, the certification test would have to be changed every 2 years, to update it for the latest fad.

One of the arguments in my readings for this essay says basically: "All the other engineers are licensed, software engineers should be to." But when you think about it, I'm not sure it makes sense. Engineers work with discrete quantities. They know steel can stand this much shear at this temperature or that concrete has a certain tensile strength. There is no such measure for code, because we write the code ourselves. Because of this, I would argue that programming is fundamentally different than engineering. Of course, I'm not arguing that software development shouldn't have a process. But has there ever been a project where the developers understood the pieces of the program as fundamentally as an engineer does?

Maybe we just need to stop calling ourselves software "engineers".

-- Anonymous, November 04, 2000

Why not? Hasn't the certification of other professions yielded positive results overall for society? Teachers, bus drivers, police, nurses, doctors,etc... all carry a professional certification that entitles them, if not to a job, to the right to apply for one in the field of certification.

Of course, exceptions would be needed for those in the minority who demonstrate competency without certification. For example, there are now two million school aged kids being educated at home in the United States by their parents and on average, they score significantly higher on standardized tests than their peers who are taught by certified teachers. (After accounting for all the demographics...) Most of these parents are not certified teachers.

To a large extent our economy depends on the structure that certification provides. Certification keeps people contributing to society in those areas that they are most qualified for and it prevents companies from hiring too many unqualified individuals.

-- Anonymous, November 04, 2000

Pedigrees are for dogs, not for people.

It's a funny thing - I've interviewed people with CS masters degrees from prestigious universities with Java, Microsoft and Oracle cerification who couldn't put a well-formed line of code on a piece of paper if their life depended on it, nor could they analyze the tradeoffs of one particular approach to solving a given problem. At the same time, I've had great experiences with architects and musicians who have stumbled into programming as a career.

So I have to wonder: what can a certification process measure that can determine if someone is a great programmer?

-- Anonymous, November 05, 2000

It's not what you know...

I agree with Cameron.

It's not what you know, it's how you apply what you know.

I don't see what problem certification would solve?

-- Anonymous, November 05, 2000

I'm absolutely agree with Joel. I'm a teacher of software engineering in a Comptures science career in Spain.

My experience is that some people who gets the title (the certification) is less capable of doing good programs than other students who know a lot about programming but they are boring with the "official" stuff.

Sometimes seems that certification is a toll you must pay for doing someting, not the way to get better professionals.

I think that would be better to have the students in the school until we know they are good programmers and some students may get the title in a few months and others may need years.

In the future we need to be more flexible, not more rigid.

Thank you for this opportunity and sorry for my english ;-)


-- Anonymous, November 05, 2000

I'm not certain that certification would solve problems, but these problems need to be addressed. The software industry has grown out of control. The more dot-coms that fail, the harder it will be for a potentially great company to get funding in the future. Don't think Wall Street will regulate; if the software engineers don't regulate themselves (as doctors and lawyers have), they/we will feel the damage. This only benefits the already big players.

I don't think a mandatory certification could work (as in law and medicine), but as a manager, I'd be more inclined to interview someone that had passed a voluntary competency examination that another candidate had not. And I think it could do a lot to clean up the software industry without holding back 18 year olds capable of Napster or the like.

-- Anonymous, November 05, 2000

I agree with Mr. Moritz that this is an issue that needs to be addressed. While certification is not the best solution, it's still better than nothing.

As programmers, we are not that much different from artists; we create something out of nothing, and we enjoy the process and the result of our creations. While there are already numerous standards and procedures to solve many design and implementation requirements, in order to compete and, sometimes, for the sake of self- satisfaction, we seek better and different ways to produce our software - hence we need to be creative. And you can't certify creativity.

On the other hand, we also need to consider this issue from the users' perspective. To a lot of users, software has become a vital , and in some cases even life-depending, tool for their businesses. Shouldn't these people deserve some kind of assurance, that the tools that they use are from companies with designers that have achieved a certain level of expertise? If we wouldn't buy cars from manufacturers that we know their engineers are not certified, why should software programmers be the exception?

Certification serves two purposes: 1. you have acquired a satisfactory level of knowledge in a particular field; 2. through the training and education to obtain the certification, you've gained intelligence (or experience) in solving a certain level of problems. And it is the level of problem solving capabilities that is most valuable, sometimes more than the knowledge. Certification is one way to provide that assurance.

Yes, there will always be cert holders who write irresponsible and crap software, and there will always been young, bright genius who can write revolutionary software just by reading a "teach yourself XXX in 21 days" book. But how many of us fall into the latter category? I know I'm not one of them (I hope I'm not in the first category either)

Cerification is not a guarantee for satisfaction. But without it, we could be much better off or much worse off, ie. no reliability.

I think an industry-defined certification system will be much better than a corporate defined system, which can be subjected to profitability over reliability.

Sorry for the long whining.

-- Anonymous, November 05, 2000


As other people have mentioned before, certification tests are specific to the current state of the "art", so the value of a certification degrades really quickly.

There is one good thing about being certified - it shows that you're able to learn a bunch of new material and answer a bunch of questions correctly based on that material. In other words, it tells your potential client/employer that you have the capability to memorize things and recall them when provoked. You may have the kind of game shows in the States where the contestants watch a short video clip and afterwards are asked questions like what color that specific guy's tie was, or how many glasses of wine were on the tray, or something. I think all certifications are about the same thing: Paying attention to little details, and memorizing them. And that's obviously a useful skill.

There are important characteristics of a good candidate that certifications do not attend to at all: Dedication, always striving to becoming a better professional (whether it's driven by competition or curiosity), loyalty/trustworthiness come to mind.

The only reason I'd consider getting certified is to look better on my resume. I'm currently an independent consultant without too much money to spare, and since nobody has required it, it just hasn't seemed worth the time and money. However, I'm moving to Austin next month, and I'll be hitting some job interviews soon. I guess the poor interviewers will just have to rely on "fuzzy" factors such as my previous work record, letters of recommendation, product/code samples, knowledge about fundamental data structures, the interviewer's ability to ask the right questions, not to mention the unmeasurable "hunch", which I think is a pretty heavy weight on the hire/no hire scale in a lot of hiring situations.

-- Anonymous, November 05, 2000

There is a lot of confusion about the whole certification issue.

First of all, certification of software engineers does not imply certification of programmers. Although they may share significant overlap in responsiblites, it is very similar to the role between an engineer and a tradesmen/technician. Even if both are to be certified, the requirements would be quite different.

On Software engineering certification: I believe (based on articles I have read) certification of software engineers would asses a person's knowledge and understanding of software engineering principles. This would probably include understanding of development methods, management, programming paradigms, QA, ethics, etc...

Of course even this type of certification does not provide any indiciation of a person's ability to solve-problems, program etc. (as other have complained about existing certification programs) but it does demonstrate that the person is competent in s/e practices.

I can't see how this would exclude or alienate anyone especially given the seperation of roles between software engineers and programmers. Furthermore, a lot of material products we use were probably not designed with the assistance of a PEng, but many are. On the same note, not all software development requires professional qualifications.

Of course, all this discussion about certification is very premature, as no-one can really agree at-all on what the fundamentals of software engineering are, or what the best practices are either.

Despite the young age of the soft. eng. field and lack of agreement on principles, certification is extremely important and in the long run, inevitable.

Right now we have it easy...look at any software license and compare it too your toaster's warranty:

software: if this doesn't work or screws up you are S.O.L. toaster: if this doesn't work or screws up, we will fix or replace it.

Considering the proliferation software into our lifes and advancment of technology, it is only a matter of time (I hope) before the FTC. mandates that software providers must warranty their software the same as other consumer products. Certificaiton of software engineers will follow quickly to ensure the liability of the company is reduced.

-- Anonymous, November 05, 2000

Why so much software sucks

I find it interesting that a majority of postings in the forum argue that software is of poor quality because of engineers' inability to create quality software. I submit that market factors are really to blame, and not producers of software products. When buying office applications and operating systems, customers do not place a premium on usability or quality; they are looking for features.

Everyone gets annoyed when Excel crashes calculating a formula, or when it takes all day to install a new video adapter, but people are adaptable and get jaded easily. Users learn to route around parts of a program that crash, and cope with the fact that plug and play isn't. (A wise colleague of mine said: If plug and play actually worked, it wouldn't have a name.) As in presidential elections, we vote with our pocketbooks, and we dish out the dough again and again to get software as soon as possible with more features, at the cost of more bugs and more bloat.

Does buggy bloatware happen because engineers lack ability? No! When customers demand quality, they get it. Tell me the last time a game you played on the Playstation crashed! Today's games are every bit as complex as modern desktop applications, in fact, they do even more dangerous low-level tricks to eke out every last cycle of performance, but gamers demand games that do not crash, and refuse to buy games that do. Show me the last time someone had an automobile accident because of a failure in the on-board computer! Drivers would not buy cars with software that made them unsafe at any speed.

Does this mean that engineers that work on games and embedded applications are better than those at Microsoft? I doubt it. The economic realities in which game companies, airplane manufactures and Microsoft exist are different. For a given software project, better usability and fewer defects increases cost. It is often worthwhile to pay that cost, with control software for a 747, for example. Other times, when customers do not place a premium on quality, usually learning to work around obvious problems, there is not sufficient return on investment in fixing beyond a certain threshold of bugs. It's a better use of time and money (and sometimes a fiduciary obligation) to ship, sell some product and start working on the next version.

So, if you're looking for someone to blame for shoddy software, don't look to the developers; don't even look to the managers. Look to the mutton-heads who watch spoon-fed fluff on television, stand in line at Starbucks, and fork out the bucks to buy marginally serviceable software.

Whew! Enough ranting for one night.

Cheers! -C

-- Anonymous, November 06, 2000

I think certification of programmers is well-intentioned, but is squarely aimed at the symptom instead of the problem.

Besides, certification already exists for certain scenarios (MCSD and the like). Granted, these kinds of programs are actually vendor- specific, but they serve a purpose. The same kinds of people who might want programmer certification are probably already using something like MCSD in the management of their "human resources".

If a formal system for certification of programmers did in fact exist, my company would probably ignore it. In some cases, we would view certification as a negative.

-- Anonymous, November 06, 2000

Let's make a distinction between certification and licensure.

Certification says that I've passed some exam for some body of knowledge. Firms like http://brainbench.com/ are creating and collecting tools to assess your knowledge. Others assess your skill at applying that knowledge, often through case studies where you solve real world problems.

Certifications have value for employers: Job interviews have no better ability to predict your ability to successfully do the job than the flip of a coin (I can point you to the research). Each cert stands for a chunk of knowledge where I don't have to trust a candidate's assertions or my own expertise. I have some evidence instead of my own incredibly fallible interviewing skills.

Certs also have value for workers in a labor market: Certs can separate you from your rivals for a gig and can improve your market rates.

There are limitations (well described previously) but the trend is very much to spot certifications for specific knowledge, skills, and abilities (KSAs).

But what about licensure? I think that is what McConnell has been articulating.

Licensed professionals designed the bridge you take to work, architected your house, verified the plane you took would fly, performed your surgery. What are the minimum KSAs you'd want before you trust your life and the public safety to someone? When defects can maim, kill, start wars, spread disease, crash markets, unleash nanoplagues, cripple companies?

There is a role for licensure above and beyond certs; cerrts were created for the convenience of the labor market. Licensing puts a public control on who can practice and perform certain commercial acts that affect the public. It creates a usually well-founded trust for its carriers. However sleazy, the lawyer had to survive a rigorous bar exam at least once. This is more challenging than licenses for notaries public or certs for paralegals, the other folks who practice some parts of the law. Specific activities are reserved, within a profession, to those who are licenseed. This is why we are able to disbar lawyers, uncharter an accountant, and relieve a doctor of the ability to practice medicine: to protect us from those who can cause injury through incompetence.

I won't claim to know what elements should comprise a professional software engineering exam, what tasks should be reserved to those so licensed, or the process for license renewal, but I believe it is the right direction.

-- Anonymous, November 07, 2000

By creating mediocre educational targets like 'Certification' all that is achieved is that almost anybody with some spare time can claim to be 'certified'. Engineers, Doctors, Lawyers, etc do not get 'certified' as a result of silly short courses that teach the current flavor of the month. The are certified as a result of years of study, exams, and finally, qualifications.

Certification is the lowest possible form of qualification.

-- Anonymous, November 08, 2000

I would hardly call the bar exam or medical board exams "silly short courses that teach the current flavor of the month". And I'm not suggesting we need examinations that prove you no how to use DCOM or Java. However, I think it would be possible to have an exam that proves someone knows fundamental things about software engineering.

Because software is available to anyone - an 18 year old has probably even better odds of coming up with something creative and innovative than someone with 4 years undergrad and a masters degree - a certification exam is even more important. I'd be willing to be every reader here has met someone with a 4 year degree, or for that matter a PHD, even, and still "just didn't get it" when it comes to software. I think it would be nice if there was an exam that tried to annalyze if someone really understood it or not.

And because I'd be afraid of it being a test of the "flaver of the month" - I'd advocate it not be like any flavor out there. In other words, create a new language with new operators (obviously somewhat simillar to existing languages, but much simpler, as people are seeing it for the first time in the exam) - to solve basic problems. Some of the more interesting interviews I went on asked problems like this.

-- Anonymous, November 09, 2000

I've read After the Gold Rush, and I would have to agree with Steve McConnell.

It is *when* software developers are certified, not if.

Why certify?

Which software developers would you want Ford to hire? Hot shot cowboys, or certified software engineers. Travelling at 120 kpm down the freeway I want the software in my car to function correctly. Period. I don't want any fancy tricky impressive code from some 3AM caffiene fed coding frenzy sitting in my cars operating system.

Now certification is *not* for all software. Just as you don't need certified builders to construct a dog house, or a doctor to get headache medicine, you won't need all software to be designed by engineers. Home applications, games and such need not be developed by engineers. The crux lies in what's at stake during the use. If failure of a product or service can kill people, it is best to ensure that the best trained people work on it, and that there is a standard for what level of expertise is expected. (You wouldn't likely want a general doctor to perform brain surgery (even if you could find one willing to do it).)

Certification isn't only about passing coding tests. The engineers would follow a code of ethics which places the public before the engineer. The engineer is morally bound to expose project flaws which endanger lives or safety. Is this good? Maybe unneeded for a spread sheet, but an X-ray machine is no place to perform drastic cut backs on testing or design which pose potential threats to safety.

What about coders too old to go back to school?

You're never too old to hit the books, but the Certification processes do recognise field work as part of the education. You still need to write the certification exam though. IF you didn't want to get certified would you have to start waiting on tables? I doubt that very much. There will always be software which won't require engineers.

When will it happen? It's already started as Software Engineering courses are slowly getting into Universities. Texas and Ontario are certifying Software Engineers. Likely within the next decade, you will start seeing software having "Engineered" certification. Eventually, contracts with software shops may stipulate that no uncertified personal will build software.

Am I certified? No. Do I think it's a good thing? Yes, it is a logical step for Software development to take. Will I become certified? I don't think so, not in the next 5 years or so anyway.

-- Anonymous, November 14, 2000

Which software developers would you want Ford to hire? Hot shot cowboys, or certified software engineers. Travelling at 120 kpm down the freeway I want the software in my car to function correctly. Period. I don't want any fancy tricky impressive code from some 3AM caffiene fed coding frenzy sitting in my cars operating system.

I'm sorry, but I think this example totally disproves the need for certification [rather, licensing, which is what we're really talking about here -- the government forcing software engineers to become certified]. Why? Think about it. When was the last time your car's OS crashed? Never. When was the last time Windows crashed? Probably yesterday, depending on the version. Why? Because when Ford ships a product, it has to work. When Microsoft ships a product, it has to be first, or have all the features they said it would, or more features than XYZsoft's similar program. There's a total time and feature pressure. Remember the cliche: "Faster, Better, Cheaper: pick two." Microsoft wants all three, and end up getting none. It takes 3 versions just to get the first stable version out.

On the other hand, Ford hires guys with pretty much the same qualifications as Microsoft, yet their software never crashes. Because it can't. It has to work. And they make it work. They iron out the bugs. They aren't certified or licensed to do it, they're just given the perogative to do so by their managers.

I think this applies to most of the embedded "critical" systems which are most often said to need certification by people like McConnell.

I thought about this issue a lot for my SE paper, and I came to the conclusion that software engineers should have the option of becoming certified. A few voluntary, standard, high-level tests offered by ACM and IEEE could help prove you're competent. However, there should not be licensing. This is not an area I want the government to get involved in. I want my employer to decide if I'm a good software engineer, not the government.

We shouldn't jump the gun here. Software engineering is roughly 40 years old. Computer science, upon which it is based, cannot agree on enough fundamentals to base an engineering discipline on, not yet. How long was it before doctors were licensed? Thousands of years? Let's chill for a few more decades and see what happens with our field, instead of strangling it in the crib.

-- Anonymous, November 15, 2000

Exactly what problem is programmer certification supposed to solve? I'm not aware of of gangs of rouge programmers swindling old ladies into hiring them to write faulty human resource applications. One comment said: "The software industry has grown out of control. The more dot-coms that fail, the harder it will be for a potentially great company to get funding in the future." What exactly does that have to do with programmers? dot-coms are failing because the marketing people had crappy business plans that apparently read something like this: 1) creat web site 2) sell lots of stuff 3) make lots of money What they didn't seem to realize is that moving from 1 to 2 to 3 can be fairly complicated. But I am not aware of a single dot-com that failed because the programmers did a lousy job.

Again, people are claiming that "this is an issue that needs to be addressed". What issue! I have 20 java developers reporting to me and not a single one is Sun certified. Guess what? I would put any one of them up against a gaggle of Certified Java Developers.

nother comment: "Certification serves two purposes: 1. you have acquired a satisfactory level of knowledge in a particular field; 2. through the training and education to obtain the certification, you've gained intelligence (or experience) in solving a certain level of problems." Bzzzt. Wrong bucko. All that having a certification proves is that you can pass a certification test.But you have to love those terms; "acquired a satisfactory level of knowledge". What the hell does that mean? Satisfactory to who? Oh, the certification board, of course.

Comment: "Shouldn't these people deserve some kind of assurance, that the tools that they use are from companies with designers that have achieved a certain level of expertise?" Sure, it's called the marketplace. If the software sucks, then I don't care if the developers all have PhD's. if the software works great then I don't care if it was developed by part-time yak salesmen in outer Mongolia. The marketplace will determine who the best developers are, not some mindless certification test.

Comment: "There is one good thing about being certified - it shows that you're able to learn a bunch of new material and answer a bunch of questions correctly based on that material." Ummm, isn't that what a college degree is supposed to show? In fact, isn't the pupose of a college education to provide one with the necessary thinking patterns to be able to learn new things? Let's ask Joel why people go to Ivy league schools.

Comment: "Considering the proliferation software into our lifes and advancment of technology, it is only a matter of time (I hope) before the FTC. mandates that software providers must warranty their software the same as other consumer products." I guess you never heard of UCITA. We are heading in exactly the opposite direction where not only aren't we responsible for our software but that we will be allowed to kill anyone who uses our software without paying us.

Comment: "Does buggy bloatware happen because engineers lack ability? No! When customers demand quality, they get it." 100% correct! The problem is not programmers. The problem is users who do not wish to pay for the costs associated with intense application testing. When a product is running late because of function creep, where do the users cut from the budget? The function list? Never! They cut from QA and testing. I don't know how many times I have fought with users over a few thousand dollars on a multi-hundred thousand dollar project because they think I am spending too much money and too much time on testing. I'll bet Ford's applications are well-tested before they pop those porgrams into your engine. I'll bet they have a separate QA Testing function that tears apart every line of code before it is installed. Give me that and I'll give you code that is bullet-proof. Don't want to spend the money, then you will get potentially buggy software.

The whole idea of programmer certification is just silly. What would they be certified in? I can just hear the certifiers: "Sorry, Mr. Torvald but you failed the Windows part of the test so you have to stop programming." ;)

Enough ranting.

-- Anonymous, November 15, 2000

Regarding the Above Message:

(This might be getting a little off-topic) Way above, I originally said "Considering the proliferation software into our lifes and advancment of technology, it is only a matter of time (I hope) before the FTC. mandates that software providers must warranty their software the same as other consumer products."

Above, T. Paul said "I guess you never heard of UCITA. We are heading in exactly the opposite direction where not only aren't we responsible for our software but that we will be allowed to kill anyone who uses our software without paying us."

Well, I have heard of the UCITA, but if you check out: http://www.ftc.gov/bcp/workshops/warranty/ which covers a FTC sponsered symposium on the issues related to warranty protection, shrink-wrap licenses, etc... Despite the fact the UCITA is getting pushed on everyone by the powers that be, I hope forums like this one are an indication that the battle is not over for consumers' right to quality software and a fair warranty.

-- Anonymous, November 16, 2000

Certification doesn't make sense for software developers. Want to convince an employer that you know your stuff? You should be able to point to a portfolio of past work. What, no portfolio? Maybe it's because you simply don't have the experience, or maybe all of your projects were internal (in which case good references ought to compensate). More on this in a mo, but first let's consider tech. support roles.

In sysadmin, there's no easy way to summarise achievements on a CV, and most work will be for internal consumption only. This doesn't give hirers much to go on. Experienced applicants should still stand out from the crowd, but inexperienced jobseekers have no real recourse but to take a certification exam to prove their intelligence. Certification guarantees a baseline of knowledge but provides no indication of application of that knowledge. Advocates seem to hint that certification is a passport to a higher paid job, when in fact certification would work quite well as a temporary pass to the shop floor. Good personnel will become apparent soon enough.

Back to developers. Software houses looking to recruit motivated talent could do worse than follow Ars Digita's example. Ars Digita invite anyone and everyone to complete 3 "problem sets" which can be downloaded from their web site - they'll even donate server space to people who haven't got beefy enough hardware to do the work at home. See http://www.arsdigita.com/careers/home-study for details. This is quite a program to get through -- probably as tough as any certification assignment -- and completion of it says a lot about the motivation of the candidate. Ars Digita can then assess the technical prowess from the pset solutions. Cost to them: time to study pset solutions. Cost to the candidate: nothing (apart from telephone bills for spending time online in the uk). I don't work for aD but I've attended bootcamp and the psets are deceptively gruelling (good time management is something the bootcamp is designed to flush out). Attendees are given 3-5 days to do each pset. A typical aD employee could probably do the lot in 3 (this is a pure guess; I have absolutely no data to support it).

Where am I going with this? If you're hiring software developers, well, Joel has lots to say about this, but giving the applicants an assignment will demonstrate to you their levels of commitment, talent and speed. If you're hiring sysadmins, then get one of your sysadmins to sit in on the interview (and get good references). If you're a developer looking to join a company, bring a portfolio of completed projects (and if all your projects are internal or you don't have the experience, then spend a bit of time creating some apps you can call your own). If you're an inexperienced sysadmin, then be prepared to go in at the ground floor and put in the hours. If you think certification will propel you into a well paid position, then don't bother; send the money to me instead and I'll write you a good reference. If you hire someone based solely on them holding a certification, or on one of my references, then you deserve everything you get.

-- Anonymous, November 17, 2000

Driver's License is the biggest certification industry in the world.

Yet many car accidents happen everyday, thanks to irresponsible drivers. To do anything right, one must have the right attitude and state-of-mind. I believe that can only be acquired through good education and teaching of values.

-- Anonymous, February 13, 2001

I ran across a couple of papers that may be of interest:

Policy Analysis No. 246 December 15, 1995 THE MEDICAL MONOPOLY: PROTECTING CONSUMERS OR LIMITING COMPETITION? by Sue A. Blevins http://www.cato.org/pubs/pas/pa-246.html

"....Medical licensure was first introduced in England in 1442 when London barbers were granted charters to perform certain procedures. The charters authorized "barbers" to treat wounds, let blood, and draw teeth.(15)

In the United States, the earliest health professional licensure law was enacted by Virginia in 1639. That law dealt with the collection of physician fees, vaccination, the quarantine of certain diseases, and the construction and management of isolation hospitals. Other early colonial acts denied nonphysician practitioners any standing in civil courts to collect fees. In 1760 New York City became the first American jurisdiction to prohibit practice by unli- censed physicians. Subsequently, many other cities and states introduced licensing requirements.(16)...."

"....In 1904 the AMA established a Council on Medical Educa- tion with a mandate to elevate the standards of medical education. Two years later the council inspected the 160 medical schools throughout the United States and approved of only 82 schools: 46 were found imperfect, and 32 were de- clared "beyond salvage." But organized medicine's profes- sional code of ethics "forbade physicians from taking up cudgels against each other in public," and the report was never published.(25)

Instead, the AMA commissioned an outside consultant to investigate and report on the status of medical education in the United States. Abraham Flexner of the Carnegie Founda- tion for the Advancement of Teaching was commissioned to do a study of medical education. Flexner, an educator with a bachelor's degree from Johns Hopkins, visited each of the 160 U.S. medical schools and released his recommendations in 1910.

Flexner decided that the great majority of medical schools should be closed and the remainder should be modeled after Johns Hopkins.(26) The AMA used the Flexner report in its campaign to abolish medical schools outside its control. With physician licensure already in place, it was relatively easy for the AMA-dominated state examination boards to consider only graduates of medical schools approved by the AMA or the Association of American Colleges, whose lists were identical. In many states the requirement was statutory.(27)

One result was a significant decline in the number of proprietary schools, which had been very prominent until the early 1900s. Although the number of medical colleges had decreased from 160 to 131 between 1900 and 1910, the release of the Flexner report facilitated the closure of an addi- tional 46 medical schools between 1910 and 1920.(28)

By 1930 only 76 medical schools remained in the United States. In 1932 the chairman of the Commission on Medical Education--Harvard University president A. Lawrence Lowell-- reported that "the definition of standards and the efforts of leaders in the medical profession were very influential in eliminating the proprietary and commercial medical schools."(29) Lowell also concluded in the 1932 report on medical education that "the budgets of many schools have increased from 200 to 1,000 percent during the last 15 years."(30)

Women and African-Americans were disproportionately affected by Flexner's recommendations. In 1905 and 1910 women medical students numbered 1,073 and 907, respectively. Five years after the Flexner report was released, the number of women medical students had been cut nearly in half--from 907 to 592.(31) Starr notes, "As places in medical school became more scarce, schools that previously had liberal policies toward women increasingly excluded them."(32)

There were seven predominantly black medical schools in existence before the Flexner report, but only two remained after its release.(33) As a result, the number of doctors serving African-American communities declined. For example, blacks in Mississippi had 1 doctor for every 14,634 per- sons(34) compared to 1 doctor for every 2,563 persons nation- wide in 1930.(35)

Many small towns and rural communities were affected by the new educational standards and associated licensure laws. AMA president William Pusey concluded that "as you increase the cost of the license to practice medicine you increase the price at which medical service must be sold and you correspondingly decrease the number of people who can afford to buy this medical service...."(36"

Policy Analysis No. 79 December 9, 1986 PROFESSIONAL LICENSURE AND QUALITY: THE EVIDENCE by Stanley J. Gross http://www.cato.org/pubs/pas/pa079.html

"...Hogan found work experience to be an excellent predictor of competence. [67] Morris B. Parloff found that although the "ther- apist's experience is related to the quality of the rela- tionship . . . evidence regarding its association with outcome is far less clear. "[68] Knowing that more experienced people are more com- petent is not a sufficient guideline for licensing, yet numbers of years' experience are what one finds in licensing statutes. [69]

Similarly, although academic credentials are universally required, training does not identify the competent psychothera- pist, [70] nor are grades or degrees found to be related to pro- fessional accomplishment generally. [71] Hogan wrote, "A wide range of research indicates that academic grades predict no- thing but future grades or results on tests similar to those used in establishing grades. "[72]

Benjamin Shimberg of Educational Testing Service reviewed studies that compared dentists with persons receiving as little as seven weeks of training in common dental procedures. [73] He found few or no differences. Gary L. Gaumer reviewed research showing that nurse practitioners can competently provide many services that according to law can be provided only by physi- cians. [74]...."

"...Hogan reviewed several studies of physician competence.[93] In one study less than 10 percent of the physicians were found to do reasonably thorough patient histories or were adequately skilled at interviewing. Almost one-third did not recognize emotional problems. Another study evaluated physicians in terms of whether they were up to date on diagnostic and treatment techniques, drug therapy information, and record keeping. Hogan concluded that patients could not be reasonably sure a physician was competent. Gaumer reviewed studies that showed medical mis- management for 29 to 62 percent of patients receiving hospital care; deficient care for obstetric patients in 8 to 22 percent of cases; and physician-inflicted injury in 7.5 percent of cases.[94] In studies of laboratory practices, technicians missed evidence of carcinomas 30 percent of the time. When the same test was given to pathologists (M.D.'s), according to Gaumer's review, they missed the evidence 37 percent of the time..."

"....In general, licensing boards tend to be more zealous in prosecuting unlicensed practitioners than in disciplining those already licensed. Derbyshire concluded, "Many disciplinary bodies seem more interested in protecting their medical col- leagues than in safeguarding the public."[99] Hogan found that complaints against the unlicensed brought by licensed personnel tended to increase when economic conditions worsened.[100] Forty percent of the complaints received by California's psycho- logy board related to practice without a license, according to Summerfield.[101] He believed that what he judged to be an "incredibly" small number of complaints was caused by patients who did not know where to complain (the Psychology Examining Committee was not even listed in city telephone books in California) and by those who did not want the stigma connected with being "mental" patients to reflect on their personal ade- quacy...".

"....Hogan's review of the effect of licensing on the utiliza- tion of paraprofessionals indicated that licensing has had a profoundly negative effect.[139] "By defining in extremely broad terms the practices restricted to fully licensed practi- tioners, and by making no provision or very rigid or narrow provisions for delegating functions to others, licensing laws unnecessarily limit those who can provide auxiliary services." [140] Hogan also indicated educational requirements:

Many requirements are unrelated to ability, especially citizenship, residency, age, and other personal require- ments. The amount of schooling and experience demanded is often excessive. Many of the laws regulating the paraprofessional do not allow alternative routes to licensure, such as through equivalency or proficiency testing or through giving credit for related work ex- perience. Often, no credit is allowed for formal edu- cation in a degree program different from the one licensed, even if the courses are identical.[141]

Hogan cited the example of military training programs that require less of a time commitment without sacrificing quality when compared to hospital and technical institute training pro- grams.[142].... "

-- Anonymous, February 17, 2001

I must say, it strikes me that there is a bit of a difference between your average piece of software, and a toaster.

Above and beyond the difference between a tangible and physical thing and a virtual thing (what IS software, really?), which I'll let you hash out yourself, toasters are a little simpler then you average piece of software, and they operate in a much more highly controlled environment.

Do you expect the toaster manufacture to "Repair or replace" your toaster because it was designed for US use and you can't plug it into a European socket? If you plug your toaster into a 20 Amp circuit which has 15 other devices on it and it blows your circuit breaker (or fries your home wiring because you have defective or no circuit breakers), is the toaster manufacture responsible for "Fixing" your house? If the power company "Browns out" and your toaster stops toasting because the power has dropped to 75 volts rather then 120, do you call the toaster manufacture, or the power company?

What I'm getting at here is that, among other things, toaster manufactures deal with a few less variables then software developers do, they have a guaranteed environment, and they are expected to work reliably WITHIN THAT ENVIRONMENT, but are not generally held responsible for breakdowns in that environment.

Let's take electricity. Toaster manufactures can figure that they are going to get 120 volts of 60HZ AC power +- 10%. They are pretty much guaranteed a standard socket, and they can expect a certain amount of power will be at their disposal. When was the last time a PC developer got a rock solid guarantee about the environment he would be would be running in.

On the other hand, if some dip-shit code in some portion of the computer environment breaks your application, who are your users going to call. Most of the time, they won't even KNOW that it's not your code that broke (and they won't believe you if you tell them).

I'm simply pointing out that one good reason you cannot compare toasters to software is that software developers are suppose to be responsible for the total operation of their software, even when that operations relies on environmental factors beyond their control.

Now don't get me wrong... I believe whole heartedly that software quality has a whole heck of a lot of room for improvement. I also agree (and have stated repeatedly) that quality is low because customers don't demand it and vote with their dollars for faster to market, more feature laden, cheaper, buggy code rather then slower, less "Gizmo rich", and more expensive, but stable code.

There has also been some mention of automobile computers, and a passing reference to play station games not crashing. Now I ask you: What do these to platforms have in common which is different from, say, Windows software development? Could it be a static, highly controlled environment.

What do you suppose the chance was that the developers of those rock solid automobile computers had a stable environment, a single computer configuration to support AND the chance to test on the exact system that the software would be running on? When was the last time a play station developer had to deal with umpteen billion different hardware combinations. The answer is NEVER. Play station games, like all other console games, run on a fixed hardware platform. There is very little, or NO deviation between any given play station installation and any other.

Also, when was the last time that a Nintendo developer got criticized because their Nintendo game didn't run on the new Nintendo 64? There is just about ZERO migration path between games systems, and not only between competing systems, but between different boxes from the same manufacture. Among other things, this means that the game console hardware can "throw away" old mistakes and start fresh, where as we are still living with decisions made for reasons that don't exist anymore (DLLs spring to mind).

This does not even mention that there is a rigorous quality control at the platform producers end which does not allow any "Half baked" software OUT to run on their systems. Anyone who want's to put out a play station game has to get Sony's approval before they can release. This is analogous to having to get Microsoft's approval in order to release any program that runs under Windows, or IBM's approval to release a program that runs on an IBM compatible computer.

Would I recommend the same strategy for general computers. Hell no, I don't want to have to get anyone's approval to market what I develop, and at the same time, I'm gonna get upset if some of my old DOS programs don't run in the latest greatest version of Windows... But this IS a factor in the quality and stability of console games, and a factor in it's lack in general computers. At any given time do you have ANY idea how much code by how many different people is running on your machine? It's a miracle that ANYTHING works, at all... Especially considering the lack of quality control and testing that some of this code was exposed to before being PUT on your computer.

I'd like to point out that games developed for general computers, without the stable environment consoles provide, suffer from the same problems as applications, and even more so, in part because there is even less attention to QA and stability in game development then in application development. While applications may be in service for many years, the life of your average computer game is a few months. When was the last time you saw version 2.0 of a game (not a sequel... an actual version 2). What do you think the market would be for that?

And finally, licensing itself. I'm just going to restate and build on what several people have already said here. All a license really proves is that you can pass whatever test was required to get the license. And in many instances, licensing empowers not the people, but the licensing authority, which may not always have the best interest of the general public at heart, or in mind.

And most of all licensing doesn't work. First, licensed people are not necessary automatically competent, nor necessarily as careful as you might think. I've talked to enough to people who work closely with "licensed" professionals (including doctors), and I've heard enough horror stories to make me seriously doubt the validity of even rigorous licensing processes. As pointed out, those responsible for maintaining the business of licensing are far more interested in going after those who are NOT licensed, whatever the quality of their work, then enforcing the standards they are suppose to uphold in the people who hold a license.

As mentioned, drivers licenses don't make good drivers, and what's more they don't necessarily prevent people from driving without them, which brings up the other point. Lack of a license is no guarantee that un-licensed, and even more importantly unqualified, persons will not perform the work, if there is a demand for it. You can still, find unqualified people performing medical "operations" in sub- standard conditions where there is a demand. Heck, our local museum talks about a dentist in my area who didn't believe in pain killers for drilling teeth, had very sub-standard working conditions (we're talking barn yard animals in the office). Her license was revoked, but she continued to practice until they confiscated her equipment (and that wasn't all that long ago, in anything but "computer years").

In fact, the requirement of license to perform work, compounded with a demand which licensed "professionals" cannot, or will not fulfil, generally results in very sub-standard work to fill the demand, because unlicensed (and often unqualified) people step in, generally illegally, and are under pressure thereby.

I'll answer the inevitable question now, Would I prefer to go to a licensed doctor over an unlicensed one? Yes, in most cases. However, I am NOT going to TRUST a doctor just because they have a "License", any more then I'm going to TRUST a drug, just because my drugstore sells it. Also, this does not mean I'm going to rule out people who have good advice, just because they don't have a "License" any more then I'm going to rule out "natural remedies" just because my drugstore does not sell them, and an M.D. would not prescribe them.

With all that said, I do feel certification has it's place, perhaps even in the software industry, but not in it's current form. Certification should act as a medium of communication between two entities, and as a quantization of certain key attributes. To wit:

1. Certification, especially in something like computer / software development, is between the employer and employee (or contractor, client if you prefer those terms). No over-riding agencies, and especially not the government, should control it. They government can require that software developers working on government projects be certified, but they should not require that anyone who practices is.

2. Certificates should be VERY focused. Certification as a "software engineer" means next to nothing. Certification in "Java Language Fundamentals" or "UML Diagrams", or "MFC version 4.x", or "Basic Sort Algorithms" means something tangible. This means that most people would hold several, perhaps many, certificates. It also means that new certificates would have to be designed for ANY new technology, methodology, and even areas of "industry wisdom". That's is going to be inherent in any meaningful system.

3. Certification should be ranked. Any particular instance of a certificate should have a level or rank which indicates the level of ability of the holder of that certificate. This combined with specific certificates would transmit real meaning.

4. Certification should be easily obtained, and at absolutely no cost to the person being certified. There should be no reason NOT to hold a certificate in a subject unless you don't KNOW the subject.

Even someone who just went though the online Java Tutorial should have a good chance to be certified, for no personal cost, in "Java Language Fundamentals", although at a lower rank then someone who had been working with Java for some time and knows the language cold. The idea here is to give a "low barrier of entry" for anyone. Even people with NO Java experience, but with experience in a similar language (like C++) should be able to get at least a low ranking "Java Language Fundamentals" certificate. Of course, anyone can re-certify at any time for a high rank.

This system would convey a lot more information to employers and customers then simple college degrees, or an all encompassing certification or license would. (For those who are interested this came from a paper I wrote on revising the higher education system, in which this type of certification system was designed to replace traditional degrees).

Ultimately certification is, a tool, nothing more. It can be a powerful tool when used correctly. However, when we start looking to it as the holy grail, the miracle cure which is suppose to fix all the problems with software and computers and end the proliferation of bugs, we are deluding ourselves.

Great developers will still produce great software, given the right resources, with or without certification. Bad developers will still produce crappy software, whatever degree or certification they may hold. The problem is not to certify or no, it is how do we create a certification system that works for us, and promotes the ultimate goal, rather then working against us.

Gamaliel Masters dragonlord79@yahoo.com

-- Anonymous, February 26, 2001

When I make a hiring decision, I consider certification as a negative.

I've met programmers with Java certifacation who don't understand polymorphism, who have trouble comprehending simple programming tasks, who write rather bad code. In my opinion, people who get themselves certified do so due to lack of real experience.

Most good programmers I know of don't care about certification. They are confident that they can convince any interviewer of their worth just by being themselves, without a piece of paper.

-- Anonymous, April 16, 2001

Brainbench Rules

I think these certifications are an excellent independent measure of ability not linked to any vendor. Kind of like the SAT's of programming b/c they give you a score and a percentile ranking to compare with the rest of the world. I think that means a lot more than a fancy degree with some fancy latin after it from a university that graduates 97% of its class, none with less than a C grade (witness G.B., Jr.)

What do others think? Ivy League grad or Brainbench master for your projects?

-- Anonymous, May 07, 2001

I think it is like an optional driver's license driver, you can have it or not but still must know how to do it if you want to drive a car.


-- Anonymous, May 19, 2001

Moderation questions? read the FAQ