An ethical oath for programmers


#1

Originally published at: https://boingboing.net/2018/02/26/pon-my-oath.html


#2

You had me at Spock.


#3

The ACM got there first:


#4

I’ve found it incredibly difficult to find a job that meets these requirements and also provides enough income to pay a mortgage and put children through college.


#5

I will remember that I do not write code for computers, but for people.

Well, perhaps you do, but a lot of what I do is code to tell other code to do something so that a person doesn’t have to do it. I guess in a way it’s to keep a human from having to do it, but in the end I suspect we hire fewer humans because of it (or even can get rid of a few), so…

I will be diligent and take pride in my work.

But this. This. If only more developers took some pride in what they were doing (and like everyone, I am guilty of this from time to time, but I try to at least take pride when my name is pinned to something or I develop a system that other people see or query from time to time).


#6

This is needed for all humans / mutants inhabiting the universe.


#7

Four shall be the number of spaces thou shalt indent, and the number of the indenting shall be four. Eight shalt thou not indent, neither indent thou three, excepting that thou then proceed to four. Tab is right out.


#8

Most of this comes down to basic professionalism, of the sort any doctor, lawyer, engineer, accountant, or advisor might practice. (And since there are almost no technician-class programmers left, only software engineers, that seems reasonable). But the parts that aren’t basic professionalism are a bit vague and unhelpful.

“first, do no harm” is a pretty useful first-cut piece of advise. “warmth, empathy and understanding” are rather less actionable. And opposing them to “clever algorithm or technical argument” is more confusing than helpful. What technical arguments would get in the way of understanding? Because all the ones I can think of – limited resources such as developer time, customer price tolerance, available memory, available MiPS, maintenance costs, and so on – are the constraints that separate the real world from a platonic ideal. There isn’t much in this oath in the way of “thous shalts” to get a programmer out of trouble, or “thou shalt nots” to help her avoid it in the first place.

Ethics features very prominently in engineering formation. It comes up much less often in practice, not because engineers are unethical, but because major ethical problems aren’t usually laid at our feet. Rather, those tend to come up as business strategy. The engineers didn’t decide to sell your data to a marketing firm. The engineers didn’t decide they could get by with only six months and 70% of the manpower that basic sense told them a project would need. And the engineer doesn’t work on a contract he can say “no” to: he works for a salary which is very painful to lose. The issue of software engineering ethics is no different than the issue of general engineering ethics, and we’ve been beating that dead horse for 80 years or more.

And even when there’s an engineering solution, it’s not always clear that there’s a problem until it happens. For example, see Falsehoods Programmers Believe about Names, or Falsehoods Programmers Believe about Time. Humans have made their lives a lot more complicated than is obvious to most other humans. Most of the time, programmers just trying to implement something workable will not even know there is a problem to be solved.

An oath cannot be based on good wishes alone. It must have something that is actionable, to which practitioners can be held accountable.


#9

So much for Google, Facebook, Uber, etc etc etc


#10

I think what you’re looking for is alterations to the universal declaration of human rights, to add your specific principles, and have them applied universally. This is not an oath for programmers.

Honestly I get rather peeved by the implication that programmers are somehow special beings who are drastically re-making the world. That we are the chosen race, the smart ones, the special ones, that will lead the ignorant masses into the light of the computing age. That we are living in a grey-scale Apple advertisement. How can programming be simultaneously miraculously special and banal, both universal and a specific enough domain that we can ask for one point of view can apply to all of it. The idea that programming is so special that it needs a hippocratic oath is demonstrative of the endemic ego problems in the industry.

Why should we not have such an oath for congress? For the police? Insurance industry? For the soldiery and espionage industries? Are all of these excluded from ethics or should programmers refuse to work for these? Do the ethical debates and concerns of those examples no longer apply because some if statements got involved, or is this really an attempt to sideload a specific ethics into existing systems.

We all once believed that the internet was going to erase national borders. That universal communication would supplant the need for national identity. That the sci-fi future was now and the world was going to forever change. It didn’t happen.

I am a programmer. I disagree.


#11

No we don’t need to start that war again… or emacs/vi or whatever.


#12

Impossible. The point of developing software is to transition a menial* job performed by a human to an automated job performed by a machine. The person who’s job is eliminated is harmed. As are all the people who would come to occupy that job.

* “Menial” is increasingly becoming “any”.


#13

I will only undertake honest and moral work. I will stand firm against any requirement that exploits or harms people.

The next passage needs to be about pride of craftsmanship when making a latte.


#14

Missing perhaps: I will not write code that disrespects the four freedoms.


#15

Yeah I think I have broken about half of them, especially the bit about not exploiting or harming people.


#16

All software has humans at the very end, even if you write code that instructs a computer to run code on a robotarm that pushes a button on a computer. And your code goes on a big pile of other people’s code and while you may never look at it again, other programmers will inevitably look at it.

So you’re always writing code to improve people’s lives and you’re always writing code for other people to read and reuse.


#17

There is, however, an increasingly problematic lack of ethics in the IT industry, though. Privacy and security, as is apparant by the large amount of major dataleaks, are often either an afterthought, or ignored entirely. “Silicon valley” mostly only thinks about the social implications of their startups after problems appear and then rarely combats the issues properly.

This problem isn’t just on the programmers though, this needs a cultural shift within the entire industry to really improve. That said as a programmer, the very least you could do is to write clear, secure code that protects the privacy of the data flowing through it and to update that code as needed to keep abiding by those values.


#18

Not to mention that a lot of software developers work on weapons and surveillance systems.


#19

Not a word about unit tests, therefore lacks lasting value


#20

As far as I know, the insurance industry has no oath of conduct. But all the others you mention definitely do.

That’s the one that nails me, too. But I haven’t found a morally benign employer who will pay me enough to support my children, and I am not of the venture capital class.