You've found a serious security problem in your company's web application—one that puts your customers at risk of identity theft. Despite your protests, the problem is given no attention and persists for several weeks. Would posting an anonymous message to a public mailing list alerting your customers to the problem be an ethical thing to do? If your employer finds you out and fires you, is that a principled act or a dastardly one?
Ethics is the branch of philosophy concerned with morality—good and evil, vice and virtue. How can we evaluate an act as being right or wrong? When faced with an ethical dilemma, how can we make the best choice? While people may proclaim their own system of morality to be the only correct one, all systems of ethics have deficiencies and criticisms. In the end, each of us is left to decide our code of ethics for ourselves.
Philosophers have grappled with this problem for millennia, and three main threads of thought have emerged. The first is teleological ethics , where "right" is defined as what leads to the best consequences. This encompasses theories such as utilitarianism, which holds that one must pursue "the greatest good for the greatest number of people." The second is deontological ethics , where "right" is defined by duties and rules, such as "It is wrong to lie." Here, we find the divinely ordained moral codes common to various religions, as well as the idea of the social contract—a set of rules by which people who unite into a society agree to abide. Finally, we have virtue ethics , which takes the question "Is this act right?" and turns it on its head. Instead, it asks, "What would a virtuous person do?" At first brush, this seems like a very circular definition of ethics, and it has been duly criticized as such. However, when faced with a moral dilemma, the answer to the question "What kind of person do I want to be?" can provide penetrating insight into the merits of one's choices.
While they employ different means of argument to get there, these three schools of ethical reasoning have a considerable amount of overlap in acts and precepts they deem acceptable. Most notable amongst these is "The Golden Rule," frequently stated as "Do onto others as you would have them do unto to you." This formulation often comes under fire as being too facile, and, indeed, if you look at it on a superficial level, you will find superficial problems. What about if people like to be treated differently than you do? Could a thief not argue that since a judge wouldn't want to be sent to jail, the judge shouldn't send him to jail either? This thief, however, would probably prefer that anyone stealing from him be duly punished by the judge. Thus, a less pithy but more comprehensive way of expressing the Golden Rule might be "Treat people the way you would like to be treated if you were in their shoes."
What does this have to do with testing software? Nowadays, software has a profound impact on people's lives. Software's proper functioning—or lack thereof—dictates whether or not people get correct utility bills, a mortgage from their bank, or particular attention from law enforcement. In the case of medical or embedded software especially, software malfunctions may result in physical injury and death.
As software professionals, then, what are our responsibilities? Surely we have many of the same duties we would in any workplace. We have obligations to our peers and customers, such as dealing with them respectfully and with