Site Index:

Journal
Wedding
Old Stuff
Pictures
Programming
Ramblings
Links

Toward an intuitive user interface

I majored in straight-up Computer Science in college. There was also a major offered at my school in Human-Computer Interface, HCI. It was explained to me as a mix of art and computer science in an effort to make machines more usable. From what I heard, it was mostly writing web-pages.

At first, this sort of seemed like a load off of mind. I could write code that works, and only worry about it having a good programming interface, and leave the human interface to the HCI folks. As I went along, though, I noticed I was starting to get opinions about HCI. My opinions don't tend to slide away either.

Then I met UNIX, by way of GNU/Linux. Wow! Never had I used such a simple and easy system. Most anyone who has a passing familiarity with a UNIX system probably read that and thought I'm nuts. Anyone who knows and loves UNIX, though, is likely wearing a wry smile. I'll tell you why. Soon.

UNIX is old. Really old. Any college student who has used telnet to check their email will tell you how strange and archaic it is. It was made by computer academics, for computer academics. Right there, you can see why I like it. But stay with me here.

Most popular computer interfaces are designed with a simple idea in mind. "Make this usable by the lowest common denominator." The easiest way to that is keep the mantra "the user is stupid" in mind. Details about the system must be hidden from the user.

Let's compare error handling. When a problem arises in popular GUIs, they are sugar-coated, to a point. If you dig deeper into the problem, though, you get the full details: often a binary dump of the program as it was running, which is very easy to generate for a lazy programmer, but basically impossible for even other programmers to make heads or tails of. One extreme to the other. We go from assuming the user knows nothing ("There has been an error. Please restart your computer." Uh, that helps..) to assuming the user lives and breathes assembly ("Error at code segment 0dc2: CODE e96a" Uh, yeah..).

UNIX, and more so, GNU/Linux is written from a very different perspective. Linux hackers assume the user knows what kind of hardware she is running. They also assume the user is a little brave. As such, the error messages are, ironically, much easier to understand, often written in regular English even ("There's a problem with the config file on line 52." I can do something about that!).

Let's try another example: the UNIX text editor vi against Microsoft WordPad. These programs can be effectively used as plain text editors, suitable for writing programming code, HTML, or other non-rich text. WordPad is undoubtedly more intuitive than vi. Most users will understand immediately how to type and do some basic layout and formatting with WordPad. On the other hand, first-time users of vi often have trouble getting a single letter on the screen. Let's describe a complicated task in both: Find-and-Replace. In WordPad, you select View->Replace, type the word you're looking for in one blank, and the word to replace it with in the next. Pretty simple. In vi you type:

:%s/old-text/new-text/g

Easy, huh? Uh, yeah. Yup, you have to learn what that means, because it's not intuitive. But that notation above is very familiar to those already aware of regular expressions, and is very consistent. What if you want to do something very simple, like put "> " at the beginning of every line, to indicate what someone else wrote in an email you are replying to. In vi it's very simple:

:%s/^/> /

Not intuitive, but it's not meant to be. How do you do that in WordPad? Well, you can't, because WordPad doesn't have the ability to express something like "the beginning of the line" as a '^' does in regular expressions. Very powerful, and easy to use (I swear), but not at all intuitive.

Computers are complicated devices. Try as we have, we haven't gotten them to be foolproof yet. If you demand a lot of your computer (more than web browsing and email), you can expect problems. You're using your computer as a tool. To get the most, anything at all really, out of your computer, you are going to have to learn a bit about it. Once you do, you'll be amazed at how much more useful it is.

Stay with me now: I believe intuitiveness is generally counter to utility. It's possible to work them together to a degree, but it seems these two forces work against each other. A really powerful program (Adobe Photoshop or the vi text editor, for instance) has to be toyed with and learned. And months and years later, you'll still be learning better ways to do things. That's a mark of a good tool. You can figure out Paintbrush or notepad in minutes. They're very intuitive and simple. And not very useful. Vi (or vim) on the other hand, is incredibly hard to use, at first. Most people can't even figure out how to get a letter typed, except by occasional luck. But the depth of the program's abilities make it the choice of many who demand an insanely functional and efficient text editor.

Systems that give the user credit for some intelligence will also reward the user with a much more usable interface. Not intuitive, perhaps, but very usable. It's a tool; learn to use it well. It will serve well.