Professional Ethics: A Philosophical Analysis for Computer Professionals
This article is a part of a series of blog posts that served as an assignment for the course titled Social Implications of Computing (CIS*3000) during my undergraduate studies at the University of Guelph. It was originally published on a free Wordpress.com site I had created for the course.
Something that we often forget is that with every right bestowed upon us, there is a corresponding duty tied to it. We have the freedom to make our own decisions, however we are also responsible for making decisions that contribute to positive outcomes. This responsibility turns out to be quite significant in society, as it is often translated into a valuable skill for our day-to-day living. Essentially, we need to know how to distinguish between a good decision and a bad decision; something that happens to be directly (and heavily) influenced by our individual sense of morality. However, where the skill actually lies is not necessarily in having the highest of morals, but rather in using the most appropriate standard as the situation calls for it. This is a fundamental concept of professional ethics.
By definition, ethics are “moral principles that govern a person’s behaviour or the conducting of an activity”. They play a significant role in the professional realm. Each day, thousands of professionals are assigned numerous tasks that demand healthy portions of critical-thinking and decision-making, and the proper use of ethics can mean the difference between keeping a job and getting sacked; in some cases, life and death. In light of this, let us take an in-depth look at ethics, and how they apply to us as computer professionals in the professional context.
As you may have already realized, ethics is very complex by nature. Although one might try watering it down to merely a matter of what’s ‘good’ and what’s ‘bad’, that in itself is simply morality. However, ethics is also how morality affects behaviour. With this in mind, let us take a look at some different classifications of ethics:
Metaethics (or Meta-ethics) : What is it to be morally wrong or right? What is goodness? What is badness? Normative ethics: What ought to be done? How should people act? Applied ethics: How to use our knowledge of morals in specific situations? Descriptive ethics: What do people feel is right or wrong? From the aforementioned, what really concerns us the most as professionals (and not just Computer Scientists) are normative ethics and applied ethics. We need to know what we ought to do in different situations as they arise. But first, how do we know if we ought or ought not to do whatever is in question? Let us attempt to answer this question through looking at three important schools of thought: utilitarianism, deontology, and egoism.
Utilitarianism: The Greater Good
Popularized by philosophers and economists Jeremy Bentham and John Stuart Mill, utilitarianism states that an action is good if it results in general happiness and wrong if it results in the reverse, where general refers to everyone affected by the action, not just the individual performing the action. The focus is on the end result – as long as one’s actions lead to favorable consequences for all stakeholders, the action is good, i.e., ethical. Note that regardless of the immediate harm done to any of the stakeholders, as long as the action leads to ‘the greater good’, the action is deemed ethical. In other words, the end justifies the means.
As computer professionals, we find ourselves in a fair number of situations where the greater good does indeed matter the most. More often than not, software engineers working for software solutions companies do so in teams in order to meet strict deadlines, which are rarely met without sleep deprivation. Programmers often put in tons of extra hours towards assigned projects due to the increased pressure stemming from imminent release dates. Is this ethical? Why disturb your sleep schedule for the success of the company? From a utilitarian point of view, it is certainly ethical for professionals to sacrifice some sleep in order to put in extra effort to complete their tasks. This is because those extra hours of work theoretically result in an enhanced product (ignoring the effects of fatigue and exhaustion), thereby leading to increased success of the product, which ultimately affects the whole company, and also the consumers of the product, in a positive manner; more people purchase the product because of its increased benefits, which in turn results in more sales for the company. In other words, there is a gain in ‘utility‘ for everyone.
According to Deontological ethics, an action is considered ethical due to a certain inherent characteristic of it; there is no dependence on its consequence. This makes it one’s ethical duty to carry out this action whenever it is most appropriate to be called for, regardless of its results. Deontology is often considered the opposite of utilitarianism because it is not consequential (based on consequences) – there is no regard for the end result. Let me re-emphasize and point out that an action must be carried out if it is morally good and must not be carried out if it is morally bad, regardless of the outcome(s) of the action.
Every single individual, professional or not, faces situations on a daily basis where he/she is obliged to do something because it is simply ethical to do so. Likewise, computer professionals are responsible for many ethical values, like honesty (section 1.3), maintaining professional competence (section 8.01-8.06) , and honoring contracts and agreements (section 2.6). These duties are laid out by the IEEE/ACM Software Engineering Code of Ethics and Professional Practice (SE Code) and the ACM Code of Ethics and Professional Conduct (ACM Code), and these have been standardized. Why? Because it is ethical to be honest; it is ethical to be competent; it is ethical to be fair and honor contracts, regardless of the consequences. Why is it ethical to be honest, to be competent, and to honor contracts? This question can be answered by other ethical philosophies and theories that are out of the scope of this article (like metaethics and descriptive ethics). The main point with respect to Deontological ethics is that since it is morally good to follow the above codes, it is the duty of all computer professionals to follow these codes.
Egoism: Self-Interest = The Only Interest
Ethical egoism promotes the interests of the self. An action must be performed if it benefits the interests of the individual carrying out the action. In other words, as long as the individual’s interests are benefited the most, the action is ethical. A point of interest is that ethical egoism does not intentionally degrade the interests of others. The promotion of self-interest might detriment the interests of others, but this is not a direct goal of the individual. The main goal is to benefit the individual, and this might indirectly disregard the interests of others.
A splendid example of ethical egoism is the case of Microsoft‘s Windows Genuine Advantage, an anti-piracy system that attempts to counter piracy of Microsoft Windows by obliging users to validate their copy of the Operating System in order to access certain services, especially Windows Update. In 2006, Microsoft distributed a pre-release version of their Windows Genuine Advantage Notifications software for testing purposes through a rather controversial method. Users were notified by the built-in Windows Update of a “critical” update, which has been criticized as a ploy to get users to install the software. When users would see that the update was labelled as high-priority, they would have a tendency to accept the installation, without necessarily knowing what it is. Microsoft’s hostile attitudes against piracy can certainly be applauded, however is it ethical to falsely (note that this can be argued, as the article later points out) label their software in order to gain user agreement? According to ethical egoism, the answer is yes. By gaining user-consented participation in their program, Microsoft was able to carry out its anti-piracy measures, which ultimately resulted in the promotion of its economical interests (Microsoft’s stand against piracy is outspoken, one of the main reasons being its economical harmfulness). Note that even though Microsoft’s customers were compromised (they were ‘tricked’ into giving consent), it was still ethical for Microsoft to do so, as it was only acting in its self-interests.
As mentioned in the beginning of this article, what we really want to be proficient in is assuming the most appropriate ethical stance when dealing with a situation. The above analysis of the three classifications of ethics shows how they apply to certain situations that computer professionals face. Obviously, one can not rely on one specific school of thought for every single problem, as one point of view might be ethical in certain situations, but it might be unethical in others. Therefore, we must be able to analyze each problem we are faced with thoroughly, and then evaluate the best possible solution through the efficient use of our resources. For the purposes of demonstration, let us perform an ‘ethical’ exercise and see how utilitarianism, deontology and egoism come into play when solving a problem:
Study the following situation and come up with a suitable solution:
You are part of a team working on a software project that was assigned to your team two weeks ago. Each individual of the team has been assigned a certain portion of the work. All of you have been working very hard since the beginning, and are currently nearing completion of the development phase. Due to the strict deadline and the huge amount of work that needs to be done, your team has designed a strict schedule and has budgeted its time accordingly. Failure to stick to this schedule by the hour could result in a poor job, which ultimately would result in economic loss for the team. Unfortunately, your colleague has fallen seriously ill and won’t be able to contribute towards the final critical component of his work. You take a look at his incomplete work so far and realize that you can figure out a solution and complete the portion that he was supposed to have finished. You do not get bonuses for extra work; all your income is from the success of the software. What do you do?
The first thing you need to realize is that your ultimate interest in your profession is arguably economic – money. So using an egotistic approach, you want to do what yields you the highest net income. This means that you have to put in extra undesirable effort from your side in order to complete your colleague’s work. However, this would lead to the scheduled completion of the project, which is the most desired outcome for the whole team, and to those who purchase (and/or distribute) the final product. From a utilitarian point of view, sacrificing your time and interests is necessary for the good of your team. However, is it truly your responsibility to do so? Do you really have a duty to cover for your colleague? According to the ACM Code, a computer professional must “strive to achieve the highest quality, effectiveness and dignity in both the process and products of professional work.” (section 2.1) The code explains that “the computing professional must strive to achieve quality and to be cognizant of the serious negative consequences that may result from poor quality in a system”, since “excellence is perhaps the most important obligation of a professional.” Deontology implies that you have a duty to ensure that your software is of high quality, which perhaps can’t be achieved without the completion of the component of the software assigned to your colleague. In other words, your team (including yourself) wants to make good money, and you know how to effectively complete your colleague’s work, hence you have a duty to make the extra effort and finish off your colleague’s work, as doing so would lead to a desirable outcome for the whole team. Thus, from these perspectives, the best solution would be to take the road of the Good Samaritan.
We have seen how the three philosophies – utilitarianism, deontology, egoism – apply to ethics in the context of computer professionals. This article was written with the goal of enlightenment and refreshment. As computer professionals, we must improve our professional standards by understanding ethics at a deeper level. This ensures that we can contribute well to society, and enjoy ourselves while doing so.