What does respectful software look like?
I’ve been thinking lately about software I enjoy using, as contrasted with software that seems like a struggle to use; and why that is.
One way to look at this is through the lens of respect: Did the developer of this software have my interests in mind? Is the software trying to help me? Or does the software treat me as a resource that ultimately benefits someone else? Basically, do I feel that the software behaves in a way that is respectful to me as a person? Here are some things I look for to try to answer these questions.
Respectful software:
- Seeks to empower the user to accomplish goals that they may otherwise not be able to accomplish easily (or at all)
- Explains and illustrates the process and results of the software in a clear and concise way, which respects the user’s intelligence and intent, but does not presume specialized knowledge
- Recognizes the diversity inherent in the universe of potential and actual users, and seeks to provide value to the widest possible range of users, to the extent possible within the software’s scope; always seeks to learn from, and better serve, user situations not previously considered
- Takes all reasonable precautions to protect the user’s security, safety, and privacy; while providing clearly understandable choices in recognition of how various users may have differing desires and risk models
- Provides affordances, which are not strictly necessary for the software’s functionality, but may create a welcoming and comfortable environment
- Recognizes the user’s time as a valuable asset which inherently belongs to the user and must be earned through trustworthy behavior; seeks to assist the user in accomplishing their goals in the minimum amount of time; respects the preciousness of the life that the user has outside of the software.
Disrespectful software:
- Promotes goals that benefit the developer substantially more than they benefit the user; or even, may benefit the user not at all
- Directs the the user towards functionality the developer hopes they will use, instead of allowing the user to direct their own path
- Interrupts the user’s workflow with distracting UI that appears suddenly and unexpectedly
- Causes frequent and dynamic changes to the UI which prevent the user from learning where expected functionality resides, and which impede the user from successfully repeating their previous accomplishments
- Implements and presents unsolicited content based on recommendation algorithms, instead of providing tools for serving the user’s intentional requests for specified content
- Overloads high-value UI signals (such as notifications or “new” badges) which perform an essential function (communications from family and friends, time-sensitive business concerns, etc.) in combination with content that has low value or negative value to the user (advertisements, memes, engagement solicitation, etc.); and in doing so, prevents the user from easily recognizing the difference between the two
- Refers to ostensibly user-initiated actions with language like “remind me later” or “I like paying full price”, while denying access to meaningful alternative choices, which attempts to impose a particular intent or frame of mind on the user, instead of trying to understand the user’s genuine desires and concerns
- Attempts to maximize the amount of time the user spends using the software; uses psychological manipulation to persuade the user to spend more of their valuable time than the user intended to spend; monetizes the user’s time, data, and/or existence.
It’s worth noting that, in many cases (or even most cases), software exhibits behaviors from both categories.
I think it’s important for users to think about behaviors we want to see, or don’t want to see, in the software we use; this helps us make conscious decisions about which software we choose to use, or not use. I think it’s also important for developers to think carefully about their choices, and in doing so, to strive to make software they can be proud of.
[Version 1.0.4; 2024-09-19]