Interface is a Two Way Street
From Zanecorpwiki
(TODO: I want an image of a street sign that says Interface.)
I've been using Linux for over ten years now. At that time, you had to be able to compile binaries from source code... an action so arcane that many people don't even know what I mean. But there was one thing about that first Linux system I worked, Debian was the distro, that was really nice. If you wanted a program you'd just type 'apt-get lt;program namegt;ref group=notes'Package name' is actually the more precise term, but this isn't a technical paper./ref and the program would be found and auto-magically installed (more or less).
Debian was pretty tough in other ways, so I later adopted other distributions (openSUSE has been favorite for awhile), and had occasion to work with all manner of Windows, Mac, and other *nix systems as well. None of them ever had a better way to get software installed than old apt-get. Some where as easy, but none were better.
Until today.
Today I upgraded to openSUSE 11.1 and typed a command in the terminal. If you don't know what a terminal is, don't worry, it's not important. The point is that I was trying to run an application that wasn't there. Instead of saying command not found, came back with command not found, but BTW, you can install it if you like and here's how to do it.
Man. I was blown away. The point of user interface is to give the user an intuitive way to tell the computer how do something, and here they'd taken it to the next level saying, Well, I can't do what you're asking now, but here's how I could. The program wasn't just performing it's function, it was interfacing with the user. There was meaningful dialog.
The dialog was simple, but it was also very effective. The feature is so technically simply to implement, I'm quite surprised that I have never seen it before.
When I stop to think about user interactions like this, the infamous Clippy comes to mind.ref group=notesFor those that don't know, Clippy was the default character in Microsoft's original automated user help system included with their Office Suite. If you tabbed over and wrote two short lines at the top of a page, the program would guess that you were writing a letter and your system would freeze up for about 20 seconds. Then a paper clip would appear in the corner of your window with a talky-bubble above his head saying, I think you're writing a letter, would you like me to help? Intrigued, most users would say yes once, but find Clippy's help quite unhelpful. The feature was universally derided and although Microsoft did eventually come out with a scaled down system that did work, Clippy was considered an embarrassing failure. Not so much because it was so bad, but because Microsoft touted it as the best thing since sliced bread./ref Similar, complex systems usually fail to impress and tend to get in the way more than they actually help.
Here, though, is an example of an elegant, targeted system. Its narrow focus helps ensure that it'll actually be helpful, and even if it isn't, it doesn't get in the way. Auto-complete features are another example of this kind of thinking. Or a credit card input box that changes it's format depending on the type of card (Visa and Mastercard use 4 groups of 4, Amex uses three groups of varying lengths... it's weird).
Good interface responds to the user's actions in a meaningful and helpful way that goes beyond performing actions. Don't show the explain box unless the user clicks other. Highlight detectable errors before the user submits a form.
The problem with Clippy and the like is that they try to second guess the user. Sometimes that can be done, but it's hard and even when you can do it, it's not very helpful. I don't need Clippy to tell me how to write a letter, I'm already writing a letter. That's how Clippy knew I was writing a letter. It's actually kind of silly. What I want is for the 'th' in '14th' to be superscripted, not for the machine to tell me what I already know.
Microsoft wasn't really concerned with helping the user so much as making something cute and marketable. Don't tell the user what they already, just help them do it. If you can't do that reliably, just stay out of their way.
Notes
references group=notes /


