Title: The Programmer’s Oath
Co-founder of cleancoders.com and Founder of Uncle Bob Consulting LLC
Title: The Programmer’s Oath
Co-founder of cleancoders.com and Founder of Uncle Bob Consulting LLC
What oath should we swear? Well, who swears oaths, and about what?
I was originally trained as an orchestral musician, and it was implicit (and
explicit) that we cared about a quality of work that approached perfection.
I may have had to swear or affirm something or other to the musicians’
union local, but I hardly remember what that might be, and it certainly
didn’t have to do with the quality of my work.
Yet I perceive you are talking about the quality of our work, our professionalism,
and our sense of responsibility. And, now that I think about it, I don’t know what
an oath has to do with any of that. People I trust to provide a service, or as
friends, I know by what reputation they carry, by what I know of them personally,
by the integrity and character they display (especially when “no one is watching”).
They don’t take oaths. They do right.
I don’t disagree with your concerns. But it’s fair to say that we don’t have broad
consensus on the standards of the profession, nor how to get there. Unlike my
original domain (where, for something called art, the standards are actually more
objective and rigorous than most people imagine), software addresses nearly
the whole domain of human activity, and what is “good” for some people in
some activities would not even rise to the dignity of “bad” for others. Our best
efforts, perhaps, lie in the direction of determining how we may test reliably
for the goodness of our work situated in a domain. That’s an unsatisfying way
of putting it, to be sure.
My research is premised heavily upon value sensitive design http://vsdesign.org, which was created to support the responsible creation of artifacts of technology. I appreciate the thinking behind the idea of a “programmer’s oath” but would like to suggest a commitment to a set of values that address broadly defined stakeholder roles, as well as the clear identification of those roles (Who uses this? Who pays for this? Who doesn’t use this but is affected by this?) This analysis also leads to a consideration of value tensions - what are the tradeoffs between values within and between stakeholder roles, and in what manner can they be addressed? This is a very oversimplified description but in summary I would appreciate your thoughts on a value-focused ‘oath’ rather than a practice-based one.
Has anyone has seen or discussed this document Software Engineering Code of Ethics ( IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices ), while learning the profession, or in their professional circles?
@Ian_King I think that the Software Engineering Code of Ethics , talks about both value-focused and practice-based topics.
Here some examples:
Actually, the ACM has its own Code of Ethics and Professional Conduct! There is currently a discussion ongoing about updating it 2018, links are given above. Many other IT professional societys, BCS in the UK, GI in Germany, SI in Switzerland, etc. have either ethical guidelines or codes of conduct.
But the point is that they are not taught at university, so they are not well known. And in IT we “suffer” from many persons who are self-taught and thus completely oblivious to such niceties.
My question for Uncle Bob: How do you propose that a “Programmer’s Oath” (probably based on the Hippocratic Oath) be filled with life?
P.S. For those who read German, the working group on Informatics and Ethics of the German “Gesellschaft für Informatik” has a blog “Gewissensbits” with bi-monthly case studies published to give people scenarios for discussing how they would react.
I mentioned this on Twitter and in the context of the ACM’s Code 2018 effort. but why is the ACM inviting or promoting a webinar by a person who not only has limited background in computing ethics but has, on several occassions in both spoken and written word, done things that go against both the current ACM code of ethics as well as the planned revisions that are currently in Draft 3?
In 2014, he wrote a blog post describing not one, not two, but three instances where he made remarks that were construed as sexist by listeners and he had to apologize. It seems like the apologies were never sincere, since there was no change in behavior.
In the summer of 2017, he wrote two blog posts here and here expressing support for the Google engineer fired for writing a memo against Google’s diversity programs. In a later blog post, not only does he express support for Damore, but also opposes the disinviting of Doug Crockford from a conference following sexist remarks.
There’s also some controversy surrounding his recent book, Clean Architecture: see Martin’s blog post here. And this isn’t even the first time someone has had a problem with content of a book. Unlike the personal blog posts and speaking events, this is something that has gone through review and edit processes.
The current ACM Code of Ethics requires that members respect diversity (1.1), be fair and not discriminate (1.4), and uphold and promote these principles (4.1). If an individual is promoted by the ACM, should they not be held to these same standards?
Martin has a great deal of experience and contributions in the agile methods and software design and architecture. Even if he was invited to speak on one of these topics, I would be raising these same concerns. But he’s being invited to speak about ethics and behavior, even though the ACM already has a code of behavior for members (and has co-written another with the IEEE-CS), a topic that he does not live up to based on past actions.
I believe someone from the ACM should address this and explain why someone with a past of behavior that goes against ACM standards is being promoted by the ACM.
Thomas it’s clear you dislike the ideas of Robert Martin regarding the Me Too movement, and discrimination at Google. Have you actually read his blog posts in full? Or you were too offended to even consider his point of view. In my opinion his blogs posts are respectful, and intelligent.
Google has now been sued for firing an employee who disagreed with their enforcement of diversity rules, and it may become a class-action suit in California and elsewhere:
Robert Martin is a living legend of IT, a programmer’s programmer, and an author of a multitude of books. Let’s respect each other’s right to disagree and talk with respect for each other instead of trying to muzzle speech, and force our views on others.
And for everyone’s benefit here is the text from the Programmer’s Oath by Robert Martin:
"In order to defend and preserve the honor of the profession of computer programmers,
I Promise that, to the best of my ability and judgement:
I will not produce harmful code.
The code that I produce will always be my best work. I will not knowingly allow code that is defective either in behavior or structure to accumulate.
I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
I will make frequent, small, releases so that I do not impede the progress of others.
I will fearlessly and relentlessly improve my creations at every opportunity. I will never degrade them.
I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity.
I will continuously ensure that others can cover for me, and that I can cover for them.
I will produce estimates that are honest both in magnitude and precision. I will not make promises without certainty.
I will never stop learning and improving my craft."
Yes, I’ve read all of Robert Martin’s posts that I’ve linked to, plus several others. I respect his right to publish the things that he wants to publish, even when I disagree with them. I don’t believe that anyone is trying to stop anyone from saying what they want to say or forcing their views on anyone else.
However, I am fully opposed to the ACM giving Robert Martin a venue.
First, the ACM has a current code of ethics. This code of ethics applies to all ACM members - everyone agreed to it when they joined. Principle 1.4 makes it clear that “equality, tolerance, respect for others, and the principles of equal justice” are important to the ACM and “discrimination on the basis of race, sex, religion, age, disability, national origin, or other such factors is an explicit violation of ACM policy and will not be tolerated”. Principle 4.1 and 4.2 go on to say that ACM members will “uphold and promote the principles of this Code” and “treat violations of this code as inconsistent with membership in the ACM”.
Robert Martin has a history of demonstrating a lack of tolerance and respect for others. If he did, he would not have made, on three separate occasions, comments that can be construed as sexist. He also would not have had controversy surrounding two of his written works. He would not be expressing support for two people who were disciplined by various communities - he flat out rejects the notion that it’s a good idea for a conference to uninvite a speaker in order to promote tolerance and respect. All of these are in direct opposition to the things that the ACM Code of Ethics stands for.
The fact that the ACM can promote a person who, according to their own standards, behaves unethically to speak on ethics and professional conduct is ridiculous. This is even more mindblowing when the ACM has a group of people, several of whom are experts in ethics and technology, who are working on revising the very code of ethics that members agree to adhere to.
Instead of promoting the ACM Code 2018 efforts and instead of talking about the Software Engineering Code of Ethics and Professional Practice (which the ACM co-endorsed) and instead of inviting experts in ethics and computing, they chose to invite a person with no formal background in ethics who also has a track record of unethical behavior.
This doesn’t even get into my opinion on this “Programmer’s Oath” being a waste of time and effort. I’ve written more in other venues on why I feel like this code is extremely lacking. Some of the words are vague, some of the principles are unattainable, other principles neglect the reality of software development (and there’s no point in aspiring to the unachievable), and few apply to people who don’t write code (and coding or programming or construction - whatever you want to call it - is such a small part of the lifecycle of a complex software system).
I don’t think it’s unreasonable for me, as an ACM member, to ask for a rationale for promoting someone who does not live up to the requirements of an ACM member. It is hypocritical.
I hope that the ACM reviews this and provides an explanation to all members.
Hi Thomas Owen,
I enjoyed reading your moral platitudes. I think your being extreme in voicing your concerns. If your serious, I think you should point your energy directly at ACM and stop being a troll. Personally, I’m looking forward to Robert Martin’s session and thrilled he was invited. People are imperfect but all of us get to pick our paths to move forward. I’ve read some of his books and he considered the works of men AND women’s in his evaluation so I think your assessment of him is phony and self-serving.
Are you a member of ACM, did you know you have just violated one of the rules? In these forums you cannot criticize people. Please review the community guidelines, https://on.acm.org/guidelines
I’m sitting here reading your comments and I imagine you have a master’s or maybe a phd. The programmers “oath” is a marketing term, right? It’s a loosely defined concept that encourages discussion about a topic. Only the clueless take “Oaths” and if you read any of Martin’s other books you would understand this, lol. Looking forward to more thoughtful questions from you.
OK, your point taken about oaths as discussion fodder. I take the topic to have
been in the vein of the Hippocratic Oath, for many years (AFAIK) actually taken
by physicians, and in any case held to be their standard of behavior. I would
by any means be in favor of a common understanding of our responsibilities,
but I don’t think we have an actual consensus of what we do, let alone the
standards which ought to prevail in the doing of it. I think that we have two
points of approach which we might apply: 1) the moral character we each
ought to exhibit, and 2) the standard (by this I mean the appropriate testing
in context) by which we measure what success we achieve in producing
this work product or that. I extend this second point to testing for the
appropriate specification of work, which (in general) takes us beyond
what the programmer does, although hardly beyond his/her reasonable
concerns. This is all still quite abstract, of course, and not yet useful.
(Not answering you, but speaking generally,)
I’ll add the comment that this discussion is not brought forward much by
concerns about Martin as someone appropriate for the webinar. He’s
crusty sometimes, yes, and I don’t always agree with him, and he might
not be as politically correct as some might hope. So what. We learn
what we can from whom we can, when we can.