Most of the time, developers are so concerned with doing cool things and getting our work done that we ignore the ethical implications of exactly what we’re doing. Think of me as Dr. Malcom in the Jurassic Park movie, the guy who says that sometimes we really should stop and ask why we’re doing what we’re doing. It is our job as developers, as designers, and as partners with our clients to not just advocate on the side of our clients, but to also advocate for the users those clients serve.
Developers and Kantian Ethics
In the late 1700s, Immanuel Kant began laying down the framework for his deontological ethics, and although it was built from all of his work, three primary sources can be considered to have rounded out his ideas in full: Groundwork of the Metaphysic of Morals, Critique of Practical Reason and Metaphysics of Morals. I’m not going to presuppose you’ve read any or all of these, but they do provide a pretty compelling base for what is used by most developers as a set of professional ethics.
The Categorical Imperative is the primary base for Kant’s moral philosophy. There were several formulations that it took, with the most important being:
“Act in such a way that you treat humanity, whether in your own person or in the person of another, always at the same time as an end and never simply as a means.” – Groundwork of the Metaphysics of Morals
In this way, we are compelled to treat each person as having their own inherent worth, and that they should not be used to accomplish any goal in spite of them.
It is easy to say to yourself, “Well of course I should do these things! Why wouldn’t I?” But ask yourself how many times you’ve been asked to do something that, for all intents and purposes, would seem to be a violation of trust between yourself and a user of your software or website. Have you ever taken the time to bring this to your team’s attention? Have you discussed the implications and your concerns? Have your concerns been heard and addressed? You should be establishing a sense of trust between a client and you as a partner.
Developers Vs. Car Mechanics
Think about any other profession which requires a specialized knowledge and training which most people do not possess. Here’s a great example: car mechanics. Every single person has heard the trope of the mechanic who has “ripped off” a client because they replaced a combobulator (note: I am not a mechanic. I can’t even pretend to be one) that didn’t exist or didn’t need to be removed. One “bad apple” causes everyone to form a perception of the entire profession as corrupt or untrustworthy. To avoid instances like this, we need to be certain that we’re following a robust and publicly known professional ethics.
In the same sense that the client for a mechanic is influenced by the experience of previous car mechanic clients (try saying that 5 times fast!), users of software and websites are also influenced by what is done or portrayed to them via your work. All the trust in the world with a client will mean nothing if the end user can’t trust you to keep their needs in focus as well.
The biggest take away from this blog post is that you should be proactive in addressing ethical concerns in your work. Not just because it is a “good” thing to do, but because you also represent the whole of the profession with clients and users. Be sure to include the concerns of users in what you are doing, not just the client. We have a professional and ethical imperative to be advocates for our work and how it is used.
If you’re interested in these topics, or if you’re just a masochist, here are some reading recommendations:
- Groundwork of the Metaphysic of Morals – Immanuel Kant
- The Human Use of Human Beings – Norbert Wiener
- ACM Code of Ethics
Do you have any comments or questions about the idea of developer ethics? Do you have any examples of developers or websites which have upheld (or deviated from) an ethical code? We’d love to hear your thoughts! Please feel free to share a comment below.