Is Certification the Answer?

This pragmatic programmer wonders whether a state-sponsored certification process may help or hinder software quality.

If you've been following the news lately, you know that MCSEs have had problems in some places lately with using their full title. That's because the term "Professional Engineer" is legally regulated in many jurisdictions, from Canada to Texas. Using the term "Microsoft Certified Systems Engineer" on your business card is enough to put you on the wrong side of the law, and there are now enough MCSEs that this law is starting to be enforced. [To read about this controversy, read "Canadian MCSEs Face Conundrum," in News.—Ed.] For example, here's the relevant part of the Texas Engineering Practice Act []:

only licensed persons shall practice, offer or attempt to practice engineering or call themselves or be otherwise designated as any kind of an "engineer" or in any manner make use of the term "engineer" as a professional, business or commercial identification, title, name, representation, claim or asset

It's starting to look like Microsoft's response to this situation is going to be to change the name of the certification. Maybe we can all be Microsoft Certified Systems Emperors (or would that cause trouble for those in Japan?). But there is an alternative way out of this dilemma: instead of trying to hide from the professional engineers, why not join them?

Steve McConnell's After the Gold Rush (Microsoft Press, 1999) argues that we need to make software development a profession rather than just a craft, possibly with a state-sponsored certification and licensing process. Would this really help improve the quality of software? Does your MCP give you a leg up on professional certification?

McConnell points out that "no occupation that affects the public as much as software does remains unlicensed." Licensing applies not just to physicians, doctors, dentists, and attorneys, but to a wide variety of other professions. In California, for example, barbers, embalmers, guide dog instructors, hearing aid dispensers, and mule jockeys are among the licensed professionals.

McConnell looks at the question of professional engineers in a bit more depth as well. Not everyone with an engineering degree is a Professional Engineer (I'm not, for example, despite my own industrial engineering degree). But any firm that wants to do serious work finds that it needs Professional Engineers on staff. The rate of licensing varies from 44% (for civil engineers) to 8% (for chemical engineers); engineers who do projects with more direct public impact have higher rates of licensing. McConnell concludes

On balance, perhaps 5-10 percent of people currently practicing as computer programmers will eventually get their badges—their professional engineering licenses in software.

Right now, in fact, you can get a PE credential in software in Texas. Because the state exams aren't ready yet (and as far as I can tell from their web site (, they haven't made much progress on getting them ready in the past two years), you can only qualify if you have enough experience to waive the exams:

  • 16 years engineering experience, or
  • 12 years engineering experience and a bachelor's degree, or
  • 6 years engineering experience and a PhD in engineering

Plus you have to have 9 references vouch for you, including 5 Professional Engineers. I don't know how many people in Texas have their PE in software engineering, but I'll bet it's not a whole lot.

Once the exams are ready, they will probably take several days (CPAs take a two-day exam in most states; lawyers a three-day exam), and won't be focused on particular technologies like the current MCSE exams. No one is going to care whether you understand Active Directory when the question is whether you're a professional software engineer. Instead, you are likely to have to demonstrate competence in areas like object-oriented software design, data analysis, reengineering, and software project management. For some indication of what professional software engineering exams are likely to cover, check out the Guide to the Software Engineering Body of Knowledge at

So, to answer one of my questions above: it's not all that likely that having the MCP or MCSE credentials will provide you with much of a boost towards getting your PE credential. (To be fair, certifications from Cisco, IBM, or Novell aren't going to be much of a help either). In fact, given the sorts of topics that are generally encompassed in the field of "software engineering", it seems quite clear to me that many MCSEs won't qualify. While the tasks that MCSEs perform in keeping networks running are critical for many businesses, they don't have much to do with the discipline of software engineering, which is primarily one of creating and maintaining applications software.

Of course, that's not to say that the MCSD is going to help all that much either. The MCSD core exams do include some material on software design fundamentals, but the vast majority of the topics they cover are vendor-specific. And, once again, the PE folks are not really going to care how much you know about FoxPro or VC++ syntax.

So what sort of preparation will help? An undergraduate or graduate degree in computer science or (preferably) software engineering, for starters. Real-world experience in designing and implementing large software applications as part of a team would help, too. Keeping up with the field of software engineering through organizations such as the ACM or the IEEE Computer Society is another smart move.

In other words, if you have your MCSE or MCSD, and you really want to get your PE, you've got a lot of work ahead of you.

And what will you get out of it, besides not being sued by the state of Texas when you put the word "engineer" on your business card? Well, for starters, in most states only licensed professionals can be sued for malpractice. But on the other hand, if you're a professional you can buy malpractice insurance, and following the generally accepted standards and practices of your field is a defense. This is an area in which becoming a professional makes the rules more clear, as opposed to the current situation where your clients can sue you for anything that displeases them.

If software engineering follows the same path as other engineering professions, then there will be substantial job opportunities available to licensed software engineers that are closed to unlicensed programmers. Once several states have their licensing laws and examinations in place, the next step will be for legislative bodies to start requiring licensed engineers overseeing particular projects. These projects might include:

  • Any software development done for state and local governments
  • Any software development that has the potential to affect public safety
  • Possibly even any software that is sold directly to the public

The other major benefit to the professional engineer is a certain amount of power in relation to management. If you're a professional civil engineer, for example, and your boss tells you to cut corners on a bridge project, you can just say no, citing the standards of the profession—and you can't be fired for it. Wouldn't it be nice to be able to just say no the next time your boss tells you to ship a product with substantial known bugs?

Will formal licensing of software engineers really help improve the quality of software? My own personal feeling is that it will. As you know if you've been following this column, I think there is a lot of knowledge out there about how to write good software that just doesn't get applied. In the sixty years or so since programming became recognized as a separate activity, we have learned a thing or two. But much of what we've learned is locked up in computer science courses and doesn't make it to our practical lives of software development.

If the trend towards licensing of professional software engineers continues (as both Steve McConnell and I believe it will), it's going to have a certain "bootstrapping" effect on the field. As more projects require a professional software engineer, people will have more incentive to get the credential. This in turn will encourage more developers to gain the knowledge they need for the license—whether by self-study or returning to school. Either way, the things we know about writing good software will become more widely disseminated.

Of course, none of this means that vendor-sponsored certification programs like Microsoft's are going to vanish. I personally would be astounded if Microsoft chose to work with the licensing boards to convert MCSEs into professional engineers, rather than simply changing the name of the Microsoft certification. But for your own career, it's worth thinking into the future a bit. Find out what your own state Board of Engineering Licensing is doing (if anything) about licensing software engineers. Then consider whether it might be worth investing a bit in picking up the knowledge you'll need for those exams when they come along. In the worst possible case, you'll learn things that make it possible for you to write better software for your clients. And isn't that the point?

About the Author

Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.


comments powered by Disqus

Subscribe on YouTube