By Jerry Cavin, Senior Software Engineer
When I was student learning to become an engineer, one course not required for my degree was Ethics. But because of my curiosity (and friends that were Philosophy majors) I took some classes in Logic and Ethics. The study of Ethics is the branch of Philosophy that examines the principles upon which something is determined to be right or wrong; and I quickly became fascinated with its history and the many debates on ethical issues. But, I was also surprised to learn of the links between the ancient philosophy of ethics and modern day engineering.
One of the most important Philosophical works on Ethics is Aristotle’s collection of scrolls called Nicomachean Ethics, which became the foundation in the study of theology and law from medieval times and is still relevant today. Aristotle asserts that the highest aim in life is happiness, which is attainable by living a life of virtue. He identified two types of virtue that must be realized. The first is moral virtue, which is developed by the daily repetition of moral acts. Moral virtues are an individual’s positive acts as defined by their societal system of beliefs. They were implemented as judicial laws and theological laws.
The other type of virtue Aristotle declared is intellectual virtue, which is developed through education. Aristotle’s intellectual virtue rose to prominence during the medieval times in the form of Guilds — a word derived from the Saxon word “gilden” which means “to pay”. Guilds were originally established to provide its members in a small geographic area with a stronger voice to protest the excessive taxes levied by the lords and land owners. Members of each profession would often create their own guilds. From Apothecary Guilds to Writer Guilds, these Guilds created the first ethical guidelines for the professional worker. In addition, the guilds also regulated pricing policies and quality of workmanship to protect the end consumer.
As the free market expanded geographically, the localized medieval guilds became impediments to rapid economic growth. Trade over vast regions could not be controlled by the guilds whose members were confined to cities and villages. During the Industrial Age the field of engineering experienced rapid growth and the guilds were replaced by trade unions to represent the workers. And professional qualifications became managed by universities and professional societies. Professional societies were created for many occupations including architecture, law, medicine, and engineering. During the 19th century, engineering evolved into its own distinct profession, as well, and professional societies soon followed. In the United States, the American Society of Civil Engineers was formed in 1851, the American Society of Electrical Engineers in 1871 and the American Society of Mechanical Engineers in 1880. However, in the early professional societies, ethics were more commonly regarded as a personal responsibility rather than a professional one.
At the beginning of the 20th century there were a number of catastrophic failures with significant loss of life due to poor quality of engineering practices. In 1904 a train was crossing the Eden Colorado Bridge when the bridge collapsed killing 111 people. In 1907 and 1916 there were two Quebec City Bridge collapses with a combined total of 86 people killed, and the Division Street Bridge in Spokane Washington collapse with 5-7 (reports vary) people killed. These are a few of the major structural failures that had a profound effect on the engineers and professional societies. In response to these failures they established a set of formal qualifications for professional engineers that involved a combination of education and experience.
Today’s professional societies continue a long and noble goal of protecting the public by establishing a standard of intellectual knowledge and ethics of their members. In addition, these professional societies established and adopted the first ethical guidelines for engineers. Societies such as the ACM Codes of Ethics, the IEEE Code all have created ethical guidelines for software engineers and electrical engineers. The professional society for software testers is the Association for Software Testers, which has simply adopted the ACM Code of Ethics. Consequently, some software testers are concerned that existing ethical guidelines for testers are not specific enough. One of them is James Bach – software tester, author and lecturer – and I encourage you to read his thoughts on the subject and his list of ethical principles.
At the turn of the 19th century the establishment of ethical guidelines for engineers was produced after a series of catastrophic events that resulted in loss of life. Recently we have witnessed a series of catastrophic software failures. After spending millions of dollars the government rollout of the Healthcare website has been a total flop. In 2007 software bugs that were found in medical devices caused tens of thousands of the devices to be recalled. In 2004 the Air Traffic Control System in the Los Angeles airport lost contact with 400 airplanes when software caused the voice communication system to shut down. In 1999, the NASA Mars Orbiter, a $125 million spacecraft, was sent crashing into Mars because of a simple mathematical software mismatch. In light of these events, perhaps it’s time again to remind the next generation of test engineers of their ethical responsibilities to protect the safety, health, and welfare of the public. As Aristotle put it, “we are what we repeatedly do; excellence, then, is not an act but a habit.”