Fundamental Laws of Software
• This article was written by David Platt for MSDN Magazine.
Whenever I find a program or website that sucks, it's invariably because the developer or designer forgot the user's goals and started embellishing the program for its own sake. That violates Platt's 3 Laws of Software. Like the 3 Laws of Thermodynamics, they'll turn around and bite you if you do that. My laws are:
- Your software has zero value in and of itself. Nothing. Nada. Zero point zero zero. The only value it ever has or ever will have is the degree to which it enhances the happiness of your user in some way.
- Software can increase users' happiness in one of two ways. It can help a user accomplish a task that she wants done, such as paying her bills or writing this column. Microsoft Word is an example of this type of application. Or, it can place the user into a state he finds pleasurable. Games fall into this category, as does Skype, with which my daughters make video calls to their grandparents.
- In neither of these cases do users want to think about your computer program. At all. Ever. In the former case, she wants to think about the problem she's solving: the wording of the document she's writing; or whether she has enough money to pay all her bills, and which unpaid creditor would hurt her the most if she doesn't. Her only goal is to finish the task quickly and successfully, so she can get on with her life, or at least with her next task. In the latter case, the user wants to enter that pleasurable state as quickly as possible and stay there as long as possible. Anything that delays the start of his pleasure, or distracts him from it while he's enjoying it, is even less welcome than the interruption of a work task. My parents want to see and talk with and gush over their grandchildren. Any attention that the program diverts to itself is a negative in either case.
To summarize: Users don't care about your program in and of itself. Never have, never will. Your mother might, because you wrote it and she loves you, and then again she might not; but no one else does. Users care only about their own productivity or their own pleasure.
Donald Norman discussed this phenomenon in his excellent book, "The Invisible Computer" (The MIT Press, 1999). But I see a better example in the role of sports referees. They set and enforce the context (rules of the game, operation of the program) for interactions between the parties (the two teams, the user and the business problem), while ideally taking no discernible part in it themselves. Retired NFL referee Jerry Markbreit writes of an early mentor, who said: "Gentlemen, this is the biggest game of the year. Maybe the biggest game in a hundred years. We must do an outstanding job today because we don't want anyone to remember us. We must work this game so expertly that, later, it will seem as if we weren't even there." That should be the goal of our programs as well.