Home Page | Articles
Computing, and software engineering in particular, is moving toward becoming a profession. Although the type of profession it is becoming breaks with the traditional concept of a profession, it is a type of profession which fits the discipline of software engineering better than the traditional model. As the perceptions of the roles and the activities of a particular occupation begin to change, the position of that occupation in the hierarchy from occupation to profession is also open to change. Some occupations become a profession by choice while others are coerced by legal and social pressures into accepting the role of a profession.
As the impact of the behavior of a group of specialists assumes wider significance two pressures develop, one from society at large interested in assuring that the behavior of the specialists will not cause any (more) harm to society. This societal concern is manifested in an attempt to regulate the specialists by legislation. The other pressure that develops comes from within the ranks of the specialists to organize as a group. The motives and goals for such organization vary from the desire for monopolistic control over entry into and the practice of the occupation to the desire to establish a well-defined discipline; one with required curricula and concerned with the well-being of society at large. I believe the underlying motivations for professionalization can be discerned from the Codes of Ethics developed by the professions and the ways these codes are implemented.
Many occupations, at a particular stage in their development, chose to become a profession. This choice is sometimes motivated by fear [see Melford, R.J. "If We Don't License Ourselves, Who Will? ] or concerns with establishing a set of minimal standards for the practice of the occupation [Gotterbarn 92]. Computing is making some very clear and specific movements toward becoming a profession. For example two of the largest computing societies established a steering committee for the professionalization of software engineering. This committee is working on defining the practices of software engineering, establishing education models for the continuing education of software engineers, and developing codes of ethics and professional practices for software engineers.
In this paper, I examine recent developments in several nations computing societies codes of ethics and show that computing is still an emerging profession and that the profession it is becoming is different from the traditional concept of a profession. I further argue that this new concept of professionalism is more appropriate to software engineering than the traditional concept of professionalism. Software engineering is still an emerging profession and some elements still need to be added to its codes of ethics.
2. Emerging Professions
Computing is an emerging profession. Emerging professions include people with significant differences in educational background and commitments to the service orientation of a profession. Currently, one can be a practitioner in computing without any formal training, while those who teach computing tend to be highly trained and recognizable as professionals. This distinction of type and degree of training within emerging professions sometimes leads to a two tier structure as it did in nursing in the United States. In nursing there is a distinction between professional and technical nurses. This has led to a heterogeneous model [Barber]. One could argue that engineering, in the United States, has made a similar distinction in that one can practice engineering without being a licensed Professional Engineer. Computing is at that point where it can decide to become a "profession" , decide to remain merely a profitable occupation, or follow nursing's model and take a multi-tiered approach. This is a significant decision for computer practitioners and for society at large. Many conceptual muddles have to be avoided or cleared up before making this decision. I believe one such muddle has to do with the concept of a professional as it is related to software engineering. I argue that software engineering has made the decision for professionalization, but that the model of a profession it is moving toward is different from the traditional concept of profession used by medicine and law. This newer concept is: more appropriate to the types of interactions in computing, is a model which is currently achievable by software engineers, and will move software engineering in a positive direction. The evidence for my argument is drawn from seven computing societies' codes of: ethics, conduct, and practice. These codes indicate an awareness that a different sense of professionalism is required for software engineering to be a profession. I will also address some of the remaining hurdles in these codes.
3 The Traditional Concept of a Profession
"Profession" is often used as an empty synonym for "occupation." Sometimes the word profession is used as an emotive term recommending that a particular occupation be accorded prestige and high pay.
Several authors [Bayles, Johnson] have specified hallmarks of a professional; generally they include: being a person of above average income because of monopolistic practices by the profession, doing white-collar work, having a code of ethics expressing ideals of service, licensing procedures, and a representative professional association. A profession requires a monopolistic knowledge that circumscribes a clearly defined territory. The traditional model is based on the interaction between an individual professional and a recipient of the benefit of the professional's skill. The recipient may be an individual, organization, or the public at large. Medicine and law are paradigm professions in this sense. Professionals frequently set their own tasks and are not closely supervised. There are two reasons they are allowed to be self-regulating. First, they have mastered a specialized knowledge which is useful to society and not easily mastered by the non-professional. Second, they set higher standards for themselves than society requires of its citizens. Therefore only they will be able to recognize and censure those members who do not live up to these standards. Society in turn generally requires proof of such competence before giving someone license to enter the profession. Entrance to the profession and its standards are generally managed by a single organization. Membership in that organization is necessary for membership in the profession.
3.1 Ethical Obligations of professions
The professionalization of any discipline involves the realization that being a professional involves more than the rigid application of formal principles to the artifacts of that discipline. The practice of medicine is more than the application of drugs to the human body. Physicians are concerned with the well-being of their patients. The professional architect does not merely apply principles of structural stress when designing a building but she is also concerned with the effect of the design on the people who will be using the building. In the professionalization of a discipline, there is a realization of the impact on society of the application of the special skills and knowledge of the practitioner of that profession. There is also an acceptance of the responsibility that comes with the privilege of being allowed to apply those principles. The traditional concept of a profession dictates that professionals go beyond minimal morality, offering legal counsel to the indigent and providing medical service even if the patient cannot pay.
Professions are described as a distinctive subclass of occupations and there are significant ethical problems arising in connection with this subclass which do not arise with other occupations. The professionals unique understanding of professional situations and how to deal with them places an extra set of ethical obligations on the professional. These obligations are sometimes referred to as professional ethics. There are several arguments justifying how one acquires these responsibilities to follow professional ethics including arguments based on social contract theories, legalized accountability, other regarding ideologies, and role responsibilities. Rather than adjudicate between these arguments let us simply say that assuming the role of a professional carries with it the acceptance of these professional ethics.
Given a specialized set of professional ethical problems, one has to decide how to address these problems. The way particular professions chose to approach these problems is found in their codes of ethics, practice, and conduct.
3.2 How codes of ethics, conduct, and practice relate to a profession.
Many authors have been critical of codes of ethics. They have been critical of the way codes have been used. Sometimes major portions of codes are address the not so lofty goal of maintaining the image of the profession rather than addressing professional moral obligations to those affected by the practice of the profession. For example, one might wonder about the lofty goals which led to the expulsion of two engineers from the American Society of Civil Engineers for violating a section of the Code forbidding remarks critical of other engineers. Their critical remarks consisted of revealing the use of inferior and unsafe concrete in the construction of a dam for Los Angeles County.
Sometimes codes are merely used to indicate that the group is a profession and the codes are only mentioned at ceremonial moments. It is claimed that codes are merely public relations tools used to make a profession look good. They have also been criticized because they are often used to implement a conventional rule-following morality. Codes have also been criticized because they are primarily about the relations of one professional to another rather than about the obligations of the professional to society. The codes merely spell out the etiquette of the profession. Michael Davis has argued that a code of ethics is a primarily a convention between professionals. Using this as a model, he views a profession as a group of individuals who want to serve a common ideal and that they could do this better if they could cooperate than if they did not cooperate. He argues that it is this desire to cooperate which is the basis for the authority a code of ethics carries.
Codes of ethics have served a variety of functions and are frequently directed at several audiences. At the simplest level, a code of ethics is a statement of the obligations of individual computing professionals in the conduct of their profession. The code will generally embody a moral commitment of service to the public. Sometimes they are used to clarify expectations and appropriate behavior of professionals. More positive functions of codes of ethics include: making a statement to members or aspiring members of the profession about shared commitments and agreed upon rules, sensitizing members to new issues, and provide guidance to individual members when they are confronted with ethical situations.
In emerging professions they are sometimes used to win public confidence and stave off external regulation. Some codes or parts thereof are disciplinary in order to convey a sense of self-regulation by the profession. They also help sets expectations for employers and clients about dealing with members of profession and socialize novices in field. In the early stages of the development of a profession,, the leaders construct and publish a code of ethics, in an attempt to express and strengthen the community orientation of the group. Because the knowledge on which their occupation is based is not highly developed, the codes they construct are full of value generalities, and therefore hard for the individual practitioner to apply in concrete cases. The emerging profession is also unable to construct the machinery of interpretation and enforcement of its codes that exist in the established professions [Bauer]. As the occupation moves toward a profession, the rules become more specific and codes of practice which include frameworks for computing are included , e.g., see the ACM and BCS codes. Methods are later developed for applying these principles to concrete cases and adjudicating between rules which come into conflict in particular situations.
In an emerging profession, there are numerous organization, each taking a different approach to the disciple. As a discipline becomes professional these societies take on a hierarchical structure, e.g., although there are many engineering societies in the United States, the National Society of Professional Engineers conducts the testing for all professional engineers. Computing is like other emerging professions, without a single representative organization. There is a proliferation of more or less autonomous computing societies, each with their own code of ethics. We will consider 7 distinct computing societies' codes. These societies' codes were selected for their international flavor and the relative size of the societies membership.
Some confusion about codes of ethics arises from a failure to distinguish between closely related concepts about codes which direct the behavior of practicing professions. Moving from less restrictive to more restrictive codes, we first mention codes of ethics which are primarily aspirational giving a mission statement for the profession. There are also codes of conduct which describe professional attitudes and some professional behavior. Codes of practice are very specific and tied closely to the practice of the profession. They are the easiest to use as a basis for legal action. Because practicing professionals deal with human affairs, the underlying ethical principles are the same across professions. Studies have shown that most codes are a hybrid of these three types of code [Berleur 1994].
Although most codes are hybrids, there is a tendency for earlier codes to lean more toward the regulative side than the aspirational side. The original ACM code of ethics emphasized rules of conduct and disciplinary action for failure to follow these rules. Other highly regulative codes consist of a litany of behaviors that are to be avoided.
In the past codes have also been used to justify the professional's claim to autonomy. There are several characteristics of a code used to justify autonomy. First, the code should be primarily regulative, and it should be clear which imperatives are punitively regulative. The code should protect the public interest. The code should specifically address aspects of the profession which pose particular and specialized temptation to its members. The code should be policed.
Several authors have discussed the various goals of a code of ethics [Martin]. These goals of codes of ethics could be ranked from the most benefit to society to most benefit to the individual member of the profession. These goals include:
1 Inspiration and Guidance for ethical conduct.
2 Support those seeking to act ethically by appealing to the public system of ethics established in a code.
3 Education and Shared understanding(by the professional and the public) of standards of practice.
4 Deterrence and discipline for specific actions by sanctioning code violations.
5 Protect the Status Quo by stifling dissent and state minimal level of ethical conduct.
6 Promote business interests by forbidding competitive bidding.
One way to evaluate codes of ethics is to examine which of these functions assumes prominence in the code. The New Zealand Computer Society(NZCS) Code of Ethics and Professional Conduct has imperatives of the professional's relationships with four distinct audiences: the Public, Employers and Clients, the professional Society, and Other computing professional. The primary direction of this code is about the conduct of professionals with professionals. It fits the Davis' model of cooperation cited above. The NZCS code does have a single clause subjecting everything else in the code to the "public interest". This is intended to help society members choose between potentially conflicting imperatives, but it is never spelled out what constitutes "the public interest."
"Members, while pursuing the profession of information processing (the design, construction and operation of information processing systems) will use their special knowledge and skill for the benefit of the public, will serve employers and clients with integrity and loyalty, subject to an overriding responsibility to the public interest, and will strive to enhance the competence and prestige of the profession. "
The Canadian Information Processing Society (CIPS) Code of Ethics and Standards of Conduct addresses a more diverse audience than the NZCS code. The CIPS code has imperatives for six audiences: Colleagues, Clients, Students, the Public, Myself, and the Employer and Management. By separating the client and the employer it avoids the possibility that the interests of the client and the employer may not be identical. The CIPS code is also very careful to avoid a morality checklist approach. It clearly states that the failure to mention a particular obligation does not lessen the professional's responsibility. "It should not be construed to deny the existence of other ethical or legal obligations equally imperative, although not specifically mentioned." The Australian Computer Society (ACS) code of ethics also avoids a checklist approach to a code of ethics. "The list of standards is not necessarily exhaustive, and should not be read as definitively demarking the acceptable from the unacceptable in professional conduct in all practical situations faced by a member."
The CIPS code has one of the strongest and clearest systems of public ethics. It clearly spells out societies' rights when dealing with a member of CIPS and specifies a formal method of complaint if those rights are not complied with.
The NZCS code is primarily rule based and the CIPS code has both an aspirational section--the code of ethics and a rule based section --the standards of conduct. "The Code of Ethics is a set of ideals to which CIPS members aspire. The Standards of Conduct is intended to be more practicably enforceable." The Ethical Guidelines of Gesellschaft fur Infomatik (GI) is the most aspirational of these three codes.
These three codes are a mix of aspirational code giving a mission statement for the profession and regulative code precisely directing behavior. The CPI code and the GI code provide for public forums in supporting and evaluating the ethical choices of their members. This public system of ethics has several advantages. By recounting how a good professional would behave, the code establishes and expresses moral values of the profession and establishes standards for the non-professional. It communicates with its members the organizations expectations of its members, and provides a decision making procedure for the professional.
Only two of the codes examined (GI and ACM) include any mention of a profession which is not primarily individualistic--a profession whose primary ethical relations is between teams or groups of individuals and a customer, client, employer, or society.
3.3 The other sense of a profession
Today there is considerable debate about whether computing is a profession. The model used to address this question is the traditional model of a profession [Dahlbom 1993, Johnson 1994, Kling 1994]. This is an anachronistic approach to the question, given that even the most traditional of the "traditional professions" do not fit the model of a traditional profession.
The arguments that deny computing as a profession are based on the absence of autonomy and self regulation, similar arguments have been used against engineering being a profession. Computing and engineering are not done by individuals, but by teams who are employed by and responsible to a corporation. These individuals are not free to set their own hours but punch a time clock. Computing does not have a representative licensing body so entry into that occupation is uncontrolled. Computing does not have a well defined body of knowledge whose mastery is required to practice computing.
Some engineering and computer societies formulated Codes of Ethics to help claim professionhood. As we show below, even these codes of ethics do not match the marks of a profession.
There are several models of a professional-client relationship [Bayles, 1981]. The "paternalistic model" characterizes the traditional concept of a profession. In this model, because the professional is to some extent in a superior position, the professional assumes much of the decision making power, making decisions believed to be in the best interest of the client. These decisions are based on the professional's concern for the well-being of the client. Computing and engineering, however, have sometimes operated with a different model, namely, an agency model. In this model, the practitioner merely acts as the agent of the client, doing whatever the client requests. The practitioner's special knowledge is not used to help decide what the client should request. The practitioner is merely a "hired-gun" doing whatever is necessary to accomplish the clients request. Questions about how the request is satisfied or the quality of the system which satisfies the request are not relevant.
Given these significant differences between computing and "the professions", it is clear that computing is not a profession in the traditional sense. Should computing strive to be a profession in the traditional sense? One argument for becoming a traditional profession might be that computing practitioners want to be held in the same regard as members of other traditional professions, such as law and medicine. But even these occupations are no longer professions in the traditional sense. All of the arguments used against computing being a profession also apply to law and medicine. Most legal and medical practices are corporations where significant autonomy is surrendered to the "practice". Some of these professions are openly debating their roles, e.g, medical journals are debating whether a physician is merely a "syringe for hire"--the agency model. There is only limited self-regulation of these occupations in part because of the lack of a monopolistic body of knowledge--a new breadth of practices from holistic medicine to acupuncture is being acknowledged. Insurance companies are dictating the practice of medicine, reducing the physician's autonomy. Some have argued that the agency model precludes any special need for ethical training in that all that is owed to the client is professional competence and honesty.
But there is another argument for professionalization of computing. This argument is the belief that a set of ethical obligations--professional ethics--based on responsibility to the client is based on the societal impact of the occupation. Because of the nature and impact of computing, a higher level of care is required. Other arguments for the professionalization of computing are sometimes motivated by concerns with impeding computer risks. Approaching professionalization from these directions requires a different model of the professional-client relation than the traditional model. We used some elements of this newer model in developing the revised ACM code of ethics.
4. IS SOFTWARE ENGINEERING A PROFESSION?
Currently major international computing associations, such as the IEEE-CS and the ACM, are working toward the professionalization of software engineering. They have established a steering committee "for the establishment of software engineering as a profession." Similar efforts are being mounted by several other computing organizations. To answer the question, "Is software engineering a profession?," we first have to re-visit the concept of a profession. I maintain that the traditional model of a profession is not the model being sought in the current efforts toward professionalization of software engineering. Indications of the movement away from the traditional concept of a profession can be seen in the changes to computing society's codes of ethics. The major codes examined here are from the British Computer Society(BCS), the Institute of Electrical and Electronic Engineers-Computer Society(IEEE), and the Association of Computing Machinery(ACM).
4.1 The Early IEEE and ACM Codes.
Both organization's codes were originally adopted in the formative years of computing in the United States. The ACM Code of Ethics was adopted in 1972, the IEEE Code in 1974.
The IEEE was formed from the union of the American Institute of Electrical Engineers and the American Institute of Radio Engineers in 1963 [McMahon 1984]. There was considerable struggle in the organization concerning professionalism, especially difficult for engineers was the concept of autonomy. They felt the tension between the nature of engineering employment, typically salaried employment in the service of a company and that of autonomous professionals, lawyers and physicians. They determined that they should become a profession. One of the reasons for this choice was the lack of employment security in aerospace and military contracts. They lobbied legislatures for more work on social problems, such as housing, transportation, pollution, and crime. They also amended the Constitution of the organization to change the primary purpose for the IEEE from scientific, literary and educational to promoting and improving the economic well-being of the members. This is a typical goal of emerging professions.
They also amended the Code of Ethics to reflect the new direction of the organization. In December of 1974, the Board of Directors approved a new code which consisted of four articles: article one dealing with general ethical and moral guidelines, article two dealing with engineers in their work, article three dealing with engineers and their clients, and article four dealing with engineers and society.
The ACM code, adopted in 1972, is a code of conduct rather than a code of ethics. It is based on a model which tended to list violations and sanctions for such violations. The code has three clearly delineated types of statement: Cannons which are general principles, Ethical considerations which are professional ideals, and Disciplinary Rules which are mandatory rules. Failure to follow a rule will result in some sanction by the association. Although this code was more specific than most early codes, it provided no aspirational direction nor did it provide a way to adjudicate between code imperatives that came into conflict.
4.2 Elements of Codes of Ethics
Professional groups use codes of ethics to specify acceptable ways of achieving their shared goals. The early code of the ACM is regulatory. These early codes were almost codes of practice, judging compliance and sanctioning non-compliance.
Codes have been divided into primarily normative and primarily regulatory codes. The 1972 ACM Code was a highly regulatory code specifying canons of behavior and disciplinary rules. In traditional professions such regulatory codes were justified as part of the social contract the profession had with society. In return for these enforceable moral promises, society granted the profession the right to self-regulation. There are several concerns with this type of code. First it leads to a "black letter law" approach to professional practice- if a particular action is not ruled out by the code then it is permissible. In a rapidly changing discipline such codes are generally out of date and do not cover the significant issues. They are inflexible and unable to address new situations.
A code can also be normative. Norms are "ethical rules of thumb." They are rules that have been developed for analyzing and deciding cases in a particular area of ethics. They tend to be less authoritative than the basic duties stated in a regulatory code. They are a way of formalizing, generalizing, and communicating ethical wisdom and experience in a particular field.
Norms are very different from laws in that they are meant to guide judgement rather than to regulate behavior. A good set of norms gives a person guidance in understanding new situations, knowing what questions to ask and what factors to consider, and formulating an ethical response. A normative code will provide guidelines for professionals to use in decision making. A normative code is justified by appeals to practical experience, role responsibility and ethical principles.
Both regulatory and normative codes tend to come from within a profession. The potential moral authority of the codes comes from the fact that they represent a consensus of the traditions and duties of that particular calling.
4.3 Revised Codes
In the early 1990's, the ACM, BCS, and IEEE codes were significantly revised. As we shall see, the tendency of these revisions is away from regulatory codes toward normative codes. These norms get written as imperatives. Computer scientists and engineers have begun to develop a sense of themselves as a profession.
IEEE Code Revision
In 1990 the IEEE code of ethics was modified to a more compact and direct statement of values and guidelines. Many of the directives from the 1974 code were combined, removed, and modified to produce ten imperatives. These imperatives are considered by the organization as the most efficient and direct means of communicating the guidelines to the membership. The feeling was that the Code of Ethics was too legalistic and "consequently difficult for the members to interpret and follow."
The IEEE code does not go into great detail on the ethical values underlying the code, but it does touch on contributing to society and dealing honestly only by implication when it says,"...we commit ourselves to the highest ethical and professional conduct...". The presumption is that the ideals of honesty and contributing to society serve as the basis for all the imperatives.
Although some general principles -- honesty, privacy, confidentiality, and professional competence-- are in most codes, the IEEE code in its movement toward a more normative code leaves out privacy, and confidentiality. The IEEE code does include principles found only in more recent codes, namely professional review, nondiscrimination, and respect for intellectual property rights.
Earlier codes tended to be directed at protecting the profession rather than society, this is evident in their rules against criticizing fellow professionals. This professional protectionism appears in many of the early codes. In the 1972 ACM Code, a professional is only required to report adverse consequences of projects which are proposed to that professional. The code does not address what to do if you find that someone else is working on a harmful project. The new IEEE Code however, in its first principle affirms the responsibility to "disclose promptly" engineering decisions which might endanger the safety, health, and welfare of the public or the environment. This clearly broadens the engineers responsibility for safety from mere concern with safety related to their own projects to the safety of all engineering projects they may know about. It also broadens the concerns to include public welfare and the welfare of the environment.
ACM Code Revision
The new ACM code of ethics and professional conduct identifies more specific guidelines and rules than either the 1972 ACM Code or 1990 IEEE Code. This is to be expected because we were developing a code of ethics and a code of conduct. The different functions of different types of code effects their content. Codes of ethics, containing ethical principles, are primarily aspirational, stating the vision, objectives, and mission of the profession. They involve little or no coercion. Codes of conduct are more directly related to the profession and make more obvious the issues at stake in different fields. The degree of coercion ranges from warning to exclusion. Codes of practice are very content specific. Sanctions for violations are harsh and form a basis for legal action (Berleur-1984). The revised ACM code is both a code of ethics and a code of conduct. The BCS developed codes of conduct and codes of practice, and the IEEE code is purely a code of ethics.
But the lines between these types of codes are not clear in the revised ACM code. The revised ACM code is a code of ethics and professional conduct. Both types of code were mixed in its 24 imperatives. The code is accompanied by a set of guidelines designed to assist members in dealing with the various issues contained in the code. In developing the code, we placed most of the code of conduct issues in the guidelines. For example, section 1.5 of the code affirms the principle of honoring property rights. The guidelines relate this directly to software licenses and copying software. The guidelines frequently shift into a code of practice. For example there are clear statements about formal design reviews and statements about how to manage confidentiality.
We structured the code with a preamble and four sections. The first section--General moral imperatives--outlines fundamental ethical considerations for any professional. These ethical considerations link the responsibilities of particular computer professionals to fundamental ethical principles. The second section--more specific professional responsibilities--includes the member's obligation to understand and take responsibility for the consequence of their work, to honor contracts, laws, and other obligations, help educate the public and to avoid unauthorized access. The third section--Organizational leadership imperatives-- balances the individualist perspective of section 2 by giving the obligations of those who have leadership roles in organizations. This section is new to computing codes of ethics which have previously only addressed the role of a computing practitioner in relation to their clients, their employers, and other professionals. The fourth section of the code deals with code compliance. Compliance is seen as mainly voluntary.
The first section of the code dealing with general moral imperatives shows how specific professional issues are grounded in general moral principles. This section serves two functions. First, it addresses the attempt to separate ethical issues from professional practice; but more importantly it serves a heuristic function, showing how individual members can apply general moral principles to new ethical problems not explicitly mentioned in the guidelines. Numerous examples of this were given in a paper that was submitted to the ACM Executive Council along with the code of ethics [Anderson 1993].
The new code contains those elements common to most codes; honesty, privacy, confidentiality, maintaining professional competence, and improved public understanding. But it also contains many of the elements that are found in only a few of the newer codes; professional review, honor property rights, fairness, nondiscrimination, and crediting intellectual property.
Many codes advocate the avoidance of negative consequences of professional activities. In the new ACM Code there are general statements dealing with responsibilities in the event of negative consequences. For example Section 1.2 dealing with the responsibility for negative consequences says that a person is obligated to undo or mitigate negative consequences as much as possible. This is clearly a shift from earlier codes. The earlier codes were designed to protect the computing professional. This and numerous other sections are designed to protect society, almost in the sense of strict liability. It does not say that the member is obliged to undo the negative consequence only if they were due to a failure or malpractice of that member. Even if the negative consequence were the fault of the customer's incorrect use of a product, the member is still responsible. The code, at this and numerous other places, first protects society, and then the professional. This is in marked contrast to the 1972 code which regulates the internal relations between computer professionals and only speaks of avoiding negative consequences.
Many codes include acceptance of peer review or audit procedure, but the ACM code moves more toward the aspirational code when it emphasizes the individual's initiative in seeking out professional review rather than merely acquiescing to enforced software quality assurance procedures.
The third section of the ACM Code is strong evidence of the movement away from a paternalistic and self-directed model of professionalism. The Code clearly states that more than honesty and technical competence is expected of the computer professional. The application of technical skills should be guided by concern for the client's and user's rights. The development of a computer system requires a consideration of all stakeholders rights. For example, section 3.5 states "Articulate and support policies that protect the dignity of users and others effected by a computing system. Designing or implementing systems that deliberately or inadvertently demean individuals or groups is ethically unacceptable. Computer professionals who are in decision making positions should verify that systems are designed and implemented to protect personal privacy and enhance human dignity." The original draft of the code also contained an imperative relating all the stakeholders to the design process. "(3.4) Ensure participation of users and other affected parties in system design, development and implementation. Not only should input be sought from system users, but potential users and other stakeholders should be directly involved as collaborators in all phases of the system development cycle...". Unfortunately, in the final draft, both stakeholder and client involvement in the development process was reduced to participation in the drafting of requirements. This section is a backward step to a variation of the agency model or the traditional paternalistic model of professionalism.
There is a significant emphasis on quality in the Code. It is stipulated as a goal of professional work. The imperatives related to quality were among those receiving the highest levels of positive support in the member survey done on drafts of the Code. This relation of quality and ethics is also maintained in the BCS code of conduct.
BCS Code of Conduct and Code of Practice
The stated goals of the BCS code of conduct include: an assertion of the accountability of BCS members for professional competence and the exercise of that competence according to "high standards of personal integrity." The new code was adopted in 1992. The BCS code consists of 22 imperatives, grouped by public interest, duty to employers and clients, duty to the professional, and professional competence and integrity.
The BCS Code of Practice presents the standards of professional conduct in level 1 statements and then includes level 2 statements for each level 1 statement. The level 2 statements are the rationale for level 1 statements. The content of the level 2 statements are practical statements which express particular professional activities. The sections of the Code of Practice mirror the process of software development, moving from requirements, organizational issues, contracting, systems development, systems implementation and live systems. The BCS Code stresses professional development and competency more than either the ACM code or the IEEE code.
Since the BCS code is specifically a code of conduct, it is less normative in its presentation than the ACM or IEEE codes. Like many other codes, the BCS Code includes specific reference to confidentiality, professional competence, and improvement of public understanding. The newer elements, we have seen in other codes, of fairness, nondiscrimination, property rights, and professional review, are not explicitly stated but may be included under imperative 4, "Members shall in their professional practice have regard to basic human rights and shall avoid any actions that adversely affect such rights."
Although the code does not contain an other-regarding statement, the description which accompanies the code of Bye-Law 18, states that ,"...each member should ensure that he observes at all times the principle that, in any conflict in his professional life between his personal interest and his duty to others, his duty to society must prevail."
Like the ACM Code, there are some problems with the BCS Code of Practice and Code of Conduct. The two BCS codes seem inconsistent, e.g., the Code of Conduct section 2.6 states, "Members shall endeavor to complete work undertaken on time and budget and shall advise their employer or client as soon as practicable if any overrun is foreseen." (BCS 1992). This puts an emphasis on a quality product even if there is a delay. The Code of Practice(section 6.3), however, states, " Here you are involved in a professional judgement or tradeoff between reasonable costs and acceptable levels of proving or testing. If you cut corners by, say, reducing system test time, then the likely effect on the operation elsewhere should be evaluated and made know to those who should know." (Emphasis added) This section makes it acceptable to reduce the quality of a product and the decision concerning such reduction belongs to the professional. This decision belonging to the professional rather than the customer is an example of the paternalistic model. The emphasis of several sections on the Code of Practice emphasize cost and service as the primary values rather than quality of the product.
A significant difference between the BCS Code and the ACM and IEEE codes has to do with accountability. The BCS has constitutional authority from the Royal Charter to "establish and maintain a sound ethical foundation for the use of computers, data handling and information technology systems; and to adopt any lawful means conducive to the maintenance of a high standard..."(emphasis added).
This is in sharp contrast to the ACM code. In surveys on the proposed ACM code of ethics distributed to 80,000 members, most of the 24 imperatives received better than a 90% favor ability rating. The section putting a person's membership at risk for code violation only received a 74% rating. Many respondents were concerned about their inability to satisfy some of the more aspirational statements in the code. The problem of enforcement is a difficult one for highly normative codes.
5 Weaknesses in the revised codes
Although the codes have been revised, the revisions do not meet some of the traditional criticisms of codes of ethics. One such criticism is that codes of ethics fail to supply adequate guidance when a difficult ethical decision needs to be made. Sometimes a difficult ethical decision is confused with a decision which simply makes the actor uncomfortable. Many decisions we make involving ethics are difficult, but the source of the difficulty is not an inability to determine which is the right action. In many cases one knows the right action but is not willing to do to it because it requires some other action, such as refusing a lucrative contract, which the individual does not like. In these cases there is a clear moral direction determined once the relevant issues are known, but the actor, for non-ethical reasons, is uncomfortable following that moral direction. Codes of ethics do not and cannot address this type of difficulty. There is another sense of difficult ethical decision which the codes should address, namely those decisions where all choices involve sacrificing something of significant moral value. For professional's such choices may involve sacrificing: a client's right to privacy, honesty, integrity, or concern with the public good.
How are such ethically difficult decisions made? One procedure involves first starting with a clarification of what actions we consider clearly right or wrong in several cases, and then identifying principles which will explain why these actions are considered right or wrong. Once identified, these principles can be used to help us to determine how to act in situations in which the better action is not immediately apparent. The purpose and background of the investigator employing this method has a significant impact on the way these principles are identified and described. The philosopher and the professional practitioner have different requirements and so they have different views of a code's ability to help in such circumstances. The philosopher criticizes codes of ethics because they do not make their underlying ethical principles clear.
What the philosopher requires as an ethical principle involves a high level of abstraction. They would like to characterize the underlying principles of codes in terms of major ethical philosophical systems. They generally classify these principles into two categories, namely deontological and teleological theories. Deontological theories deny that the morality of an action is a function of the actions consequences. Kant denies that morality is a function of the consequences of actions or practices, e.g. Kant held that morality forbids us to lie and that there is no exception. Kant's position is called strict rule deontology; once a rule is established, it is without exception.
If regulative codes are to be interpreted from a strict deontological position then there is no guidance for the practitioner when the imperatives come into conflict. W.D. Ross moderates this strict rule deontology. Ross admits that some duties which arise from our positions and relations in the world may come into conflict. When these duties come into conflict the task of morality is to determine which of the conflicting moral duties takes priority in that concrete situation. From this perspective it is important to be able to understand the priorities among the moral obligations in a code of ethics. In the multiple roles a professional finds herself, the obligations to one part may collide with the obligation to another party. The problem for codes of ethics is that, in general, they do not tell what to do in such cases.
Some codes are more aspirational than regulative. Rather than mandating a particular action they recommend achieving particular results. The aspirational portion of codes have a teleological or consequentialist foundation. One prominent teleogical theory is utilitarianism. The philosopher Jeremy Bentham connected utilitarian judgements to individuals acts, viz,. always choose that action which will tend to produce the greatest good for the greatest number. Mill generalized this principle, viz., choose those rules or practices which, if adhered to or generally accepted, will tend to produce the greatest good for the greatest number. All teleological theories hold that X is good because of something extrinsic to it-something that it will bring about in the world or something that it will prevent. The knowledge of these philosophical principles, unfortunately does not help the professional make moral choices when the imperatives of the code come into conflict.
The average(non-philosopher) person making decisions is not interested in these philosophical theories. Most decision makers function teleologically, i.e., they try to produce good results without considering the moral values that may be sacrificed in the process. Professionals tend to follow out goal oriented procedures. Under this interpretation, it is not a failing of codes that they do not state underlying philosophical principles. It is, however, a failing of the codes when they do help the code user prioritize the imperatives, both regulative and aspirational, in the codes.
Those computing codes which state some priority are so general that they are not useful. For example the New Zealand code says, the computer professional "... will use their special knowledge and skill for the benefit of the public, will serve employers and clients with integrity and loyalty, subject to an overriding responsibility to the public interest..." but does not further define "public interest". The ACM code describes obligations to employers and clients in the same section, ignoring the fact that in many computing projects the employer and the client are different and have different interests.
The code writers are not totally unaware of these difficulties, but at present most computing codes merely recognize the problem without offering a resolution. For example consider the Australian Computer Society code. "The ACS accepts that the standards are ideal, and many not all be achievable at all times in all circumstances. In practice, a member may occasionally find that some standards conflict with other standards, including standards from other sources. On these occasions the member must weight up the relevant factors and choose to act in the manner which is most consistent with the Codes of Ethics, given the circumstances." The problem here is that the difficulties arise when the imperatives of the code itself collide, so the code cannot provide a solution to these difficulties.
Other professionals have addressed this problem of choosing between conflicting moral imperatives in two ways. They might be fortunate enough to have established one clear over-ridding principle, as medicine's "preserve life at all costs". Having one overriding principle does not help in ambiguous cases or when code imperatives collide. The professions of law and medicine have addressed this problem by developing a public system of applied ethics. For example, the American Bar Association and The American Medical Association publish ethics cases and interpretations by members of the profession. These interpretations provide a model of ethical thinking for the practicing professional. Similarly in engineering in the United States, the National Society of Professional Engineers(NSPE) has a board of Ethical Review which publishes the NSPE Opinions of the Board of Ethical review discussing specific ethical cases. These professions also require training in professional ethics as a standard of admission into the profession.
Computing, as an emerging profession has not yet formalized a public standard, but there are movements in that direction in some of the codes. For example, consider the Australian code's "...In the final analysis the member is answerable to other members in jointly determining what is ethical and what is not in particular circumstances. In summary, a member is expected to act at all times in a manner likely to be judged by informed, respected, and experienced peers in possession of all of the facts as the most ethical way to act in the circumstances."
The codes of the computing societies have some weaknesses and different emphases. But the codes and the emerging profession they represent have moved in a positive direction. They are defining a new professionalism and its ethical standards.
6 A New Professionalism
What do these changes in codes of ethics mean? I think there is a common tendency which marks a change in the concept of professional away from its more traditional meanings. In contrast to the traditional paternalistic model of professionalism and the agency model there is another model of professionalism called the fiduciary model. This is a model in which the professional's superior technical knowledge is recognized, but the client retains a significant authority and responsibility in decision-making. "In such a relationship both parties are responsible and their judgements given consideration, but because one party is in a more advantageous position, he has special obligations to the other. The weaker party depends on the stronger and in ways in which the other does not and so must trust the stronger party. In this model the client has more authority and responsibility in decision making than in the paternalistic model, but the client depends on the professional for much of the information on which he [the client] gives or withholds consent."(Bayles, 1981)
The paternalistic and the fiduciary model also differ in how they use a code of ethics. In the paternalistic model, codes of ethics are used as the professional's part of the social contract in exchange for society's consent to professional self-regulation and autonomy. It is the case that many computing professionals do not have the autonomy and the profession is not self regulating. Based on this claim, it is argued that computer practitioners are not professionals. But the absence of autonomy is not only consistent with, but it is the essence of the fiduciary model of professionalism. In the fiduciary model, the code of ethics is not a social contract, stating regulatory rules. The code of ethics function as a set of guidelines for the behavior of the computing professional stating a consensus of the values of the profession. The function of the code is not to protect the profession, but to establish the standards of trust required in a fiduciary relationship.
When looking at the new codes, there is a remarkable degree of ethical consensus. The vast majority still believe in integrity, fairness, human well-being, respect for privacy, professional responsibility and even respect for privacy. The codes do provide a set of shared expectations and obligations that can help define the profession and its commitment to serve the public. That is itself important--and it is consistent with the fiduciary model.
Both the IEEE and ACM code revisions move away from a regulatory model to a normative model code. A normative code is not bound to the concept of an autonomous profession. They both place the "general well-being" of those affected by products of the profession ahead of concerns about the status of the profession.
In aspirational codes some of the regulatory purpose of the code is established by suggesting an appropriate sanction for any given violation, and by requiring professionals to report colleagues who violate the code. This is more acceptable to professionals if the code helps them understand the damage done by violating the code. This approach to enforcement distributes the responsibility for the profession to each professional.
The changes we have seen are that the codes have become normative guides to behavior with a strongly other-directed quality. Some of the codes specifically require whistle blowing if a problem is detected. There is an ethical commitment to quality and the professional has responsibility to the client and to the product. The fiduciary model is an adequate model of professionalism for computer practitioners. This model seems to be assumed in some of the code changes. The codes require more than honesty in following out contracts and requires more than technical competence. Both the client and his environment (quality of life) are to be valued in the fiduciary model. This is evidenced in some of the elements that are unique to the newer codes, e.g., fairness, nondiscrimination, property rights, etc.
The progress toward a workable model of professionalism for computing is not always linear. The changes to the section about participatory design in imperative 3.4 of the ACM Code is a step backward toward "over the wall" software development in which the client's only input is a statement of need and the programmer then develops the system any way he wants and gives whatever is developed to the client. In spite of these occasional backwards steps, the general positive direction is clear.
Software engineering, as a profession, is moving toward a fiduciary model of the client professional relationship, in which there is respect for limited ethical and professional autonomy of the individual member and individual judgements in particular cases. This model is good for software development and is consistent with typical software review procedures. The emphasis on a better process and better quality will result in a higher percentage of effective, within budget, on-time projects. Many of the failings of software engineering in the past are attributable to having this order reversed. It is a mistake to have the primary goal of software development be a delivery date. This, I think, has been realized and is evident in the directions that software engineering is moving.
An early version of this article, presented at the PASE '96 conference, has been significantly modified: to include and argue for a new definition of profession that is appropriate to non-individualistic professions such as engineering and software engineering, relate this concept of a profession to newer codes of ethics, and give a more international basis to the entire argument by including examples and evidence from a broader base of codes of ethics and professional society's initiatives.
Association for Computing Machinery (1992) ACM Code of Ethics and Professional Conduct.
Anderson, R. Johnson, D., Gotterbarn, D. and Perolle, J.,(1993) ACM Code of Ethics and Professional Conduct: Using the New ACM Code of Ethics in Decision Making, Communications of the ACM February 1993.
Anderson, R., (1994) "The ACM Code of Ethics: History, Process, and Implications,." in Chuck Huff and Thomas Finholt, eds., Social Issues in Computing: Putting Computing in its Place, New York:McGraw Hill, 1994.
Barber, Bernard, Some Problems n the Sociology of Professions," Daedalus 92 (Fall 1963); 669-688.
Bayles, M. (1981), Professional Ethics, Belmont,CA.: Wadsworth.
Berleur, J. And d'Udekem-Gevers, (1994) Codes of Ethics, or of Conduct, Within IFIP and in Other Computer Societies, 13th World Computer Congress 1994 pages 340-348.
British Computer Society (1992), British Computer Society Code of Conduct.
British Computer Society (1993), British Computer Society Code of Practice.
Dahlbom, B. and Mathiassen (1993), Computers in Context: The philosophy and Practice of Systems Design, Cambridge:NCC Blackwell.
Davis, M.(1987) "The Moral Authority of a Professional Code," Nomos XXIX: Authority Revisited,ed. Pennock and Chapman New York University Press.
Gotterbarn, D. (1991), "Computer Ethics: Responsibility Regained," National Forum: The Phi Kappa Phi Journal, v LXXI, n 3
Gotterbarn, D. (1992), "Software Engineering Ethics," Encyclopedia of Software Engineering, Ed. John J. Marciniak, New York :John Wiley & Sons, Inc.
Johnson, D.G. (1994), Computer Ethics, second edition, Englewood Cliffs:Prentice Hall.
Kling, R, and Dunlop, C. (1994), Computerization and Controversy, New York: Academic Press.
McMahon M.A. (1984), The Making of a Profession: A Century of Electrical Engineering in America, New York: IEEE press.
Martin, M. & Schinzinger, R. "Codes of Ethics," in Johnson and Nissenbaum Computer Ethics and Social Values,
Melford, R.J. "If We Don't License Ourselves, Who Will? proceeding of the PASE conference
Ross, W.D. The Right and the Good (Oxford: Clarendon, 1930)