As with SelfDocumentingCode
, a SelfDocumenting? UserInterface
is one that's so clear that it needs no documentation. For the purpose of discussion, 'F1'-style context-sensitive help counts as "documentation" but text within the interface such as "FindPage
by searching" does not.
Certain types of applications seem to fall into this category more often:
- Web sites
- Console games, such as Nintendo, Playstation, et cetera.
- Automated teller machines
- Automated phone systems ("Press 1 for your bank balance, 2 for...")
Perhaps that's because for them to be a market success, they have
to be self-documenting, so more effort is put into their user interface. On the other hand, maybe it's because they're simple. (But are they simple because you can't do much with them, or are they simple because people made an effort to make
There's a subtle distinction between self documenting in the sense that a knowledgeable enough user should not have to read manuals or help or anything else, and self documenting in the sense that no documentation is needed at all - every user should be able to find his way through the interface.
I, for example, experimented with several console games, PC games and even Z80 games that were obviously self documenting for my friends but I never got around until I read some help. Therefore I have strong doubts that whatever is the latest PlayStation
is indeed self-documenting. Even games that were apparently self documenting even for an absolutely lousy gamer like me ( Dune for example ), turned to be unsolvable until I'd read the minimum documentation (sometimes including cheats).
Maybe if I play long enough the next game will be self documenting even for me.
Other examples include the infrared sensors that trigger automatic actions. They are obviously self documenting interface to a machinery. But I think it's too tough to find a self-documenting interface that is non-trivial.
And I still prefer using bash shell any day, rather than using the almost self-documenting and lousy interface of Windows Explorer, so I wonder if the effort put in creating an almost self-documenting interfaces is always justified. In many cases, I'd rather stay away from a self documenting interface, as it tends to be oversimplifying and obvious
, thus pretty useless or time consuming for anything else other than the most trivial tasks.
This is something that doesn't seem to exist. Or please show me some concrete examples.
Even interfaces as simple as open file dialog in windows are not self explanatory for someone who first sits in front of a computer, therefore they are documented in user's manual and the user can press F1 to get help. Most of the people don't need help to use many user interfaces, but that doesn't mean they are self explanatory, and to leave them completely without any documentation at all is potentially ignoring a part of your users.
Almost every software application ever released is run by people who have never read the documentation. If you are relying on documentation to make your interface usable, you have already failed.
Going back to the games thing, some games (such as Zone Of The Enders, Legacy Of Kain) incorporate a tutorial into the plot at the start of the game. The first time you need to do a new action (jump, fly, etc) you are told how to do it.
There is a BIG difference between games and other software though. In games, the software designer chooses the goal and the user's job is to achieve it. In (eg) a word processor the user chooses the goal and the designer's job is to help them achieve it. The linear tutorial form doesn't work because the designer can no longer predict what the user is trying to achieve. -- BrianEwins
The best example of a self-documenting interface I can think of is the interface of something like vimtutor.
vimtutor is a program to teach you how to use vim. It's thus an interactive documentation to vim. But it also completely
documents its own functioning, i.e. it is self-documenting. Once you start it up, you can learn everything you need
to know about it by reading the messages on the screen and following the instructions.
Many of the Fred Meyer stores in Oregon have been refitted with self-checkouts. These are very cool devices in which you scan, bag, and pay for your groceries without a checker. Each station has a scanner and a large touch-screen which verbally tells you what to do. The program is very sophisticated (it has to handle coupons, clothing, packaged groceries with bar codes, produce without bar codes, multiple forms of payment, prevent fraud, and enforce age limits) but the interface presented to the user is straight-forward and easy to use.
QFC has a nice system like that too. I use it in Seattle. They have four checkout stations managed by one store employee. The lines move a lot faster, and your interaction with the employee is a little more personal. It's a good example of software not having to be perfect to be useful.
The first couple of times I used the Fred Meyer self check-out system, I got stuck when trying to figure out how to complete the transaction. None of the buttons on the screen seemed to mean "Pay now and check out". The problem is that the button looks like it only has to do with coupons. It's only one problem in an otherwise great system, and it's a solvable problem, but in many months of operation, it has not been solved. I've seen many other customers struggle with this particular issue.
This sort of system is becoming increasingly common in various stores in California, and of course I got used to how to interact with them, but I must say they are as incredibly stupidly designed as any of the obtuse shrink wrapped software I've ever seen. I love the fact that they exist. I give them maybe 2.5 stars out of 5 for ease of use. And they have severe bugs, which they haven't bothered to fix over the last year: ok, it knows you just bought an avocado. "Please put it in the bag." Ok, I do. "Unexpected object in bag, please remove." Ok, I do. "Item removed from bag, put it back". Repeat over and over. Holy f***ing mother of s**** l**** jkjkjkdfdjk%(*$*(@(#@ !!!!!! It goes into that kind of endless loop all the time, and a clerk has to come over and reset it.
Or how about the now-universal credit/debit card swipers? You swipe your card. It then pauses for an indefinite and variable amount of time while it thinks things over, so you look around, answer a question from the clerk -- meanwhile it has finally decided to query "Amount: $23.17, ok? Yes/no"...and is waiting for you. Is there an audio indication like a beep once it is finally necessary to interact with it again? There is not. Is this stupid? It is. Am I a slave to a machine, so I must stare at it constantly until it's ready to deal with me, or else risk the wrath of the impatient in line behind me? Apparently.
Are they simple because people made an effort to make them simple?
In many cases, interfaces have been made complex to save money rather than be simple. For example, most people can set start and stop times for an oven, but not for a VCR. Why? Because, in an oven, there are usually separate dials to set time of day, start time, and stop time. In a VCR, to save money, usually a small set of common buttons and displays are used and reused for different purposes. If you use one item to do multiple things, you create complexity in the interface. See OnceAndOnlyOnce
Although games are generally designed to make it easy to get in and do *something*, many games have extra pieces of interface hidden all over the place. The casual gamers never see them, but the enthusiasts do. They find out from message boards (after someone discovers a hidden feature, like "press the fourth wall panel in room 34", they're going to tell all their friends). I've been playing Age of Mythology for months, and I only yesterday learned how to count how many villagers I have (hover the mouse over the part of the display that shows you how much food you have). I only learned about it because a friend told me. --AmitPatel
Aren't the "insider" tips part of the appeal of the games? In other words, aren't the undocumented features put in intentionally as things to be uncovered almost by accident?
I would guess that many of the EasterEgg
s found in software, including games, are more for the programmers ... for SpotTesting?
during the development process. Sort of a peek behind the scenes to make sure everything is turning out as expected.