TANSTAAFL

There Ain’t No Such Thing As A Free Lunch
- Robert A. Heinlein

Making stupid software

Some people say, there are no stupid questions, just stupid answers. I disagree. Some questions are stupid. Repetitive questions, questions with obvious answers, questions the questioned could not possibly know the answer to. When a person asks a stupid question, maybe they just want to interact and that’s OK. But what if a computer software asks a stupid question?

How to create stupid software?

It is really quite easy. Here are some pointers:

  1. Assume that every user knows what you know. Ask them questions only a geek can answer.
  2. Assume that users are idiots. Keep telling them the same things again and again.
  3. Do you have an algorithm that not solve the problem? Add another one or two that do not quite work either, and let the user choose which of the non-working algorithm they use.
  4. Let users jump through burning hoops - everyone needs exercise. If they fail near the end, let them repeat the whole course.
  5. If you have a dialog box with settings, do not bother remembering what has the user chosen last time. Doing the same thing again and again calms the spirit.

Difference between smart and stupid software

In short: stupid software creates problems while smart software solves problems.

Granted, every software solves a problem, but it can also create them. If a user must go out there and study information unrelated to their problem, before they can use an application, that is a problem. If the software irritates the users and makes them feel stupid, it is a problem.

Smart software has reasonable defaults, with optional geek settings hidden behind small buttons. Smart application provides visual feedback and lets the user see the results of an operation and does not rely on users’ imagination. Smart software respects the user.

All developers are guilty

Including myself, many of my decisions have made my software more stupid. It is usually a symptom of not being balanced and overreacting to something. And it is so damn easy to slip.

A perfectionist would implement a feature with all the bells and whistles and ignoring the users, who just could not understand them.

A fearful person would warn the user via a message box just too often. “Look, you have chosen to load a saved game, but wouldn’t it be better to save your current game before (even if all your characters are unconscious and dying)?” (NWN2)

A lazy person does not have the will to implement a feature properly and instead copies a similar code from somewhere.

May the balance be with us…

Comments are closed.