Archive for January, 2008

Phone Menu Mistakes

Jan 08
22
  • “Our menu items have changed so please listen carefully…” – Do they really think I memorized their menus?
  • “We are experiencing unusually high call volume” – … No. this happens to you all the time you just choose not to hire enough customer support people.
  • “Your call is very important to us” – If my call was important to you I wouldn’t be on hold.
  • “Please enter your account number followed by number sign” … So that we may process it and ask you for it again once you speak with a real person.
  • “Our department doesn’t handle that you need to speak with” … Someone else who will transfer you over and over untill you give up.
  • “Your call may be recorded for quality purposes.” … We’re recorded all of our calls but we still can’t figure out the quality problem.
  • Endless music with no indication of wait time… Would it kill you to tell me the expected time remaining or the number of people in the call line in front of me?
  • “You have pressed an invalid choice, goodbye.” … We don’t care about your business.

How about you, heard any phone menu mistakes lately?

How to fix the voting machine problem in the US

Jan 08
14

There is a myth that computers will always make things better and a great example of this myth in action is voting. While computers are great at adding up numbers they don’t know what those numbers mean and the code that adds those numbers can be tampered with. In fact because of the way voting works today it’s impossible to track if a vote was properly counted.

When you vote you want to know that your vote was counted correctly. You also want to know that someone elses vote was not counted twice. You need trust and security.

You need the trust and security you get at a bank. When you deposit $1,000 at the bank every dollar is counted. You have basic accounting, receipts and balances that allow both you and the bank to figure out where the money goes. Why is voting any different?

Well, for one you want to be able to vote anonymously. You can’t make voting records public because unscrupulous individuals could coerce or intimidate people into voting a certain way. What you want is anonymous but verifiable receipts.

Imagine I go to vote and when I get to the voting booth I take a dollar bill out of my pocket. When I vote I insert the dollar into the voting machine and when I’m done I get my dollar bill back plus a receipt of my vote. It’s an ordinary dollar bill, there’s nothing special about it. In the voting process the dollar bill and I are similar. We are anonymous and we are unique. Each bill has a unique serial number. Once voting is complete and the votes have been tallied the serial numbers of the bills and the corresponding votes can be released publicly.

Anyone who voted can go lookup their own vote by finding their own serial number. Voting is still anonymous, no one can tell who you voted for but you can verify that your own vote was counted. The bill serial number acts as a unique receipt. Since the bill is difficult to forge it doesn’t matter how the actual ballot is done you have a verifiable way to track your own vote. If your vote was counted incorrectly you can bring your bill as proof and correct the mistake. (Of course don’t spend that bill until the election is over.) If your vote was never counted the paper receipt plus the bill are proof of the place, location and unique machine used to vote. This can be used to back-track and find faulty machines that issued receipts but didn’t actually count votes.

You no longer have to worry about the poor design of voting machines, hanging chads, miscounts, recounts, and widespread election tampering. Everything can be done out in the open. Only with an open process can you have public scrutiny to ensure that everything is just and fair.

What about other people’s votes? How can I know that other people are voting only once? Interestingly the answer is non-technical. We can learn a lesson from Iraq that used a similar process in their election:iraq-vote.jpg

Review: UserTesting.com

Jan 08
9

I’ve always been a big believer in usability testing. It’s the perfect parallel to functional testing. You just don’t know how people will use your product untill you watch people actually using your product. One of the problems with usability testing is that it can be expensive and time-consuming. I was excited to hear about a new startup called UserTesting that is looking to solve both of these problems.

The site automates many aspects of usability testing and it makes it affordable. This allows companies large and small to run tests quickly and cheaply. The process is very straight forward and can be used to test both web-software as well as desktop applications (Windows Users).

To begin you setup a basic account and specify the instructions and tasks you want your participant to performs. Each participant costs $19 so for under $100 you can run a five person usability study. Participants are recruited from across the web and have a range of demographics, houshold incomes and other factors. You can also specify additional requirements for your participants if needed.

Each participant installs a screen-recording application that will record them running the test as well as their voice describing what they are doing and why. Each test runs 15-20 min but can be more. You can view tests online or download a flash file for archival or later playback.
One of the downsides of the service is that it’s not interactive. If users hit a roadblock or can’t get past a certain step you can’t step in and give them a hint. You’re only viewing the video once the test has been completed. You also can’t follow-up with additional tasks or additional questions, each test is a one-shot deal.

Another portential downside is that you can’t specify particpants yourself. So this wouldn’t be appropriate for very industry specific products or internal tools.

In an in-person test if people get stuck you would let them struggle for 2-3 minutes and then give them a hand so you can learn more about other parts of your application. Without this ability you get to experience true customer pain as they struggle to perform tasks with your appilcation. This is a good reality check but you may find yourself screaming at your monitor with the same frustration that your customers may feel. This can be a good thing as anger is a good tool for getting bugs fixed.

The service doesn’t have many bells or whistles but it does provide a great core value and I highly recommend it to any company that hasn’t run usability tests before. UserTesting.com

Top mistakes made creating tables of data and how to avoid them

Jan 08
8

