Engineering ethics

Brent Simmons has a good post today on ethics for programmers:

Were software engineer a profession like doctor or lawyer, we’d have a strong and binding set of ethics.

There is a code of ethics for software engineers—over and above the ACM code Brent mentions—but it’s known mostly to licensed professional engineers, and few programmers are licensed.

If you’re a regular reader of this blog or my Twitter feed, you know how hard it is for me to write the phrase software engineer. Deep down, I still think engineering should be reserved for work in the physical world, not in the conceptual world where most software resides. But the writing has been on the wall for a long time, and I don’t really expect the traditional definition to prevail. Nowadays my complaints about programmers calling themselves engineers are done as a joke in the “get off my lawn” vein:

@danielpunkass @caseyliss You software people are so cute with your ideas and stuff.
Dr. Drang (@drdrang) Jan 14 2015 7:44 AM
@drdrang @caseyliss Excuse me, I am a software ENGINEER. I should know a thing or two about ENGINEERING, thank you very much. Look it up …
Daniel Jalkut (@danielpunkass) Jan 14 2015 7:45 AM
@danielpunkass @caseyliss Look it up? OK…

Dr. Drang (@drdrang) Jan 14 2015 7:59 AM

Not that long ago, Daniel couldn’t be a licensed engineer, because there was no licensure procedure for software engineers, but that changed a couple of years ago. Now there’s a licensing exam for software engineering, although I don’t know how many states currently accept it.1 Each state has its own rules for the licensing of professional engineers, and some of those rules would probably have to be altered to allow programmers to get licensed, even with the availability of an exam.

(I am, by the way, curious what programmers think of the topics covered by the exam.)

Professional engineers are guided by the NSPE code of ethics. Licensed software engineers are no different. Strictly speaking, the NSPE has no statutory power—it’s just a professional organization like ACM—but state boards of registration do consider it when conducting disciplinary investigations.2

The six fundamental canons of the code are:

  1. Hold paramount the safety, health, and welfare of the public.
  2. Perform services only in areas of their competence.
  3. Issue public statements only in an objective and truthful manner.
  4. Act for each employer or client as faithful agents or trustees.
  5. Avoid deceptive acts.
  6. Conduct themselves honorably, responsibly, ethically, and lawfully so as to enhance the honor, reputation, and usefulness of the profession.

I’d say the Brent’s concerns about spyware and monitoring software fall under the “avoid deceptive acts” canon. Another section of the code states

Engineers shall avoid all conduct or practice that deceives the public.

I think that fits, too.

The purpose of licensure is to protect the public by guaranteeing a minimum level of competence in licensed practitioners. Typically, this means protection from physical harm. Since most software poses no risk of physical harm—beating your head against your desk when a program eats one of your files doesn’t count—licensure of software engineers may not seem that important. But as software threads its way into more aspects of our lives, our definition of protection will broaden, and more software will have to be approved by licensed software engineers.

  1. When this article was written, thirty states had software engineering licenses. 

  2. The NSPE is an American organization, but most nations have a similar code of ethics for engineers. Several years ago, I was working on a project with a Canadian engineer who wore an iron ring on his right pinky. The Iron Ring ceremony is a wonderfully Victorian ritual (complete with text by Rudyard Kipling) to instill the ethics and obligations of the profession in young engineers.