Unethical Defaults

I’ve mentioned the idea of unethical defaults before, but I want to formally introduce and define the concept because I think it’s a growing problem in our industry. Ivan Kirigin wrote a great blog post about Quora’s new “Views” feature that has struck a chord with the tech community. The reason his post is great is because he pointed out specific examples of how a feature turned on by default can be dangerous to the uninformed user. Unfortunately, Quora’s wrong decision is just one in a long line of unethical defaults.

Here is my definition of an unethical default:

An unethical default is a software setting that is turned on automatically or absent a choice by a user to their detriment.

To be fair, there is a lot of precedent for talking about ethics and software development. ACM has maintained a Code of Ethics for software engineers for twenty years.

But unlike some other professions like law and medicine, neither software developers nor their product managers are subjected to any code of ethics. Software developers are not forced to join an association to practice their trade, even though software can be just as deadly as any other profession. You can find many examples of software mistakes taking down manned helicopters and space shuttles, and costing companies and countries billions of dollars. In fact, software can probably do more harm than anything else. I think that’s just the natural flip-side of something that can also do so much good.

Though there is precedent for talking about ethics and software, it is not discussed enough nor is it taken seriously enough in our modern age of high-level languages and massive distribution. I wrote recently that I think sharing in public on the Internet is actually an unethical default. Lesser-informed people will not understand the impact that exposing their lives and opinions will have on their future. I recognize that view is an extreme one. However, any product manager or data scientist worth their salt can tell you that an overwhelming majority of users do not change defaults or deep settings.

For that reason, it’s incredibly important for software engineers and their managers to think about defaults as part of their design process. If a feature is to be turned on by default that impacts the end user significantly, like the Views feature on Quora, or the “Public” sharing option for new accounts on Facebook, then appropriate time should be spent informing the user of the choice that the developer made for them.

In Quora’s case, they should have provided a full-screen pop-up on the user’s first visit asking whether they wanted the feature on or off, without an option to skip. No doubt, some percentage of users would like that feature on, but at least they would have made a choice of their own free will.

Ethics aside, there is a very practical reason to think about defaults and settings as part of your design process. I would actually argue that if you ship a feature that through your judgment should be off by default, it’s probably a feature that doesn’t need to be shipped at all.


Now read this

Three questions that make me a better programmer

I am constantly trying to be a better programmer because I want to be able to make better things for people than what they already have. I think most programmers, as compared an average profession, have a strong desire to improve and “... Continue →