The programmer's oath – an iOCO perspective
By Denzil Govender, iOCO Head of Technology.
Software is all around us – almost everything has a software component. Without it, banks and hospitals would grind to a halt, transportation would be non-existent and telecommunications would go silent – desktops, laptop and phones wouldn’t operate. Society will be plunged back to the Stone Age. More seriously, we wouldn’t have Facebook and Instagram. I don’t think civilisation understands just how much they depend on programmers. How much they trust us.
But are we, as software engineers, exploiting that trust?
Bill Sourour, veteran Web app developer and architect, posted on his blog how, at 21, he had landed a full-time coding job with an interactive marketing firm in Toronto, Canada, a country with strict regulations governing the advertising of prescription drugs. For one Web site, targeted at young women, he was asked to code up a quiz whose questions would always lead to his client’s drug as the final recommendation. This practice was not illegal, but one day he was alerted to a news report that a young girl who had taken the drug had killed herself. That was when he discovered that some of the main side effects of the drug were severe depression and suicidal thoughts.
As software engineers, on a daily basis, it doesn’t often feel like we are faced with moral and ethical decisions. Usually, we are trying to figure out how to implement a solution, or how to fix some bug. But Sourour’s story should give us pause for thought.
If you were in Sourour’s shoes and your manager handed you a specification that blurred the lines of your morality, what would you do?
A recent Stack Overflow study revealed how 100 000 developers worldwide would respond when faced with an unethical request. Only 58.5% stated they would say no if they were asked to write code for an unethical purpose, while 36.6% were more ambivalent and stated it would depend on what it was, and 4.8% said they would be prepared to do it. It seems there is definitely a grey area around ethical and moral decisions, making it difficult to define the lines that shouldn’t be crossed. Furthermore, more than half of the respondents considered upper management responsible for ethical matters and any consequences that could arise from bad decisions.
It’s easy to look at a product specification and think “that was the responsibility of the product team”, and it’s true that the people coming up with the ideas may have not been developers. But as software engineers, we are responsible for the implementation, at a minimum. Being asked to do something in a user story or by a senior member in your team does not absolve you from your responsibility to consider whether it is a wise idea.
For example, in the US, for implementing software which allowed cars to recognise when they were being tested for fuel efficiency and display false readings, a Volkswagen engineer received a three-year prison sentence and a $200 000 fine, despite not being the “mastermind” behind the plan.
The bottom line is that the buck stops with us. In the words of Sourer: “As developers, we are often one of the last lines of defence against potentially dangerous and unethical practices.
"The more software continues to take over every aspect of our lives, the more important it will be for us to take a stand and ensure that our ethics are ever-present in our code.”
It is time to act by doing the right thing, even when the decision might be unpopular or come at a price.
It’s much easier to raise potentially unethical situations when you have some idea of what unethical means to you. Unlike the medical and legal professions, there is no universal code of ethics for software engineers; there is, however, a really useful set of rules developed by the IEEE Computer Society, which unpacks the moral and professional commitments of software engineers. Below is the short version. For the full version, click here:
Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following eight principles:
- Public: Software engineers shall act consistently with the public interest.
- Client and employer: Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
- Product: Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
- Judgment: Software engineers shall maintain integrity and independence in their professional judgment.
- Management: Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
- Profession: Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
- Colleagues: Software engineers shall be fair to and supportive of their colleagues.
- Self: Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.