Most people (I think it would be safe to assume) would state a usable interface must be a visual interface. While not necessarily crammed with graphics or cool effects, a usable interface, they would argue, is one that you can interact with using your mouse and screen, seeing updates and feedback as those things happen. Unix, then, with its text-only command line and sometimes-cryptic editors, would be the opposite of a usable interface: almost 100% of command line applications work mysteriously, accomplishing some goal sometimes silently at the completion of some often-cryptic keystrokes. So, Unix can’t be usable, right? Wrong!
How can it be??? A usable product is not necessarily one with an amazing visual design, or any visual component whatsoever: a tight visual design can be – and often is – part of a usable product, but it is still just a piece of the larger puzzle. A usable product – in a certain sense – is a product that supports users, making it easy, quick, and delightful for them to accomplish their goals.
A usable product is a product that does exactly what it’s supposed to do, and makes it easy to do so. Dan Saffer, in a blog post discussing Neal Stephenson’s In the Beginning … was the command line, talks about a command line application traders used while he worked at Datek. While it did have a learning curve, it turned out to be very supportive of users who took the time to learn it. The product made users’ jobs easier, making trading a quick series of keystrokes and punch of the enter key. It was nothing more than a textbox.
Slashdot features an article on the birth of Unix editor vi. Vi was designed, the article states, "so that you could edit and feel productive when it was painting slower than you could think." In this, it did what is a very key component of many interfaces (and what a great many interfaces fail to do): it overcomes technological restriction to make users forget that those restrictions exist; it lets users simply do their jobs in the most productive way possible, despite the underlying technology they’re using. This captures the essence of a usable product: it lets users accomplish their tasks without them having to worry about what’s going on in the background.
Usable products, to expand our really limited definition from early, also support varying levels of users, from beginners to power users. Certainly, Dan’s Datek application and vi have learning curves, but they do support users of all types, and do what many "modern" interfaces do not: they reward users for learning more about them and practicing with them. Take a look at the comments in the Slashdot post. Hundreds of people have commented on their favorite editor, with many talking about how the keyboard commands are now firmly ingrained in their memory and permanently boost their productivity. They’d never switch to a graphical editor, because they’re reaping the rewards of learning: their favorite editor has a productivity reward for power users that few interfaces really can capture.
Most interfaces are built for occasional use; should you limit your users to a small set of commands because you believe they’ll only use your product occasionally, or should you build in levels of commands, rewarding users for repeatedly using and learning your product? If it’s a product users’ are paying to use, I’d strongly recommend the latter: if I’m paying for a product, I expect to be using it frequently and am glad to learn ways to speed up and improve my workflow. I’d like a vi, a product that rewards and supports power users.
Sometimes, usable, supportive technologies go almost sight-unseen. A truly usable product does not need a lot of glimmer, or even any glimmer at all. A usable product simply needs to let users accomplish what they’re trying to accomplish, while providing users with the opportunity to benefit from becoming power users of that product, reaping the rewards of really learning about what that product can do. Perhaps, like those hundreds of Slashdot comments would suggest, we should look to Unix for usability guidance.
technorati tags:usability, unix, design