Developing a Code of Ethics for Software Engineers
The Public Interest Should Be Front and Center
Given the concerns about the security of our online data and personal information used by the likes of Facebook and others, the time is right to expand those concerns to software engineers and ask the important question: Should ethical standards be set for what is right and what is wrong during the process of engineering and developing new software.
I recently read an article by Olga Mack in which she asks some important questions about the work of software engineers:
- What would you do if your superior asks you to archive all the emails and web activity logs of your coworkers and you get a sneaking suspicion that the formal legal company channels were ignored, though your coworkers would likely never know?
- What if your company asks you to create software to aggregate content without paying or giving credit to creators and creators would probably never find out?
- Would you create software to do these and numerous other questionable actions? How many questions can and should you ask before you begin?
The burning question is what is legal and what is ethical? These are not the same thing. The law establishes a minimum standard of behavior and details what will happen if you fail to comply. Ethics is about what is right and proper when viewed from an ethical perspective: what are the potential consequences of your action; do you have a duty to stakeholders and what are your ethical obligations to them.
These questions are largely unanswered perhaps because the software industry is still in an infant stage compared to more mature industries. Moreover, it doesn’t seem as though those involved with the software industry care very much about ethical standards – at least that’s my take on it.
Mack points out that there are some fledgling attempts to set ethical standards including by the International Standard for Professional Software Development and Ethical Responsibility by the Institute of Electrical and Electronics Engineers and the Association of Computing Machinery (IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practice).
According to the preamble of the joint statement of ethical standards, “Computers have a central and growing role in commerce, industry, government, medicine, education, entertainment, and society at large. Because of their roles in developing software systems, software engineers have significant opportunities to do good or cause harm, to enable others to do good or cause harm, or to influence others to do good or cause harm.”
The statement then addresses eight principles, which can be accessed here. Basically, those principles address the public interest obligation of software engineers: acting in the best interest of clients and the employer, the need for integrity, independence, and professional judgment, the need to follow an ethical approach to the management of software development and maintenance, and to promote an ethical approach to the practice of the profession.
The principles make sense from an ethical perspective and software engineers. Moreover, software engineers would benefit from an ethical decision-making process to deal with issues, such as those mentioned before, that arise in the practice of their profession. In other words, how can they effectively deal with ethical dilemmas. Here are my thoughts.
- Gather all the relevant facts: who, what, where, when and why.
- Identify the stakeholders.
- Determine the ethical issues.
- Analyze the issues from an ethical perspective: consequences of actions, duties to others.
- Determine the outcome that maximizes the benefits to all while minimizing the harms.
- Check to see that obligations to stakeholders have been met.
- Check yourself before deciding what to do.
I’ve found the seventh step is often a quick way to focus on the ethical issues and determine what is best to do. Software engineers might ask: How would I feel if the decision I make is a front page story in the news media? How would I feel if the reasons behind my decision were discussed on social media? Would I be proud to defend my decision if questioned?
The time is right for a formal code to be developed with actionable steps if the ethical principles are violated. Like other professions (i.e., physicians, lawyers, accountants), software engineers need an association to serve as the professions’ authoritative body to ensure the process of software development serves the public interest. In other words, violate those standards and you will be sanctioned accordingly.
Blog posted June 4, 2019 by Steven Mintz, aka Ethics Sage. Visit Dr. Mintz’s website and sign up for his newsletter. Follow him on Facebook and “Like” my page.