A Manifesto

John Ohno on 2019-12-05

  1. a piece of software is not a project, a product, or a tool; a piece of software is an environment or a part of an environment
  2. the most important thing about software is how it influences the behavior of the humans who interact with it
  3. all user interface design is a subset of behavioral control, and is subject to the same ethical concerns (including the ethical risk of not doing anything, or of making undesirable behavior too easy)
  4. API design is protocol design is language design is user interface design
  5. software is not just running code: the beliefs and habits it produces cannot be separated from it; flawed folk-ontologies of software are the fault of the software itself
  6. communication software is not the only kind of software that warps the worldview of users
  7. every design decision has a recognizable effect on behavior at scale
  8. bias compounds: the habits we learn from our software influence the software we write
  9. implementing the obvious solution quickly is worse than useless if the obvious solution is wrong: it is often better to have no software than to have dysfunctional software, even if dysfunctional software is profitable. “Don’t do something — stand there!”
  10. even if the user doesn’t know what they want, they still know better than developers and designers; the user should be the ultimate authority in all design decisions that impact them, and it is the responsibility of developers only to provide reasonable defaults and easy access to reconfiguration