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 [
http://www.tbpe.state.tx.us/law2000.htm]:
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 (http://www.tbpe.state.tx.us/),
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 http://www.swebok.org/.
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.