The Fallacy of the Magical User Interface

September 16, 2008

Some futuristic user interface ideas are never going to happen, for a subtle and underappreciated reason.

From Mark Weiser’s seminal Ubiquitous Computing Paper, The Computer for the 21st Century:

Sal doesn’t remember Mary, but she does remember the meeting. She quickly starts a search for meetings in the past two weeks with more than 6 people not previously in meetings with her, and finds the one. The attendees’ names pop up, and she sees Mary.

I know it’s dangerous to say “never.” But I say, never*.

Why hasn’t anyone built a program that can quickly do what the story suggests?

Let’s look at each step of her query:

  • Find a meeting
  • in the past two weeks
  • with more than six people
  • not previously in meetings with her

Existing technology can do all this, but a system that did only this wouldn’t be very interesting. It’s not often that people search for meetings within the past n weeks with more than m attendees not previously in meetings with them. What’s interesting is the implication of a system that easily accepts complicated queries of this type. Let’s reverse-engineer the capabilities of such a system. Let’s first deal with a traditional user interface.

First, it allows a user very quickly switch to their calendar. Most people leave their calendar open whenever they’re using a computer. This is a solved problem, it takes one step. Sal task-switches to her calendar.

Second, it allows a user to very quickly enable a search of past events. Common calendar programs have text search boxes but this wouldn’t be enough. We need a “Power search” feature. Sal selects it. Step two.

Third, it allows the user to string together logical criteria. “Past two weeks AND more than six people not previously in meetings with me.”

Suddenly, we run into an explosion of complexity.

We have multiple search criteria in one query. The user interface therefore supports adding and removing search criteria. That adds two elements to the interface. Sal’s query has two criteria, so she goes through two steps of “Add a new search criterion.” Sal has now performed a total of four steps.

The search for meetings in the past two weeks means we probably have user interface support for searching based on meeting features like dates, times, hosts, attached files, and locations. Each of these requires additional UI support. The criterion addition interface therefore includes an element to select what kind of meeting feature it’s about. We’re up to three elements.

“Past two weeks.” This suggests we can search by date range. This means Sal must select a start date and an end date. Each of these operations will take two clicks at best. We’re up to eight steps.

“More than six people not previously in meetings with me.” What kind of interface do we need to support this query? “More than.” Alternatives are “Less than” and “Exactly.” This means an additional UI element and another step to use it.

“Six people.” We need a way to input a number. Another UI element, another step. We’re up to ten steps, and I’ve stopped counting how many widgets and doodads this interface includes.

“Not previously in meetings with me.” This is a qualifying criterion on the “More than six people.” Sal might have wanted to search for people who were previously in meetings with her. Thus, it cost Sal a step to choose the “not”. Let’s be nice and assume it only costs two more steps to specify “previously in meetings with me.”

With a traditional interface, it would take at minimum thirteen steps in a complicated UI to specify her search. This would be error-prone because of the sheer number of steps and the number of choices to be made at each step. Therefore, the user interface cannot be simple and quick.

In user interfaces, there is a fundamental tradeoff between complexity and power. This vision of the future ignores it.

* I define never as, “Until we have Strong Artificial Intelligence**.”
** Strong Artificial Intelligence means computers as intelligent as people.

Advertisements
%d bloggers like this: