LICENSURE: Professionalizing software engineering.

What is Licensure???

Licensure refers to the granting of a license, which gives a ‘permission to practice.’ Such licenses are usually issued in order to regulate some activity that is deemed to be dangerous or a threat to the person or the public or which involves a high level of specialized skill.  In terms of licensed software engineers, a person would have to take a test demonstrating a certain “body of knowledge” deemed essential for a software engineer to have, and fulfill some other basic requirements (such as possessing a college degree in a relevant field, etc.) in order to call oneself a software engineering.  Then, only licensed engineers would be legally able to hold certain jobs in companies which the licensing board deemed must be help by a licensed software engineer, similarly to how teaching positions at your local public school can only be help by licensed teachers.

If you are still curious about licensure in general, here are some examples of licensure in practice for other disciplines:

Teaching License (to make sure your 3rd grade teacher, Ms. Maine, actually knows her own multiplication table!):

Land Surveyor License (to make sure your house isn’t built directly on top of a fault line!):

So doesn’t a “software engineering license” make sense if you don’t want everything from your home computer to local hospital data crashing?!?



  • Creates standardized bar for every licensed professional, guarantees some minimum standard
  • Ensures that software engineers poses a basic “body of knowledge”
  • Increases personal responsibility for code (i.e. if a licensed professional is overseeing a team of programmers, the final product will need the licensed professional’s “stamp of approval” to be approved, thus placing greater liability, and thus responsibility, on the licensed professionals.  Greater personal responsibility should increase the quality of the final product.)


  • A basic “body of knowledge” sounds good in practice, though impossible to implement for two reasons:
  1. Software engineering is such a broad discipline that any body of knowledge would be too broad for any one person to fully understand.  As Robert Glass describes, software engineering is as much an art as a science, and thus rules such as “don’t built a house on a fault line” are never as clear-cut.
  2. Because software engineering is such an immature field, software engineering itself is constantly changing.  Are software engineers advanced programs, hardware specialists, or managers?  If the role of a software engineer is not clearly defined, how can their expected “body of knowledge” be?

Example: Robert Lief from AdaMed: At a conference aimed at discussing the potential of licensing software engineering, Mr. Lief mentions that the reason we can’t all use a single common programming language is that the language must be suitable for the problem domain.  Thus what languages should a software engineer be proficient at?  These are truly arbitrary calls. (licensed professional software engineer)

  • The only useful license would then have to be very strict and all-encompassing to be useful, and thus too few people would be able to obtain it.  Therefore: “If very strict criteria were applied for software engineers, maybe 90% of current professionals would lose their jobs, and we can’t afford to close down Microsoft and the rest of the software industry.” (Robert Lief from AdaMed)
  • The ACM has recently adopted positions in opposition to the licensing of software engineers as Professional Engineers, and has withdrawn from the Software Engineering Body of Knowledge (SWEBOK) project. The ACM concludes that: “[C]urrent software engineering body of knowledge efforts, including SWEBOK, are at best unlikely to achieve … appropriate assurances of software quality…”
  • Companies often offer their own “professional certification” for specific facets of the company – for instance IBM, Microsoft, and Apple all over several different certifications, ranging for security to specific programs.  These are much more tailored, and thus useful, than one broad professional license.
  • IEEE-CS offers a certification titled Certified Software Development Professional. (CSDP – more information can be found here: The CSDP offers tailored certifications much like the tailored coursed offered at large companies (described above), thus offering greater flexibility and being more helpful than one broad license.  (at the bottom of this page, additional information is given on the CSDP  if you are interested in exactly what typical certifications entail)

Case studies of licensing:

United States: Texas, currently the only State in the US to offer software engineering licensing, created in 1998.  One can become a Professional Engineer, with only a specialty in Software Engineering.  The first half of the test is electrical engineering, the second half is mostly hardware – not very much programming, and thus not very software-tailored, and therefore not very useful.  Dave Dorchester, Vice Chairman of the Texas Board of Professional Engineers mentions: “Indeed, officials from many states and several other countries have told us that they are waiting to see how these things all come to fruition.”  Thus the case in Texas was seen as a “pilot program” for software engineering licensing, though has not spread to any other state or country.  How effective, then, could it have been?

IEEE/ACM: Since 1993, the IEEE Computer Society and the ACM were actively promoting software engineering as a profession and a legitimate engineering discipline, notably through their Software Engineering Coordinating Committee (SWECC).  However, the ACM dropped out and switched sides on the idea, now saying that licensing is the wrong thing to do.

Internationally: The Information Systems Professional (I.S.P), or Informaticien professionnel agréé (I.P.A. in French), is a professional designation issued by the Canadian Information Processing Society (CIPS). Introduced in 1989, the professional designation is recognised by legislation in most provinces of Canada.  There is no legal requirement to hold this, though, so it is more like a certification than a license.

Conclusion We Drew:

Will not be helpful at all, and actually cause more harm than good. The “body of knowledge” necessary for licensure is too large for any test since software engineering is so broad and still changing due its immaturity.  Not only will it be ineffective, but since it will create a false sense of security, it has the potential to bring about more harm than ineffectiveness.  We thus stand with the ACM against licensing of software engineers.


Information on CSDP (what is required to be granted the certification):

1. At the time of application the candidate holds a baccalaureate or equivalent university degree and has a minimum of 9,000 hours of software engineering experience within at least six (6) of the eleven (11) SE knowledge areas (the ten SWEBOK areas and Professionalism and Engineering Economics).

2. Candidates are required to subscribe to the Software Engineering Code of Ethics and Professional Practice

3. Candidates must pass an exam demonstrating mastery of the knowledge areas