<?xml version="1.0"?>
<!-- name="generator" content="blosxom/2.0" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
  <channel>
    <title>Planet Bruce's Weblog   </title>
    <link>http://planetbruce.com</link>
    <description>Planet Bruce's Weblog</description>
    <language>en</language>

  <item>
    <title>Adaptive Interfaces and Intelligent UI Design</title>
    <link>http://planetbruce.com/2005/03/22#adaptive_ui</link>
    <description>&lt;p&gt;Most web-based UI design is fairly atrocious. Major sites like eBay and Amazon are remarkably difficult to use and navigate. The problem has numerous causes, whether it be bad user interface design, slow response times, or the inherent limitations of browsers. One major misperception that compounds the problem is the belief that users want choices. Users don't want choices. They just want things to work.&lt;br&gt;&lt;br&gt;
One of the best techniques to make a program or user interface &quot;just work&quot; is to design it to configure itself automatically to the user's likely need. For example:&lt;br&gt;&lt;br&gt;
1. When I switch timezones (while flying on an airplane) my cell phone doesn't ask me whether I want to switch timezones. It automatically displays the time in the local timezone. (I don't know if there is even a way to control this.)&lt;br&gt;&lt;br&gt;
2. I use a Korg tuner to tune my violin. Unlike some tuners, you don't need to tell it which string you are tuning (or whether you are tuning a cello, viola, or violin). Just turn it on and play any string. The tuner &quot;listens&quot; and displays the closest note, with a needle and lights to indicate whether it is too sharp or too flat. (It even has a mode that allows you to tune a violin to an out-of-tune piano, but that is a separate story.)&lt;br&lt;br&gt;
3. I once programmed a bartending game (actually a sophisticated bartending training simulation). In it, there is one set of bartending controls to take the patron's drink order, ask for an ID, flirt with the patron, etc. But there can be up to 3 patrons at the bar at once, and there is only one set of bartender controls. How does it know which patron you are addressing? The program makes some intelligent guesses. For example, if you place a glass in front of a patron, it &quot;activates&quot; that patron and assumes you (the player) are addressing that patron. Likewise, if a patron is served a drink, the game automatically chooses another patron as the &quot;active&quot; one, assuming the first patron has already been dealt with.&lt;br&gt;&lt;br&gt;
4. When using the Firefox browser, I often use the &quot;Open in New Tab&quot; option (as opposed to opening a hyperlinked item in a new window). At first, I was surprised that Firefox doesn't bring the new tab to the front. But I shortly realized that the default behavior is wholly appropriate. Now, if I am reading a web site, I can open various hyperlinks in new tabs without losing the flow of what I am currently reading. Then, when I finish the current article, I can easily access the tabs with the hyperlinks that interested me. This is excellent design and much less distracting than switching focus to the new tabbed document immediately.&lt;br&gt;&lt;br&gt;
Next time you are giving a user various configuration options, ask yourself whether the software could make reasonable guesses about the likely needs of the user. Allow the user to configure alternative options, but don't force them to say &quot;yes&quot; to the likely mode of operation. Instead, assume the correct mode of operation (provided that it isn't dangerous or irreversible--for example, you wouldn't make deleting an email after it is read the default behavior).&lt;br&gt;&lt;br&gt;
This brings me to an egregious counter example:&lt;br&gt;&lt;br&gt;
When using an online banking site, I'll typically want to review the transaction history to see what checks and deposits have posted. My bank forces the following series of clicks to view the transaction history for my account:&lt;br&gt;&lt;br&gt;
1. From the Checking Account Summary page, click the View History button.&lt;br&gt;&lt;br&gt;
2. Choose the Selection Option:&lt;br&gt;
a. Single Day Search (All Activity)&lt;br&gt;
b. Date Range Search&lt;br&gt;
c. Item Search&lt;br&gt;
d. Range of Items Search&lt;br&gt;&lt;br&gt;
3. Click the Submit button.&lt;br&gt;&lt;br&gt;
4. Enter a range of dates (the defaults is the last three months of activiity)&lt;br&gt;&lt;br&gt;
5. Click the Get History button&lt;br&gt;&lt;br&gt;
Every time I want to get the history of my recent transactions, I have to click at least three buttons (and wait for three page refreshes) just to accept the default behavior. Even still, it shows me the oldest transactions first without an option to sort in reverse chronological order.&lt;br&gt;&lt;br&gt;
A much better design would be to automatically show me the most recent 30 days of transactions starting with today's transactions.&lt;br&gt;&lt;br&gt;
There is no tragedy if I get the wrong data by default, as I could easily change the options in cases where I want an alternative report. Better still, the system could remember my previous requests and guess which report I'd like to see.&lt;br&gt;&lt;br&gt;
The problem stems from a lack of user testing and a lack of understanding the online medium. The web site is essentially giving me the electronic equivalent of a printed monthly statement even though my purposes in accessing it online are entirely different. So think about how your users will use your application, and test it with real users to confirm your hypothesis or as the basis to modify your design.&lt;/p&gt;

</description>
  </item>
  </channel>
</rss>