Discoverability in Software


One of the big challenges in writing usable software is making all of the features and options apparent to the user, particularly to the novice.

Menus do a good job, by being visible and readable (including by accessibility tools).  But keyboard shortcuts that are not menuized have poor discoverability, as do some mouse actions (gestures, uncommon or inconsistent button behavior).

For example, you’ve probably repeatedly clicked on a text field in software before and noticed portions of the entered content are selected.  It’s not obvious what happens if you aren’t paying close attention.

The general behavior here is that a single click moves the cursor while a double click will select some portion of the entered text.  The double click rules are basically:

  1. Select the word the cursor is over (if it is a word).
  2. Otherwise, select the surrounding word(s) (if over a space).

But there’s also the triple click here.  Triple clicking will select the entire paragraph.

How would you determine these behaviors, other than having been told or experimented?  Unlike a checkbox, which has some kind of indication that clicking it does something like erase or add a check to it, text gives no such indication.

There are regular threads across the internet where people discover that shift and middle click both have myriad uses in Firefox.  Having an about: URL that gave the full list might be useful, but even that wouldn’t be too discoverable.  And the sidekick of discoverability is remindability.  If the user reads a long list once, they won’t necessarily remember for the next time they could use that action.

Certain UNIX text editors have extensive tutorials to help people learn their commands and behavior.  And the evidence is compelling that once you learn them it makes you more productive.  But, learning them is still a fairly big hurdle, even with tutorials.  This is purely a discovery issue.

One of the best possible solutions I can imagine would be to create video games with the UI for these applications.  If you had to kill space aliens (no offense to any space aliens reading this) while playing a game version of vi, you would learn the commands much faster.  Same goes for killing zombie tabs and zombie bookmarks in Firefox.