Principle 3.1 - Promote public good


The following is the Code 2018 Draft 2 version.

If you wish to contribute to this section: Reply to this post with your suggested re-wording and a justification for your proposed changes.

3.1 Ensure that the public good is a central concern during all professional computing work.

The needs of people—including users, other people affected directly and indirectly, customers, and colleagues—should always be a central concern in professional computing. Tasks associated with requirements, design, development, testing, validation, deployment, maintenance, end-of-life processes, and disposal should have the public good as an explicit criterion for quality. Computing professionals should keep this focus no matter which methodologies or techniques they use in their practice.




Suggested Wording:

Computing professionals should keep this focus and use appropriate public good indices no matter which methodologies or techniques they use in their practice.


I believe it is hopeless to usefully include the notion of Public Good in a code of ethics, and I’ll argue why below.

In our attempts to define the Public Good, we usually form one or several of the following theories:

  • The public good is a commonly-held value
  • The public good is a value considered wiser than others
  • The public good is a balance of goods

All these are problematic.

For a start, even if there was a reliable way to poll a population for commonly-held values, how statistically significant must one good be before it gets promoted as public good? And would a good that’s of vital importance to a minority fare worse than one that’s of minor importance to a majority? As for “wiser” values, we run into issues regarding the process for democratically deriving them, if there is one. The public good as a “balance” of goods may look like a safer option, but that is really a circular argument: we can’t define the Public Good until the balance of goods has been struck, which is precisely what we’re trying to achieve.

Therefore, there is no reliable way for a software engineer to discern which of all possible goods is the one that truly benefits the public.

The Public Good is even more elusive when we attempt to apply it to the practice of software engineering. Unlike practitioners of Public Relations, Accounting, or Law, Software Engineers make a product that cannot be aware of borders or applied to one public but not another. Software can too easily be transferred between countries, and it is by and large portable enough to be ran on standard computer architectures, regardless of the population segment the computer owner belongs to.

More detailed and powerful criticisms of the notion of Public Good have been made elsewhere (1, 2), not least as a result of its inclusion in Codes of Ethics from other fields. Arguing whether the notion is of any use at all is beyond the scope of the present comment, but the point is that given the complexities associated with it, and given the inherently supranational nature of software, the notion of Public Good is of no practical use in a Code of Ethics.

If the Public Good is to be our moral compass, then an informal and vague definition of the Public Good is as disorientating as a demagnetised compass (at best) and can serve to justify immoral acts (at worst).

Therefore, I strongly suggest that we remove any mention of the Public Good.

Principle 2.8 - Avoid unauthorized access

You are making something simple complex. The public good isn’t a set of values, or a balance of goods, but simply the public welfare, or the benefit of society as a whole. The point here being that an ethical practitioner shouldn’t take a project which, while individually profitable, are harmful to the greater society they live within; that we have to take the effects of or work on the greater society into account when we do said work, and that we should strive to make certain that those effects are good or positive.