DEV Community

Discussion on: The Programmers Oath

Collapse
 
tomowens profile image
Thomas J Owens • Edited

I've come across this before and...well...this is awful. I have so many problems with this "oath" that it's actually hard to tell where to start.

First, some kind of oath or code of ethics is absolutely nothing new. Just about every professional computing organization has one - the IEEE, the ACM, the Computer Society of India, the Hong Kong Computer Society, the National Society of Professional Engineers, and the list goes on. Sometimes, graduates of computing or engineering organizations may choose to take the Pledge of the Computing Professional or the Obligation of the Order of the Engineer.

Above all, I can point to the Software Engineering Code of Ethics and Professional Practice, which was jointly developed by the ACM and IEEE Computer Society. Even though it's over 20 years old, it has aged extremely well and continues to be a relevant tool for framing ethical discussions. I also find that it's useful to a broad range of people involved in software development - it identifies software engineers as "those who contribute by direct participation or by teaching, to the analysis, specification, design, development, certification, maintenance and testing of software systems" - product managers, business analysts, systems engineers, software engineers, testers, operations, UX designers, and more can all refer to the same document.

When looking at ethics in computing, people are looking at companies like Uber, Volkwagen, Cloudflare and Internet censorship, sexism in the technology fields, the types and amounts of data that is collected on individuals, advances in data analysis and machine learning, and more. This code doesn't address any of these core problems. There is no mention of contributing to society, of honesty, of tolerance and respect for others, respecting privacy, honoring confidentiality, of understanding and applying rules and laws, of presenting risks, of working to improve the public understanding of technology and computing. Most of this oath or code is centered on coding, which, in the grand scheme of all things computing (or even just software) is such a small part.

Also, although I respect his contributions toward the agile methods, software design, and software architectures, Robert Martin is not a good example of a shining light in the are of ethics. Most, if not all, professional codes of ethics will refer to things like respecting diversity, being fair toward colleagues, not discriminating, providing a supportive environment, and upholding these various principles as part of a code. Martin has repeatedly expressed support for individuals who do not uphold these principles of diversity and support (see here, here, and here where he supports James Damore and Doug Crockford). He has also (three times) had to apologize for sexist remarks when speaking and has not demonstrated a true change in behaviors or attitudes. And not just in speaking, but concerns have been raised about the content of two of his books, The Clean Coder and Clean Architecture.

If someone wants to look for a good code, start by turning toward the professional organizations that have put together technologists and ethicists and organized codes that actually set meaningful standards for engineers.

Collapse
 
autoferrit profile image
Shawn McElroy

First off, I actually agree with you. This "code" doesn't solve all the problems. If I had a solution to fix all those problems I probably would be doing that. And I don't claim this fixes those issues. Nor do I claim that Martin is a shining example of a good person. But that doesn't mean bad, or people with a questionable backgrounds don't have good ideas. Plenty of good people have bad ideas that get implemented as if it was a revolutionary thing.

My intention with this, is to have a personal code of standards on how you work with the code you write and the effects of how your employer may see your values around such code. The code you write doesn't communicate with other employees around a water cooler.

As for the other links relating to industry standards and how we treat others, thank you. I will check those out for sure. I agree that how we treat others, especially women, minors, and many others is not fair. And that should be fixed. We aren't going to have a one size fits all solution. It also doesn't mean i can't have a personal code of ethics until something does solve them. Not starting somewhere no matter how small is part of the problem.

So with everything you mentioned, I still don't see how this is "awful" based on what you wrote. As those are very much different issues that do need to be addressed. It wasn't intended to solve those.

This is a code that can be used to describe the relationship between a programmer and their code. Just because Martin came up with it doesn't mean that the ideas behind it aren't sound.

Collapse
 
tomowens profile image
Thomas J Owens

This is awful because it's actively harmful. It does not contribute to the advancement of ethics in computing. Instead of producing this, Martin should have been promoting work that includes contributions by people who specialize in society and ethics, such as The Order of the Engineer, the Pledge of the Computer Professional, and the Software Engineering Code of Ethics and Professional Practice. Relating this oath to ethics shows a lack of understanding of ethics in computing and what the real problems and concerns are.

Your post itself mentions the Volkswagen emissions scandal. But consider other ethical dilemmas in computing in the past couple of years - drones and robotics (especially fully autonomous systems and even more especially in the context of warfare), autonomous cars and decision making, the vast amounts of information and how governments and companies are using it (especially aspects of privacy and security), software or systems designed to circumvent the law (similar to Uber's Greyball program), security vulnerabilities (especially in the context of disclosure to the public following incidents), discrimination in the industry. These are the ethical dilemmas that are important to consider and talk about.

We don't need oaths and codes of ethics to tell us how to work with code. We need them to help provide a context for making good decisions in the broader context of complex software systems having a place in society. The "Programmers Oath" won't accomplish any of these things because these problems aren't about code. That's not to say that some aspects of the oath aren't good things to consider. I already picked apart the Oath, and compared it to the Software Engineering Code of Ethics and Professional Practice's ethical guidance..

The fact that this (and not actual ethical codes written with involvement from people who have education and experience in ethics) is endorsed by someone who has great standing in the programming community without promoting other, more robust codes of ethics only leads to the harm. But I have a feeling that Martin won't promote these other codes because he himself doesn't live up to them. I know that I'm not going to be taking advice on ethics from someone who can't conduct themselves in an ethical manner.