I stumbled across Wolfram Alpha and hubristic user interfaces by Mencius Moldbug today via a link from Joel. It is well worth a read and a good starting point for a Friday post.
What are the different types of user interfaces that we interact with on a daily basis? Do you really want your user interfaces to be more intelligent? Or would you rather supply the intelligence yourself and use the interface as a tool to achive some goal of your own. Mencuis has some interesting thoughts on the subject of interfaces with hubris tendencies and dives into specific examples like the Apple Newton’s handwritting recognition vs. Palm’s Graffiti. I love this idea:
Therefore, if you are building a control interface, ie a tool, the prudent way to proceed is to (a) assume your users will need to learn to use your tool, (b) make it as easy as possible to learn the tool, and (c) make the tool as effective as possible once it is learned.
Palm did just this with their original version of Graffiti and while I myself have never been a Palm users, my wife raves about her first Palm pilots and how well the Graffiti featureworked for input. As Mencuis states, the key is that as a user you had to learn how to use the tool and align your mental model to the graffiti input model – after that, the distraction of the tool fell away and you were simply able to get what you needed to get done done. However, in the later versions of Palm’s devices, they started changing Graffiti to make it ‘better’ at recognizing natural handwriting. And it was a total failure. As my wife would tell you, all of a sudden instead of being able to learn what specific stylus strokes resulted in english characters, you were expected just to write and the Palm would interpret what you meant. It didn’t work! Not only that, it was no longer predictable. The mental model you had formed for how Graffiti interpreted stylus input was no longer valid and because of the new ‘intelligent’ system it was very difficult to form a new mental model.
My real interest here, though is to look at other software we interact with and see how it is helping/hurting us as users trying to get something done. So what software do I use on a daily basis?
- Windows 7
- Internet Explorer
- Google Talk
- Power Point
- Adobe Reader
- Command Line
- Visual Studio 2008
- SQL Server
- Remote Desktop
- OS X Lepoard
- Commandline tools: gcc, makefiles, etc
- VMWare Fusion
- Google Sketchup
- Remote Desktop
- Cisco VPN
- Time Machine
- Hulu Desktop
- iPhone OS 3.0
- Browser Applications
- Google Reader
- Team City
- Stack Overflow
- Netflix instant watch
And that’s not really an exhaustive list. The final challenge is making some sort of sense out of all of this. Here are the high level categories I see related to human-user interface interaction:
Gateway User Interfaces
Web browsers and OSs are good examples for this category. The UI is a means to access other UIs. A good Gateway UI fades into the background allowing the user to move on to what they originally intended to acomplish. Despite the marketing that goes into informing the public about OS and browser features, the reality is that people use these things as a means to get to something else. In fact, the best features in these interfaces are tools for better managing, organizing, and accessing other content, applications and interfaces. If you are focused on or required to configure/mess with a gateway UI, then it has failed it’s job. A good example of this is the driver chaos in Windows Vista. People didn’t care about all the under the hood enhancements in Vista, they were pissed that the OS no longer acted as a gateway to their existing devices (cameras, printers, etc).
Command Line User Interfaces
There is a whole slew of tools that fall under this category, but the general pattern is a steep learning curve with lots of power, efficiencies and payback for those who tackle the challenge. While not a strong example of a graphic user interface, there still is a very real user interface element. These UIs are very much tools in the real definition of the word and require time and training to understand and make full use of. The only issue here is a lack of accessibility and discoverability for the average user. You have to have a problem to solve that is worth the time investment in understanding how to use the tool.
Human Bi-directional real time connectivity User Interfaces
These are instant messaging, collaboration, real time meeting user interfaces that provide the ability for humans not in the same physical location to communicate. They share some commonalities with the gateway interfaces in that their real purpose is to get out of the way and let real humans effectively talk to each other. At the same time, something is almost always lost along the way as face-to-face human communication is much more than a voice, or a text message, or a video image, or a power point or a screen sharing session. There is still great value here from a cost and distributed team standpoint and the benefit of spreading ideas globally at the speed of light (or at least the speed of the internet).
Human Bi-directional right time connectivity User Interfaces
Email is a big one here (although many people like to use their email for instant messenging). Forums are another good example. The idea is that there is a real conversation going on between people and groups of people, but it isn’t instantaneous real-time like a face to face conversation. Each side has a chance to regroup and carefully format a response. Spelling and grammar matter to a larger degree and thoughts can be filtered in a way that they aren’t in real conversation. This has it’s advantages and disadvantages, but the user interfaces are a reality in our lives.
Human Single-directional connectivity User Interfaces
These are presentation user interfaces like Power Point, where there is generally one person on a soap box, communicating something specific to a larger group of people. They are often combined with some of the bi-directional user interfaces, but I feel like this is a real category on it’s own. There is great value and real need to have this kind of 1-direction communication. TV is an interface like this, as is a lot of the internet.
Informational Presentation/Aggregation User Interfaces
I’m thinking about things like Adobe Reader, Preview or Google Reader for this category. These user interfaces are just the messenger for bringing content to the user’s eyes. They don’t choose the content or care what the content is. In a way, they are also gateway user interfaces in that the user is just using them to get to something else.
Scratch Pad User Interfaces
Here I’m talking about OneNote and Notepad and Todo lists and anything else that is used simply as you would a sticky note or a pad of paper. The information here is transitive. Sometimes it seems very important at the moment and later means nothing. Other times you find yourself reaching for it over again over again, wishing that your brain was better at remember that sort of thing (like your WEP key or your wife’s SSN). These are interesting interfaces because there is often so much information that could potentially go into them and it is challenging to keep straight between computers, phones, home, work. The scary thing for me is that I have a dozen of these systems spread out over multiple computers and locations that may or may not be in sync with each other. Sometime it’s better just to have a physical notepad or journal that you can carry around with you.
Machine Communication (Control or Tools) User Interfaces
This is just a funny name for a category of interface that allow you to communicate with computers and create more interfaces – i.e: programming in it’s many forms. This could be Visual Studio or an Excel spreadsheet, COBOL or Objective-C. There are so many tools, languages, platforms and user interfaces that it isn’t worth making a list. They key is that you are up a meta layer and now you are using a tool to make another tool (which might end up making another tool…).
Infrastructure, Meta Organization User Interfaces
I see these as background interfaces for the most part. A VPN client is a good example. Or Plaxo. Or Mozy. There is usually a 1 time setup associated with these interfaces and then the user expects them to just continue doing their job.
Personal Entertainment User Interfaces
iTunes, Netflix instant watch, Solitaire etc. These are interfaces that we use to entertain ourselves. In the end, they share a common goal with the gateway interfaces in that they are a pass through to other content that we wish to enjoy. The best user interfaces in this category get out of the way and let the content take center stage. The worst ones get confused and think that we as the user care about the Personal Entertainment User Interface. We don’t. And the worst of all is that with competing entertainment user interface vendors, we as consumer’s inadvertantly get locked into silos where the content we own only works with certain interfaces.
Hubristic User Interfaces
Mencuis argues that Wolfram Alpha is a hubristic user interface, but I say that maybe all interfaces have some elements of hubris in them and that is what we want to understand and avoid. The reality is that we don’t really want our computer systems to be intelligent in the same way we are intelligent as human beings. Instead we want them to complement and augment our intelligence and allow us to reach new understandings and innovations. We have enough trouble as a species communicating among ourselves and getting things done, why would we want to increase the communication barrier with machines too? (Granted your goal might be to create machine intelligence, but that is another subject entirely) In each of the categories above, the user interfaces that succeed and meet user needs are the ones that get out of the way and do the best possible job of letting the user achieve his/her goals. I think this is part of the success with the bare bones interface of Google’s search engine and the subtle text based ads. Their user interface design acknowledges that you are there to look for something. You are not there with the hopes of finding a good ad to click on. If what you are looking for happens to relate to what someone else is offering, then many times an ad is actually helpful and everyone is happy. If not, then you can move on with your real task of getting whatever you set out to do done. Many other search engines fail because they don’t understand this principle and their hubris affect’s their market share. The reason why boot up time matters on a PC is because all the end user cares about is watching a movie on Hulu or changing their Facebook status. They don’t care about all the other fancy system you are loading up for them to manage windows and display fancy graphics and index your file system, etc. I think it is worth looking hard at the hubris in the user interfaces we are designing and getting rid of it. The challenge is that hubris often sells well and generates hype – so we are forever tempted to add more of that magic sauce into our applications. As software developers we should spend more time creating software that helps users align their mental models so that they can most effectively meet their goals. Ultimately, software is a tool; so let’s be very clear about making those tools easy to learn and as effective as possible once learned.