Interfaces design is all about managing data input and output. Input is done through various forms. Output is done most often through tables of data. There are a number of basic things that can be done with a simple HTML or application data table to make the data easier to read and understand.

Table Basics

  • The table should have a title telling users what the table is about. Don’t forget about this and don’t label the table with the non descriptive noun such as: “users” or “groups” try to use a label that tells users what they should do with the table of data… “Edit user permissions and create new accounts” or “Add and remove people from groups.” Whatever the table of data try to construct a simple title to explain the purpose of the table.
  • Use clear and descriptive column headers, avoid acronyms. If you can’t avoid acronyms provide tooltips.
  • Make the column headers sortable, on all tables and on all columns.
  • When sorting by a column show an indication of what column is sorted. Use a triangle icon and point it in the direction of the sort. Make sure that users can visually tell the column can be sorted either by using a standard column look or by using a hover effect.
  • Use horizontal lines or subtle alternating colors if you want to help people read across, use vertical lines or alternating colors if you want people to read down. Border=1 is almost always the wrong answer.
  • If you have a detail page the hyperlink goes in the first column with the name of the item. Underline the hyperlink. Avoid hyperlinks in other columns as this can be confusing. Alternatively make the entire row one big hyperlink if appropriate.
  • If the row can be deleted use a delete icon in the last column. Consider confirming the deletion if the deletion is hard or impossible to recover.
  • Align the header and the text of a column to the left if it’s normal text. Align to the right if it’s a number. Use a fixed number of decimal places so your numbers line up vertically.
  • If you’re displaying a date use the right date format based on the data you are using. Use as short a form as possible but no shorter. You don’t need to use UNIX timestamps for everything.
  • Avoid scrolling the table along the horizontal.

Table Paging

  • If your table has 100′s of results or more add the ability to page your results. (50-100 per page seems to work well)
  • Consider virtualized scrolling if this is available. This is the ability to make the scrollbar larger and dynamically fetch items as they are scrolled into view.
  • It’s usually not necessary to give users the option of how many results they should see per page. If you need to provide this option you should keep it within an options page and not directly under every table cluttering your main interface.
  • Paging elements should be at the bottom of the table. You can optionally place paging controls at the top of the table if users are likely to jump around.
  • The following should be present in the paging area: Current Page, Next Page, Previous Page, Total Page Count.
  • Users may not go past the the first couple pages of results, if your users need to flip through more than this make sure you have alternatives for finding data such as filters or search.

Table Filtering (optional but necessary for long lists)

  • Design your filters to narrow long lists down quickly and eliminate large portions of the data. Filtering is not the same as searching you’re trying to get the list down to be a smaller list it’s not trying to find a specific item.
  • Consider filters that match the logical roles that people perform on the data, filter by User, Region, Job-Title, Permissions, Sevarity, Priority, etc.
  • Usually people want to filter by the data columns that you present. If you want to filter by a column that isn’t shown consider showing the column so users can sort by it.
  • It should be obvious when the list is filtered and when it isn’t. Make it easy to clear any filters. If a filter is a narrowing choice make it easy for users to change their mind and pick another choice without needing to use the back button.
  • Filters can be placed under the columns (as in Excel) or in a module to the left, right or above the table. Avoid putting filters bellow a table as it may not be seen.
  • When possible consider in-place typing filters that filter the data as you type.

Selection

  • If you need to provide selection within a list consider either the shopping list metaphor where you add list items to a growing collection or a checkbox selection where you can check off multiple items and perform an action.
  • If using check box selection avoid having hyper links in the list as users may inadvertently click the link trying to click the check box.
  • Provide simple command buttons or checkboxes to select all or clear the selection.
  • If you provide keyboard access try to address traditional keyboard selection shortcuts (CTRL/Shift/Arrow/Spacebar selection).

Creating great tables in your application will make the data easier access. Many people forget that a very large percentage of peoples time is spent trying to view analyse and manipulate data within the interface. Having great tables across your appication is a good start.

Web Start Menu

Jan 08
4

I’ve been exploring some interesting concepts with how you start a web application. When you want to start a traditional application you use either the “Start Menu” in Windows or the “Dock” in OSX, Ubuntu also has a start menu approach.

When you want to start a web-application, you first launch the web-browser-application, then you launch the actual web application that you want. Gmail, Flickr, LinkedIn, etc.

There are two itneresting projects going on at Firefox that relate to this.

  • The first is called Prism. This will allow web-application to live in traditional launch points on the desktop.
  • The second is called Places. This is a redesign of basic bookmarking functionality.

According to the Firefox page about 39% of website visits are to previous pages. This means that people keep going back to the same things over and over.I took a look at the current Places design for Firefox and I thought that it doesn’t address this problem.  The current Places design has a menu that allows users to quickly get access to sub-menus of recent places or frequent places.  While this design addresses some of the problems it causes users to menu surf. It also creates a stronger seperation between starting a web-application and starting a traditional application.

My proposal is to begin to bring these two worlds together and make launching a web-site more like launching a traditional application. Using this approach will tie nicely into the Prism world allowing applications to be “Pinned” as a promoted desktop application.

The current places design is shown first followed by my start menu concept:

Firefox Start Menu