On The ACM Code of Ethics
Apparently we (programmers) are philosopher kings.
Preface
This essay was written for an assignment given as part of the Winter 2025 offering of CS492 — Social Implications of Computing at the University of Waterloo:
Briefly describe, in about a page or two, the most important / significant parts of the ACM (or IEEE CS) code of ethics. Then briefly describe, in your opinion, the ethical standards according to which computing professionals should behave. Comment on how your ethics match or differ from those of the ACM and/or the IEEE Computing Society code. Do you think your ethics match well with the actual behaviour of tech professionals and tech companies?
It is now over a year old. At the time, I was not equipped with the frameworks to go far beyond standard liberal institutional critique. I enjoyed writing it though. So I will share it here.
The computer programmer is a creator of universes for which he alone is the lawgiver. No playwright, no stage director, no emperor, however powerful, has ever exercised such absolute authority.
—— Joseph Weizenbaum (8 January 1923 — 5 March 2008)
Overview
The ACM (Association for Computing Machinery) Code of Ethics & Professional Conduct (henceforth “the Code”) sets forth a moral and professional framework for computing professionals. In this manner, the Code can be seen as playing a similar role in computing as the Hippocratic Oath plays in medicine. In fact, the key doctrinal aspects of the Code seemingly imply quite similar responsibilities of beneficence, non-maleficence, confidentiality, and professional integrity.
This parity is rather unremarkable. Both the Hippocratic Oath and the Code set out to be moral guidelines for professions that hold power over the wellbeing of others. While more granular principles of the Code—like taking care in modifying interfaces as not to impact the work of others—are inscrutable to those outside the computing space, the broader strokes of the Code fall neatly into the classic Voltairean adage: “With great power, comes great responsibility.”
There is however, a very significant disparity in both the extent and type of the power and responsibility attributed to computing professionals. What is implied by this disparity, and by extension the Code itself, is perhaps more significant than any individual principle it holds.
Do no harm… Unless you can justify it
At a glance principle 1.2. of the Code, titled “Avoid Harm”, would indicate a doctrine of non-maleficence. Under this view, one would believe this tenet is unmet by many. However, the Code makes no such compulsion. Much to the contrary, it makes special consideration for systems whose intention is harm:
When harm is an intentional part of the system, those responsible are obligated to ensure that the harm is ethically justified.
This excerpt is a microcosm of a unique and important narrative that exists both within the Code, and within the broader culture of computing since its naissance: practitioners of computing are not only tradespeople, but moral agents who mustn’t capitulate to ethical relativism. We see this in Principle 2.3 of the code:
Computing professionals must abide by [laws and regulations] unless there is a compelling ethical justification to do otherwise. [Unethical rules] should be challenged.
Perhaps even more striking is Principle 2.8, which states:
...computing professionals should not access another’s computer system, software, or data without a reasonable belief that such an action would be authorized or a compelling belief that it is consistent with the public good.
Compelling belief. This is the threshold the code sets for computing professionals to act outside the confines of what is permitted. While a doctor is obligated to act in the best interest of their patient, at no point are they given the responsibility, or credibility to make moral judgements. Practitioners of computing in contrast bear a much greater weight: to apply near Cartesian scrutiny to the establishment, to judge, to dissent, and to discern when it is necessary to revolt, or possibly to harm. This decision—in the eyes of the Code—should begin from its categorical imperative: “the public good is always the primary consideration”, which computing practitioners apply in self-regulation and in cooperation with the powers that be.
An (un)professional opinion
One would struggle to formulate a moral argument against the general idea of holding the “public good” in the highest regard. Thus, in many ways the Code aligns closely with my own internal ethos; especially now, with flame of youthful idealism within me still unquenched.
Those who wield the knowledge to control and create systems through computing are few—relative to the general populous—and in many ways have disproportionate ability to make impact. Though unlike most power imbalances this ability does not come from wealth or influence, it comes from skill, from speaking the language of the machines the world has come to depend on. It is tempting to mythologize computing professionals, but we must not delude ourselves with the fantasy of ‘great men’ or crown ourselves philosopher-kings. Even as many of us are well versed in logic and formal reasoning—in rational thinking—these are not sufficient criteria for moral agency.
As with any field, the most powerful knowledge in computing is often the most arcane and esoteric. Be it the bleeding edge of AI or the legacy systems written in PERL and COBOL, real impact is made only by those few practitioners who have dedicated their lives to their trade. The Code itself gives us Principle 2.6, which instructs us to “perform work only in areas of competence.” It is however the same Principle that closes with
A computing professional’s ethical judgment should be the final guide in deciding whether to work on the assignment.
We would not entrust an ethicist to engineer a frontier language model or maintain a codebase older than its creators. Why then should we entrust computing professionals with moral authority? One cannot exhibit moral agency without awareness, and no degree of awareness in computing innately translates to an awareness of ethics, of social and historical context.
The Code at its core is both just and righteous. Those practitioners of computing capable of empowering and protecting the welfare of the many, should. Further, when the powers that be do not act in the interest of the “public good”, those of us capable of interdicting and disrupting their actions, or even dislodging them from their positions of power, should. The “public good” should be paramount. However, when the impact of computing is as far reaching as it is now, the determination of the “public good” and an ethical approach to its furtherance cannot be left only to practitioners of computing. In principle, ethical decision-making should not rest solely in the hands of those who build technology, but in interdisciplinary collaboration with those who study its impact on the world we are shaping.
When Code cannot be Conduct
In principle, the ACM Code sets forth an admirable vision of ethical computing—one in which professionals prioritize the public good, resist unethical pressures, and act as responsible stewards of the digital world. In practice, however, adherence to these ideals is often the exception rather than the rule. The very economic and societal structures that have enabled the computational golden age we now inhabit are the same ones that contradict and undermine the public good.
Cloud platforms have empowered countless developers to create and scale groundbreaking technology, yet they simultaneously embody the contradictions of the modern computing economy. They profit immensely from open-source work while often failing to contribute meaningfully in return. When maintainers attempt to shift their licensing to protect their work from unchecked corporate exploitation, they are met with backlash—accused of betraying the very principles of openness that the tech industry itself commodifies. The ethical burden is placed not on the platforms that extract value, but on the maintainers who are forced to adapt in response to a system that does not reward sustainability.
This is the core gap between the ACM Code’s idealized ethical principles and the reality of professional conduct: it assumes that practitioners alone will bear the weight of enacting these ideals. The Code encourages whistleblowing, responsible dissent, and prioritizing the public good—but it does so in a world where these actions often come at great personal and professional risk. Ethical computing is not simply a matter of individual conviction; it is constrained by corporate interests, regulatory gaps, and financial pressures. Even the most principled professionals cannot reshape the system alone.
The ACM Code provides a framework, but frameworks alone do not create change. Ethical computing requires more than well-articulated principles—it requires structural support, collective accountability, and an acknowledgment that the realities of power, profit, and self-preservation often stand in direct opposition to the public good. Unless these realities are addressed, the ACM Code will remain as it is: a beacon for the idealistic, and a reminder of the world that could be, but isn’t.
Reading List
ACM Code of Ethics and Professional Conduct, Association for Computing Machinery (ACM). Available: https://ethics.acm.org/.