Are you a Software Engineer?

Mostly as a result of the recently settled, but not entirely resolved, dispute between MUN and CCPE over the use of the term "software engineering" and because I am an engineer who specializes in software, several people have asked if I consider myself to be a "software engineer". The following explains my position on this sensitive term.

The term "software engineer" is used to mean a wide variety of things, including:

I think that these are all abuses of the term.

I think that to call themselves a "software engineer" a person must satisfy all of the following:

  1. They have appropriate training in both technical (e.g., software design, fundamentals of computing, natural sciences, mathematics) and non-technical areas (e.g., ethics and professionalism). What is appropriate training is a hotly debated topic, but the ACM/IEEE-CS draft accreditation criteria for software engineering is a pretty reasonable starting point. Note that most, if not all, undergraduate engineering or computer science programmes in Canada that have graduated students fail to meet these criteria, so any current practitioner must have filled in the gaps through other means (e.g., post-graduate study). For an example of a suitable undergraduate programme, have a look at McMaster's Software Engineering Programme.
  2. They agree to, and do, adhere to an appropriate code of ethics. Again there can be some discussion about what the code says, but I think you'll find that APEGN and IEEE-CS/ACM don't disagree much. Ideally, I'd like this code to be enforced by law.
  3. They take legal and ethical responsibility for their work and its impact on the public. Engineers have a legal duty to ensure that their work is appropriate for the purposes that it is intended and will not endanger the public. In contrast, software usually comes with a disclaimer where other products have a warranty. This is not acceptable.
  4. In Canada they must be registered members of the appropriate provincial association. This is a matter of the provincial laws, not my opinion.
Since almost no current graduates from Engineering programmes satisfy my first criteria, and the Engineering associations have made it quite difficult for graduates from other programmes to satisfy the last one, we end up with the confusing situation we have: According to the law a Civil Engineer who hacks out some code can legally call him/herself a Software Engineer (although I would argue this is in violation of codes of professional conduct), whereas a non-engineer, who may be more qualified in the technical areas, cannot legally use the title. If the Engineering associations would like to clear up this confusion, then I think they had best work hard to make it reasonably easy for people who satisfy the first criteria to satisfy the fourth. Then they can enforce the second and third through existing legislation.

Am I a "software engineer"? You tell me.


Back to Dennis Peters' homepage

Last modified: Thu 1999.09.30 at 09:43 NDT by Dennis Peters