Programmers like me shared some interesting stories on Reddit and Hacker News last week after a post by Bill Sourour went viral. In “The code I’m still ashamed of” he recounts how, as a young software engineer, he was asked to create misleading quizzes designed to sell a drug that was known to have powerful side effects, and eventually became aware of a teenage girl who had died as a result of taking the same drug.

The story struck a chord with developers- it turned out that ethical dilemmas were by no means unusual, and many experiences were shared about creating software that was anti-social, dangerous, or deadly.

“As developers, we are often one of the last lines of defence against potentially dangerous and unethical practices” — Bill Sourour

The morality of software technologies such as artificial intelligence, drones and big data routinely finds itself under the spotlight, and the arguments on all sides are fairly well understood.

Yet what is less acknowledged is the ethical role of the software engineer herself. After all, it is she who actually creates the code and therefore bears the ultimate responsibility for what that code does, so surely she can refuse to create code that is “evil”?

Oaths

Established professions have ethical frameworks (oaths) in place, the first paragraph of the New York Lawyer’s Code of Professional Responsibility reads as follows:

The continued existence of a free and democratic society depends upon recognition of the concept that justice is based upon the rule of law grounded in respect for the dignity of the individual and the capacity of the individual through reason for enlightened self-government. Law so grounded makes justice possible, for only through such law does the dignity of the individual attain respect and protection. Without it, individual rights become subject to unrestrained power, respect for law is destroyed, and rational self-government is impossible.

Great stuff. Not only does it enshrine a clear guiding principle for being a lawyer, it also explains how and why. Implicitly it sends out a strong signal about the value and power of lawyers in society, and sets expectations for all concerned. Finally it affords a respectability to the trade, and hopefully a degree of inspiration for those considering a career in law.

Similarly the Hippocratic Oath provides a reassuring air of gravitas and a moral framework for doctors which has gone through several centuries of refinement.

In fact every single profession requires its practitioners to sign up to a code of ethics as part of the accreditation process.

So all this rather begs the question: as software engineers- where is our oath? To be sure, several ideas have been floated: Jonathan Harris wrote eloquently on the Ethics of Code and the discussion surfaces from time to time on the more cerebral software development forums, yet no consensus has so far been reached as to what such an oath would look like.

The Professions

Regardless of its form, all attempts at establishing a “hippocratic oath” for Software Engineers are in any case doomed for one reason: software engineering is not a profession, “profession” in this context meaning one of the established academic trades requiring a combination of education, work experience, and crucially- swearing of an oath, in order to achieve membership of a guild.

There is nothing strange about this. Software engineering is after all a young field, and it is only in the last decade or two that it has really begun to touch every part of humanity.

Why shouldn’t organisations be free to hire people who can “just get the job done”? Well, for lots of reasons, but from an ethical standpoint, because employers will make them do evil stuff, and without the backing of a professional organisation with a set of guiding principles the software engineer is powerless to complain when given an unethical task, she either puts her job on the line or puts the wider community in danger.

Any attempt to organise labour will always find natural opposition since there are those for whom deregulation is a short-term benefit. However, in the long run society could be well served by the creation of a guild of software engineers who go through a similar path of training and work experience as say, doctors, architects or lawyers; undertake to uphold a code of conduct; and receive support to resolve ethical dilemmas.

The Problem with Guilds

However, guilds are not without their problems, and it’s fair to say that economic libertarians are generally not in favour. Milton Friedman famously critiqued the guild system in Chapter 9 of his popular work Capitalism and Freedom. Considering the field of medicine (as he rightly regarded it as providing the strongest supporting case for guilds), he ultimately arrived at the conclusion that occupational licensing results in inferior care and a medical cartel.

A more mainstream complaint is that guilds eventually tend to act solely in the interests of their members. Depending on your point of view, and the situation in question this is either a good or a bad thing, but there are certainly cases where guilds have gone rogue. Automobile dealers in the US for example, are an occupational group that are protected to such a degree by state and guild, that guild members are enriched to the detriment of everybody else.

Equally you could argue that some groups just don’t need to be accredited. Possibly a guild of gardeners, or greengrocers would only serve to reduce access to those trades, whilst simultaneously driving up costs, for no real benefit to the wider community.

So Should Software Engineering be one of the Professions?

“as the gatekeepers of their organisation’s ability to execute, software engineers need to be held to account, and be empowered to hold their organisations to account.”

From an ethical standpoint, you could quite reasonably make the argument that the trade most urgently in need of organisation as a guild is software engineering.

Many tasks in the traditional professions have been automated by software. It therefore makes sense to ensure that those charged with automating the work in these fields are held to a similar ethical standard as the existing practitioners.

The consequences of software that does the wrong thing can be anywhere from mildly irritating to devastating, and as the gatekeepers of their organisation’s ability to execute, software engineers need to be held to account, and be empowered to hold their organisations to account.

What should we do?

As software engineers we should internalise the case for guilds from a perspective of utility and ethics, and be aware of the power that we have as those who ultimately realise the will of our organisations.

And in case you were wondering if software engineers really do wield that much clout- remember: the leader of the free world was elected this month largely because of a news recommendation system.