learned. Any craft or trade has its discipline—as do many activities that are
not craft or trade, such as meditation
or calisthenics. In this sense, neither
architects, nor industrial designers,
nor weekend inventors are engineers.
Architecture and industrial design
each have a discipline easily distinguished from engineering’s. Weekend
inventors have no discipline at all; they
may invent any way they like.
Software engineering is not engineering in this third sense. The body
of knowledge engineers are supposed
to learn differs in important ways from
software engineering’s body of knowledge. So, for example, engineers have
to take courses concerned with the
material world, such as chemistry and
statistics; software engineers do not.
Software engineering’s official Body
IllustratIon by hanK osuna
software engineering
has, indeed, become a
profession. What it has
not become is part
of the engineering
profession.
of Knowledge was in fact an important step in clarifying the distinction
between engineering proper and software engineering. It requires software
engineers to know things other engineers do not and not to know some
things other engineers do know.
The last sense of engineering we
need to distinguish here is engineer-ing-as-profession. A profession is (we
may say) a number of individuals in
the same occupation voluntarily organized to earn a living by openly serving
a moral ideal in a morally permissible
way beyond what law, market, morality, and public opinion would otherwise
require.a An occupation is a discipline
by which one may, and some do, earn
a living. Both engineering and software
engineering are now occupations but,
having (as just noted) different disciplines, must be different occupations.
That is one reason why they cannot
share a profession. There is another.
The Software Engineering Code of
Ethics and Professional Practice differs in significant ways from all the
engineering codes I know. Software
engineers are, for example, supposed
to “[m]oderate the interests of the software engineer, the employer, the client
and the users with the public good”
a For a defense of this definition, see my article
“Is Engineering a Profession Everywhere?”
( 1.02).b Engineers do not now have
such a duty to moderate.
Software engineering has, indeed,
become a profession. What it has not
become is part of the engineering profession. Anyone who claims otherwise
must find a sense of engineering different from those distinguished here, one
that makes software engineering a part
of engineering without including as well
disciplines, occupations, or professions,
such as architecture or accounting, that
clearly are not part of engineering.
Professions are voluntary associations. You cannot become a member
simply by claiming to be one. You must
be admitted (by the profession, not just
by a technical society like the ACM). Engineering has a long history of other occupations claiming to be engineering:
recent examples include genetic engineering (a kind of tinkering with genes);
reengineering (a fad in management);
and financial engineering (gambling
on Wall Street). Software engineering
actually began with an attempt to copy
engineering practices, making its claim
to be engineering more respectable
b Software Engineering Code of Ethics and Professional Practice (1999); http://www.acm.org/
about/se-code. For history of this document,
see my essay “Code Writing: How Software
Engineering Became a Profession,” Center for
the Study of Ethics in the Professions, Chicago, 2007; http://hum.iit.edu:8080/aire/sea/1/
book/ index.html.