Are you a Software Engineer?
Mostly as a result of the recently settled, but not entirely resolved,
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,
I think that these are all abuses of the term.
- An engineer who writes computer programs.
- Anyone who writes computer programs.
- A manager who oversees a software project.
- A researcher who conducts research in any of the the research areas
called "software engineering".
I think that to call themselves a "software engineer" a person must
satisfy all of the following:
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.
- 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.
- 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
disagree much. Ideally, I'd like this code to be enforced by law.
- 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.
- In Canada they must be registered members of the
appropriate provincial association. This is a matter of the provincial
laws, not my opinion.
Am I a "software engineer"? You tell me.
Back to Dennis Peters' homepage
Thu 1999.09.30 at 09:43 NDT
by Dennis Peters