|
|
|
|
Lesson#27
|
BEHAVIOR and FORM-2
|
|
|
|
As the aim of this lecture is to introduce you the study of
Human Computer
Interaction, so that after studying this you will be able to:
. Understand the
narratives and scenarios
. Define requirements
using persona-based design
27.1 Postures for the Web
Designers may be tempted to think that the Web is, by necessity,
different from
desktop applications in terms of posture. Although there are
variations that exhibit
combinations of these postures, the basic four stances really do
cover the needs of
most Web sites and Web.
Information-oriented sites
Sites that are purely informational, which require no complex
transactions to take
place beyond navigating from page to page and limited search,
must balance two
forces: the need to display a reasonable density of useful
information, and the need to
allow first time and infrequent users to easily learn and
navigate the site. This implies
a tension between sovereign and transient attributes in
informational sites. Which
stance is more dominant depends largely on who the target
personas are and what
their behavior patterns are when using the site: Are they
infrequent or one-time users,
or are they repeat users who will return weekly or daily to view
content?
The frequency at which content can be updated on a site does, in
some respects,
influence this behavior: Informational sites with daily-updated
information will
naturally attract repeat users more than a monthly-updated site.
Infrequently updated
sites may be used more as occasional reference (assuming the
information is not too
topical) rather than heavy repeat use and should then be given
more of a transient
stance than a sovereign one. What's more, the site can configure
itself into a more
sovereign posture by paying attention to how often that
particular user visits.
SOVEREIGN ATTRIBUTES
Detailed information display is best accomplished by assuming a
sovereign stance. By
assuming
full-screen use, designers can take advantage of all the
possible space available to
clearly present both the information itself and the navigational
tools and cues to keep
users oriented.
The only fly in the ointment of sovereign stance on the Web is
choosing which fullscreen
resolution is appropriate. In fact, this is an issue for desktop
applications as
well. The only difference between the desktop and the Web in
this regard is that Web
sites have little leverage in influencing what screen resolution
users will have. Users,
however, who are spending money on expensive desktop
productivity applications,
245
will probably make sure that they have the right hardware to
support the needs of the
software. Thus, Web designers need to make a decision early on
what the lowest
common denominator they wish to support will be. Alternatively,
they must code
more complex sites that may be optimal on higher resolution
screens, but which are
still usable (without horizontal scrolling) on lower-resolution
monitors.
TRANSIENT ATTRIBUTES
The less frequently your primary personas access the site, the
more transient a stance
the site needs to take. In an informational site, this manifests
itself in terms of ease
and clarity of navigation.
Sites used for infrequent reference might be bookmarked by
users: You should make
it possible for them to bookmark any page of information so that
they can reliably
return to it at any later time.
Users will likely visit sites with weekly to monthly updated
material intermittently,
and so navigation there must be particularly clear. If the site
can retain information
about past user actions via cookies or server-side methods and
present information
that is organized based on what interested them previously, this
could dramatically
help less frequent users find what they need with minimal
navigation.
Transactional sites and Web applications
Transactional Web sites and Web applications have many of the
same tensions
between sovereign and transient stances that informational sites
do. This is a
particular challenge because the level of interaction can be
significantly more
complex.
Again, a good guide is the goals and needs of the primary
personas: Are they
consumers, who will use the site at their discretion, perhaps on
a weekly or monthly
basis, or are they employees who (for an enterprise or B2B Web
application) must use
the site as part of their job on a daily basis? Transactional
sites that are used for a
significant part of an employee's job should be considered full
sovereign applications.
On the other hand, e-commerce, online banking, and other
consumer-oriented
transactional sites must, like informational sites, balance
between sovereign and
transient stances very similarly to informational sites. In
fact, many consumer
transactional sites have a heavy informational aspect because
users like to research
and compare products, investments, and other items to be
transacted upon. For these
types of sites, navigational clarity is very important, as is
access to supporting
information and the streamlining of transactions. Amazon.com has
addressed many of
these issues quite well, via one-click ordering, good search and
browsing capability,
online reviews of items, recommendation lists, persistent
shopping cart, and tracking
of recently viewed items. If Amazon has a fault, it may be that
it tries to do a bit too
much: Some of the navigational links near the bottom of the
pages likely don't get hit
very often.
27.2 Web portals
Early search engines allowed people to find and access content
and functions
distributed throughout the world on the Web. They served as
portals in the original
sense of the word — ways to get somewhere else. Nothing really
happens in these
navigational portals; you get in, you go somewhere, you get out.
They are used
exclusively to gain access quickly to unrelated information and
functions.
246
If the user requires access via a navigational portal relatively
infrequently, the
appropriate posture is transient, providing clear, simple
navigational controls and
getting out of the way. If the user needs more frequent access,
the appropriate posture
is auxiliary: a small and persistent panel of links (like the
Windows taskbar).
As portal sites evolved, they offered more integrated content
and function and grew
beyond being simple stepping-stones to another place.
Consumer-oriented portals
provide unified access to content and functionality related to a
specific topic, and
enterprise portals provide internal access to important company
information and
business tools. In both cases, the intent is essentially to
create an environment in
which users can access a particular kind of information and
accomplish a particular
kind of work: environmental portals. Actual work is done in an
environmental portal.
Information is gathered from disparate sources and acted upon;
various tools are
brought together to accomplish a unified purpose.
An environmental portal's elements need to relate to one another
in a way that helps
users achieve a specific purpose. When a portal creates a
working environment, it also
creates a sense of place; the portal is no longer a way to get
somewhere else, but a
destination in and of itself. The appropriate posture for an
environmental portal is thus
sovereign.
Within an environmental portal, the individual elements function
essentially as small
applications running simultaneously — as such, the elements
themselves also have
postures:
. Auxiliary elements:
Most of the elements in an environmental portal have an
auxiliary posture; they typically present aggregated sets of
information to
which the user wants constant access (such as dynamic status
monitors), or
simple functionality (small applications, link lists, and so
on). Auxiliary
elements are, in fact, the key building block of environmental
portals. The
sovereign portal is, therefore, composed of a set of auxiliary
posture miniapplications.
. Transient elements:
In addition to auxiliary elements, an environmental
portal often provides transient portal services as well. Their
complexity is
minimal; they are rich in explanatory elements, and they are
used for short
periods on demand. Designers should give a transient posture to
any
embedded portal service that is briefly and temporarily accessed
(such as a todo
list or package-tracking status display) so that it does not
compete with the
sovereign/auxiliary posture of the portal itself. Rather it
becomes a natural,
temporary extension of it.
When migrating traditional applications into environmental
portals, one of the key
design challenges is breaking the application apart into a
proper set of portal services
with auxiliary or transient posture. Sovereign, full-browser
applications are not
appropriate within portals because they are not perceived as
part of the portal once
launched.
27.3 Postures for Other
Platforms
Handheld devices, kiosks, and software-enabled appliances each
have slightly
different posture issues. Like Web interfaces, these other
platforms typically express a
tension between several postures.
247
Kiosks
The large, full-screen nature of kiosks would appear to bias
them towards sovereign
posture, but there are several reasons why the situation is not
quite that simple. First,
users of kiosks are often first-time users (with the exception,
perhaps, of ATM users),
and are in most cases not daily users. Second, most people do
not spend any
significant amount of time in front of a kiosk: They perform a
simple transaction or
search, get what information they need, and then move on. Third,
most kiosks employ
either touchscreens or bezel buttons to the side of the display,
and neither of these
input mechanisms support the high data density you would expect
of a sovereign
application. Fourth, kiosk users are rarely comfortably seated
in front of an optimally
placed monitor, but are standing in a public place with bright
ambient light and many
distractions. These user behaviors and constraints should bias
most kiosks towards
transient posture, with simple navigation, large controls, and
rich visuals to attract
attention and hint at function.
Educational and entertainment kiosks vary somewhat from the
strict transient posture
required of more transactional kiosks. In this case, exploration
of the kiosk
environment is more important than the simple completion of
single transactions or
searches. In this case, more data density and more complex
interactions and visual
transitions can sometimes be introduced to positive effect, but
the limitations of the
input mechanisms need to be carefully respected, lest the user
lose the ability to
successfully navigate the interface.
Handheld devices
Designing for handheld devices is an exercise in hardware
limitations: input
mechanisms, screen size and resolution, and power consumption,
to name a few. One
of the most important insights that many designers have now
realized with regard to
handheld devices is that handhelds are often not standalone
systems. They are, as in
the case of personal information managers like Palm and Pocket
PC devices, satellites
of a desktop system, used more to view information than perform
heavy input on their
own. Although folding keyboards can be purchased for many
handhelds, this,
inessence, transforms them into desktop systems (with tiny
screens). In the role of
satellite devices, an auxiliary posture is appropriate for the
most frequently used
handheld applications — typical PIM, e-mail, and Web browsing
applications, for
example. Less frequently or more temporarily used handheld
applications (like
alarms) can adopt a more transient posture.
Cellular telephones are an interesting type of handheld device.
Phones are not satellite
devices: they are primary communication devices. However, from
an interface posture
standpoint, phones are really transient. You place a call as
quickly as possible and
then abandon the interface to your conversation. The best
interface for a phone is
arguably non-visual. Voice activation is perfect for placing a
call; opening the flip lid
on a phone is probably the most effective way of answering it
(or again using voice
activation for hands-free use). The more transient the phones
interface is, the better.
In the last couple of years, handheld data devices and handheld
phones have been converging. These convergence devices run the
risk of making phone operation too complex and data manipulation
too difficult, but the latest breed of devices like the
Handspring Treo has delivered a successful middle ground. In
some ways, they have made the phone itself more usable by
allowing the satellite nature of the device to aid in the input
of information to the phone: Treos make use of desktop contact
information to synchronize the device's phonebook, for example,
thus removing the previously painful data entry step and
reinforcing the transient posture of the phone functionality. It
is important, when designing for these devices, to recognize the
auxiliary nature of data functions and the transient nature of
phone functions, using each to reinforce the utility of the other. (The
data dialup should be minimally transient, whereas the data
browsing should be auxiliary
248
Appliances
Most appliances have extremely simple displays and rely heavily
on hardware buttons
and dials to manipulate the state of the appliance. In some
cases, however, major
appliances (notably washers and dryers) will sport color LCD
touch screens allowing
rich output and direct input.
Appliance interfaces, like the phone interfaces mentioned in the
previous section,
should primarily be considered transient posture interfaces.
Users of these interfaces
will seldom be technology-savvy and should, therefore, be
presented the most simple
and straightforward interfaces possible. These users are also
accustomed to hardware
controls. Unless an unprecedented ease of use can be achieved
with a touch screen,
dials and buttons (with appropriate audible feedback, and visual
feedback via a viewonly
display or even hardware lamps) may be a better choice. Many
appliance makers
make the mistake of putting dozens of new — and unwanted —
features into their
new, digital models. Instead of making it easier, that "simple"
LCD touchscreen
becomes a confusing array of unworkable controls.
Another reason for a transient stance in appliance interfaces is
that users of appliances
are trying to get something very specific done. Like the users
of transactional kiosks,
they are not interested in exploring the interface or getting
additional information;
they simply want to put the washer on normal cycle or cook their
frozen dinners.
One aspect of appliance design demands a different posture:
Status information
indicating what cycle the washer is on or what the VCR is set to
record should be
provided as a daemonic icon, providing minimal status quietly in
a corner. If more
than minimal status is required, an auxiliary posture for this
information then
becomes appropriate.
27.4 Flow and Transparency
When people are able to concentrate wholeheartedly on an
activity, they lose
awareness of peripheral problems and distractions. The state is
called flow, a concept
first identified by Mihaly Csikszentmihalyi, professor of
psychology at the University
of Chicago, and author of Flow: The Psychology of Optimal
Experience
(HarperCollins, 1991).
In Peopleware: Productive Projects and Teams (Dorset House,
1987), Tom DeMarco
and Timothy Lister, describe flow as a “condition of deep,
nearly meditative
involvement.” Flow often induces a “gentle sense of euphoria”
and can make you
unaware of the passage of time. Most significantly, a person in
a state of flow can be
extremely productive, especially when engaged in
process-oriented tasks such as
"engineering, design, development, and writing." Today, these
tasks are typically
performed on computers while interacting with software.
Therefore, it behooves us to
create a software interaction that promotes and enhances flow,
rather than one that
includes potentially flow-breaking or flow-disturbing behavior.
If the program
consistently rattles the user out of flow, it becomes difficult
for him to regain that
productive state.
If the user could achieve his goals magically, without your
program, he would. By the
same token, if the user needed the program but could achieve his
goals without going
through its user interface, he would. Interacting with software
is not an aesthetic
experience (except perhaps in games, entertainment, and
exploration-oriented
249
interactive systems). For the most part, it is a pragmatic
exercise that is best kept to a
minimum.
Directing your attention to the interaction itself puts the
emphasis on the side effects
of the tools rather than on the user's goals. A user interface
is an artifact, not directly
related to the goals of the user. Next time you find yourself
crowing about what cool
interaction you've designed, just remember that the ultimate
user interface for most
purposes is no interface at all.
To create flow, our interaction with software must become
transparent. In other
words, the interface must not call attention to itself as a
visual artifact, but must
instead, at every turn, be at the service of the user, providing
what he needs at the
right time and in the right place. There are several excellent
ways to make our
interfaces recede into invisibility. They are:
1. Follow mental models.
2. Direct, don't discuss.
3. Keep tools close at hand.
4. Provide modeless feedback.
We will now discuss each of these methods in detail.
Follow mental models
We introduced the concept of user mental models in previous
lectures. Different users
will have different mental models of a process, but they will
rarely visualize them in
terms of the detailed innards of the computer process. Each user
naturally forms a
mental image about how the software performs its task. The mind
looks for some
pattern of cause and effect to gain insight into the machine's
behavior.
For example, in a hospital information system, the physicians
and nurses have a
mental model of patient information that derives from the
patient records that they are
used to manipulating in the real world. It therefore makes most
sense to find patient
information by using names of patients as an index. Each
physician has certain
patients, so it makes additional sense to filter the patients in
the clinical interface so
that each physician can choose from a list of her own patients,
organized
alphabetically by name. On the other hand, in the business
office of the hospital, the
clerks there are worried about overdue bills. They don't
initially think about these bills
in terms of who or what the bill is for, but rather in terms of
how late the bill is (and
perhaps how big the bill is). Thus, for the business office
interface, it makes sense to
sort first by time overdue and perhaps by amount due, with
patient names as a
secondary organizational principle.
Direct don't discuss
Many developers imagine the ideal interface to be a two-way
conversation with the
user. However, most users don't see it that way. Most users
would rather interact with
the software in the same way they interact with, say, their
cars. They open the door
and get in when they want to go somewhere. They step on the
accelerator when they
want the car to move forward and the brake when it is time to
stop; they turn the
wheel when they want the car to turn.
This ideal interaction is not a dialog — it's more like using a
tool. When a carpenter
hits nails, he doesn't discuss the nail with the hammer; he
directs the hammer onto the
nail. In a car, the driver — the user — gives the car direction
when he wants to
change the car's behavior. The driver expects direct feedback
from the car and its
250
environment in terms appropriate to the device: the view out the
windshield, the
readings on the various gauges on the dashboard, the sound of
rushing air and tires on
pavement, the feel of lateral g-forces and vibration from the
road. The carpenter
expects similar feedback: the feel of the nail sinking, the
sound of the steel striking
steel, and the heft of the hammer's weight.
The driver certainly doesn't expect the car to interrogate him
with a dialog box.
One of the reasons software often aggravates users is that it
doesn't act like a car or a
hammer. Instead, it has the temerity to try to engage us in a
dialog — to inform us of
our shortcomings and to demand answers from us. From the user's
point of view, the
roles are reversed: It should be the user doing the demanding
and the software doing
the answering.
With direct manipulation, we can point to what we want. If we
want to move an
object from A to B, we click on it and drag it there. As a
general rule, the better, more
flow-inducing interfaces are those with plentiful and
sophisticated direct manipulation
idioms.
Keep tools close at hand
Most programs are too complex for one mode of direct
manipulation to cover all their
features. Consequently, most programs offer a set of different
tools to the user. These
tools are really different modes of behavior that the program
enters. Offering tools is a
compromise with complexity, but we can still do a lot to make
tool manipulation easy
and to prevent it from disturbing flow. Mainly, we must ensure
that tool information
is plentiful and easy to see and attempt to make transitions
between tools quick and
simple. -Tools should be close at hand, preferably on palettes
or toolbars. This way,
the user can see them easily and can select them with a single
click. If the user must
divert his attention from the application to search out a tool,
his concentration will be
broken. It's as if he had to get up from his desk and wander
down the hall to find a
pencil. He should never have to put tools away manually.
Modeless feedback
As we manipulate tools, it's usually desirable for the program
to report on their status,
and on the status of the data we are manipulating with the tool.
This information
needs to be clearly posted and easy to see without obscuring or
stopping the action.
When the program has information or feedback for the user, it
has several ways to
present it. The most common method is to pop up a dialog box on
the screen. This
technique is modal: It puts the program into a mode that must be
dealt with before it
can return to its normal state, and before the user can continue
with her task. A better
way to inform the user is with modeless feedback.
Feedback is modeless whenever information for the user is built
into the main
interface and doesn't stop the normal flow of system activities
and interaction. In
Word, you can see what page you are on, what section you are in,
how many pages
are in the current document, what position the cursor is in, and
what time it is
modelessly just by looking at the status bar at the bottom of
the screen.
If you want to know how many words are in your document,
however, you have to
call up the Word Count dialog from the Tools menu. For people
writing magazine
articles, who need to be careful about word count, this
information would be better
delivered modelessly.
251
Jet fighters have a heads-up display, or HUD, that superimposes
the readings of
critical instrumentation onto the forward view of the cockpit's
windscreen. The pilot
doesn't even have to use peripheral vision, but can read vital
gauges while keeping his
eyes glued on the opposing fighter.
Our software should display information like a jet fighter's
HUD. The program could
use the edges of the display screen to show the user information
about activity in the
main work area of applications. Many drawing applications, such
as Adobe
Photoshop, already provide ruler guides, thumbnail maps, and
other modeless
feedback in the periphery of their windows.
27.5 Orchestration
When a novelist writes well, the craft of the writer becomes
invisible, and the reader
sees the story and characters with clarity undisturbed by the
technique of the writer.
Likewise, when a program interacts well with a user, the
interaction mechanics
precipitate out, leaving the user face-to-face with his
objectives, unaware of the
intervening software. The poor writer is a visible writer, and a
poor interaction
designer looms with a clumsily visible presence in his software.
To a novelist, there is no such thing as a "good" sentence.
There are no rules for the
way sentences should be constructed to be transparent. It all
depends on what the
protagonist is doing, or the effect the author wants to create.
The writer knows not to
insert an obscure word in a particularly quiet and sensitive
passage, lest it sound like a
sour note in a string quartet. The same goes for software. The
interaction designer
must train his ears to hear sour notes in the orchestration of
software interaction. It is
vital that all the elements in an interface work coherently
together towards a single
goal. When a program's communication with the user is well
orchestrated, it becomes
almost invisible.
Webster defines orchestration as "harmonious organization," a
reasonable phrase for
what we should expect from interacting with software. Harmonious
organization
doesn't yield to fixed rules. You can't create guidelines like,
"Five buttons on a dialog
box are good" and "Seven buttons on a dialog box are too many."
Yet it is easy to see
that a dialog box with 35 buttons is probably to be avoided. The
major difficulty with
such analysis is that it treats the problem in vitro. It doesn't
take into account the
problem being solved; it doesn't take into account what the user
is doing at the time or
what he is trying to accomplish.
Adding finesse: Less is more
For many things, more is better. In the world of interface
design, the contrary is true,
and we should constantly strive to reduce the number of elements
in the interface
without reducing the power of the system. In order to do this,
we must do more with
less; this is where careful orchestration becomes important. We
must coordinate and
control all the power of the product without letting the
interface become a gaggle of
windows and dialogs, covered with a scattering of unrelated and
rarely used controls.
It's easy to create interfaces that are complex but not very
powerful. They typically
allow the user to perform a single task without providing access
to related tasks. For
example, most desktop software allows the user to name and save
a data file, but they
never let him delete, rename, or make a copy of that file at the
same time. The dialog
leaves that task to the operating system. It may not be trivial
to add these functions,
252
but isn't it better that the programmer perform the non-trivial
activities than that the
user to be forced to? Today, if the user wants to do something
simple, like edit a copy
of a file, he must go through a non-trivial sequence of actions:
going to the desktop,
selecting the file, requesting a copy from the menu, changing
its name, and then opening
the new file. Why not streamline this interaction?
It's not as difficult as it looks. Orchestration doesn't mean
bulldozing your way
through problems; it means finessing them wherever possible.
Instead of adding the
File Copy and Rename functions to the File Open dialog box of
every application,
why not just discard the File Open dialog box from every
application and replace it
with the shell program itself? When the user wants to open a
file, the program calls
the shell, which conveniently has all those collateral file
manipulation functions builtin,
and the user can double-click on the desired document. True, the
application's File
Open dialog does show the user a filtered view of files (usually
limited to those
formats recognized by the application), but why not add that
functionality to the shell
—filter by type in addition to sort by type?
Following this logic, we can also dispense with the Save As ...
dialog, which is really
the logical inverse of the File Open dialog. If every time we
invoked the Save As ...
function from our application, it wrote our file out to a
temporary directory under
some reasonable temporary name and then transferred control to
the shell, we'd have
all the shell tools at our disposal to move things around or
rename them.
Yes, there would be a chunk of code that programmers would have
to create to make
it all seamless, but look at the upside. Countless dialog boxes
could be completely
discarded, and the user interfaces of thousands of programs
would become more
visually and functionally consistent, all with a single design
stroke. That is finesse!
Distinguishing possibility from probability
There are many cases where interaction, usually in the form of a
dialog box, slips into
a user interface unnecessarily. A frequent source for such
clinkers is when a program
is faced with a choice. That's because programmers tend to
resolve choices from the
standpoint of logic, and it carries over to their software
design. To a logician, if a
proposition is true 999,999 times out of a million and false one
time, the proposition
is false — that's the way Boolean logic works. However, to the
rest of us, the
proposition is overwhelmingly true. The proposition has a
possibility of being false,
but the probability of it being false is minuscule to the point
of irrelevancy. One of the
most potent methods for better orchestrating your user
interfaces is segregating the
possible from the probable.
Programmers tend to view possibilities as being the same as
probabilities. For
example, a user has the choice of ending the program and saving
his work, or ending
the program and throwing away the document he has been working
on for the last six
hours. Mathematically, either of these choices is equally
possible. Conversely, the
probability of the user discarding his work is, at least, a
thousand to one against; yet
the typical program always includes a dialog box asking the user
if he wants to save
his changes.
The dialog box is inappropriate and unnecessary. How often do
you choose to
abandon changes you make to a document? This dialog is
tantamount to your spouse
telling you not to spill soup on your shirt every time you eat.
253
Providing comparisons
The way that a program represents information is another way
that it can obtrude
noisily into a user's consciousness. One area frequently abused
is the representation of
quantitative, or numeric, information. If an application needs
to show the amount of
free space on disk, it can do what the Microsoft Windows 3.x
File Manager program
did: give you the exact number of free bytes.
In the lower-left corner, the program tells us the number of
free bytes and the total
number of bytes on the disk. These numbers are hard to read and
hard to interpret.
With more than ten thousand million bytes of disk storage,
it-ceases to be important to
us just how many hundreds are left, yet the display rigorously
shows us down to the
kilobyte. But even while the program is telling us the state of
our disk with precision,
it is failing to communicate. What we really need to know is
whether j or not the disk
is getting full, or whether we can add a new 20 MB program and
still have sufficient
working room. These raw numbers, precise as they are, do little
to help make sense of
the facts.
Visual presentation expert Edward Tufte says that quantitative
presentation should
answer the question, "Compared to what?" Knowing that 231,728 KB
are free on your
hard disk is less useful than knowing that it is 22 percent of
the disk's total capacity.
Another Tufte dictum is, “Show the data,” rather than simply
telling about it textually
or numerically. A pie chart showing the used and unused portions
in different colors
would make it much easier to comprehend the scale and proportion
of hard disk use. It
would show us what 231,728 KB really means. The numbers
shouldn't go away, but
they should be relegated to the status of labels on the display
and not be the display
itself. They should also be shown with more reasonable and
consistent precision. The
meaning of the information could be shown visually, and the
numbers would merely
add support.
In Windows XP, Microsoft's right hand giveth while its left hand
taketh away. The
Pile Manager is long dead, replaced by the Explorer dialog box
shown in Figure.
254
This replacement is the properties dialog associated with a hard
disk. The Used Space
is shown in blue and the Free Space is shown in magenta, making
the pie chart an
easy read. Now you can see at a glance the glad news that
GranFromage is mostly
empty.
Unfortunately, that pie chart isn't built into the Explorer's
interface. Instead, you have
to seek it out with a menu item. To see how full a disk is, you
must bring up a modal
dialog box that, although it gives you the information, takes
you away from the place
where you need to know it. The Explorer is where you can see,
copy, move, and
delete files; but it's not where you can easily see if things
need to be deleted. That pie
chart should have been built into the face of the Explorer. In
Windows 2000, it is
shown on the left-hand side when you select a disk in an
Explorer window. In XP,
however, Microsoft took a step backwards, and the graphic has
once again been
relegated to a dialog. It really should be visible at all times
in the Explorer, along with
the numerical data, unless the user chooses to hide it.
Using graphical input
Software frequently fails to present numerical information in a
graphical way. Even
rarer is the capability of software to enable graphical input. A
lot of software lets
users enter numbers; then, on command, it converts those numbers
into a graph. Few
products let the user enter a graph and, on command, convert
that graph into a vector
of numbers. By contrast, most modern word processors let you set
tabs and
indentations by dragging a marker on a ruler. The user can say,
in effect, "Here is
255
where I want the paragraph to start," and let the program
calculate that it is precisely
1.347 inches in from the left margin instead of forcing the user
to enter 1.347.
"Intelligent" drawing programs like Microsoft Visio are getting
better at this. Each
polygon that the user manipulates on screen is represented
behind the scenes by a
small spreadsheet, with a row for each point and a column each
for the X and Y
coordinates. Dragging a polygon's vertex on screen causes the
values in the
corresponding point in the spreadsheet represented by the X and
Y values, to change.
The user can access the shape either graphically or through its
spreadsheet
representation.
This principle applies in a variety of situations. When items in
a list need to be
reordered, the user may want them ordered alphabetically, but he
may also want them
in order of personal preference; something no algorithm can
offer. The user should be
able to drag the items into the desired order directly, without
an algorithm interfering
with this fundamental operation.
Reflecting program status
When someone is asleep, he usually looks asleep. When someone is
awake, he looks
awake. When someone is busy, he looks busy: His eyes are focused
on his work and
his body language is closed and preoccupied. When someone is
unoccupied, he looks
unoccupied: His body is open and moving, his eyes are questing
and willing to make
contact. People not only expect this kind of subtle feedback
from each other, they
depend on it for maintaining social order.
Our programs should work the same way. When a program is asleep,
it should look
asleep. When a program is awake, it should look awake; and when
it's busy, it should
look busy. When the computer is engaged in some significant
internal action like
formatting a diskette, we should see some significant external
action, such as the icon
of the diskette slowly changing from grayed to active state.
When the computer is
sending a fax, we should see a small representation of the fax
being scanned and sent
(or at least a modeless progress bar). If the program is waiting
for a response from a
remote database, it should visually change to reflect its
somnolent state. Program state
is best communicated using forms of rich modeless feedback.
Avoiding unnecessary reporting
For programmers, it is important to know exactly what is
happening process-wise in a
program. This goes along with being able to control all the
details of the process. For
users, it is disconcerting to know all the details of what is
happening. Non-technical
people may be alarmed to hear that the database has been
modified, for example. It is
better for the program to just do what has to be done, issue
reassuring clues when all
is well, and not burden the user with the trivia of how it was
accomplished.
Many programs are quick to keep users apprised of the details of
their progress even
though the user has no idea what to make of this information.
Programs pop up dialog
boxes telling us that connections have been made, that records
have been posted, that
users have logged on, that transactions were recorded, that data
have been transferred,
and other useless factoids. To software engineers, these
messages are equivalent to the
humming of the machinery, the babbling of the brook, the white
noise of the waves
crashing on the beach: They tell us that all is well. They were,
in fact, probably used
while debugging the software. To the user, however, these
reports can be like eerie
lights beyond the horizon, like screams in the night, like
unattended objects flying
about the room.
256
As discussed before, the program should make clear that it is
working hard, but the
detailed feedback can be offered in a more subtle way. In
particular, reporting
information like this with a modal dialog box brings the
interaction to a stop for no
particular benefit.
It is important that we not stop the proceedings to report
normalcy. When some event
has transpired that was supposed to have transpired, never
report this fact with a
dialog box. Save dialogs for events that are outside of the
normal course of events.
By the same token, don't stop the proceedings and bother the
user with problems that
are not serious. If the program is having trouble getting
through a busy signal, don't
put up a dialog box to report it. Instead, build a status
indicator into the program so
the problem is clear to the interested user but is not obtrusive
to the user who is busy
elsewhere.
The key to orchestrating the user interaction is to take a
goal-directed approach. You
must ask yourself whether a particular interaction moves the
user rapidly and directly
to his goal. Contemporary programs are often reluctant to take
any forward motion
without the user directing it in advance. But users would rather
see the program take
some "good enough" first step and then adjust it to what is
desired. This way, the
program has moved the user closer to his goal.
Avoiding blank slates
It's easy to assume nothing about what your users want and
rather ask a bunch of
questions of the user up front to help determine what they want.
How many programs
have you seen that start with a big dialog asking a bunch of
questions? But users —
not power users, but normal people — are very uncomfortable with
explaining to a
program what they want. They would much rather see what the
program thinks is
right and then manipulate that to make it exactly right. In most
cases, your program
can make a fairly correct assumption based on past experience.
For example, when
you create a new document in Microsoft Word, the program creates
a blank document
with preset margins and other attributes rather than opening a
dialog that asks you to
specify every detail. PowerPoint does a less adequate job,
asking you to choose the
base style for a new presentation each time you create one. Both
programs could do
better by remembering frequently and recently used styles or
templates, and making
those the defaults for new documents.
Just because we use the word think in conjunction with a program
doesn't mean that
the software needs to be intelligent (in the human sense) and
try to determine the right
thing to do by reasoning. Instead, it should simply do something
that has a statistically
good chance of being correct, then provide the user with
powerful tools for shaping
that first attempt, instead of merely giving the user a blank
slate and challenging him
to have at it. This way the program isn't asking for permission
to act, but rather asking
for forgiveness after the fact.
For most people, a completely blank slate is a difficult
starting point. It's so much
easier to begin where someone has already left off. A user can
easily fine-tune an
approximation provided by the program into precisely what he
desires with less risk
of exposure and mental effort than he would have from drafting
it from nothing.
Command invocation versus configuration
Another problem crops up quite frequently, whenever functions
with many
parameters are invoked by users. The problem comes from the lack
of differentiation
between a function and the configuration of that function. If
you ask a program to
257
perform a function itself, the program should simply perform
that function and not
interrogate you about your precise configuration details. To
express precise demands
to the program, you would request the configuration dialog. For
example, when you
ask many programs to print a document, they respond by launching
a complex dialog
box demanding that you specify how many copies to print, what
the paper orientation
is, what paper feeder to use, what margins to set, whether the
output should be in
monochrome or color, what scale to print it at, whether to use
Postscript fonts or
native fonts, whether to print the current page, the current
selection, or the entire
document, and whether to print to a file and if so, how to name
that file. All those
options are useful, but all we wanted was to print the document,
and that is all we
thought we asked for.
A much more reasonable design would be to have a command to
print and another
command for print setup. The print command would not issue any
dialog, but would
just go ahead and print, either using previous settings or
standard, vanilla settings. The
print setup function would offer up all those choices about
paper and copies and fonts.
It would also be very reasonable to be able to go directly from
the configure dialog to
printing.
The print control on the Word toolbar offers immediate printing
without a dialog box.
This is perfect for many users, but for those with multiple
printers or printers on a
network, it may offer too little information. The user may want
to see which printer is
selected before he either clicks the control or summons the
dialog to change it first.
This is a good candidate for some simple modeless output placed
on a toolbar or
status bar (it is currently provided in the ToolTip for the
control, which is good, but
the feedback could be better still). Word's print setup dialog
is called Print. . . and is
available from the File menu. Its name could be clearer,
although the ellipsis does,
according to GUI standards, give some inkling that it will
launch a dialog.
There is a big difference between configuring and invoking a
function. The former
may include the latter, but the latter shouldn't include the
former. In general, any user
invokes a command ten times for every one time he configures it.
It is better to make
the user ask explicitly for configuration one time in ten than
it is to make the user
reject the configuration interface nine times in ten.
Microsoft's printing solution is a reasonable rule of thumb. Put
immediate access to
functions on buttons in the toolbar and put access to
function-configuration dialog
boxes on menu items. The configuration dialogs are better
pedagogic tools, whereas
the buttons provide immediate action.
Asking questions versus providing choices
Asking questions is quite different from providing choices. The
difference between
them is the same as that between browsing in a store and
conducting a job interview.
The individual asking the questions is understood to be in a
position superior to the
individual being asked. Those with authority ask questions;
subordinates respond.
Asking users questions makes them feel inferior.
Dialog boxes (confirmation dialogs in particular) ask questions.
Toolbars offer
choices. The confirmation dialog stops the proceedings, demands
an answer, and it
won't leave until it gets what it wants Toolbars, on the other
hand, are always there,
quietly and politely offering up their wares like a
well-appointed store, offering you
the luxury of selecting what you would like with just a flick of
your finger.
Contrary to what many software developers think, questions and
choices don't
necessarily make the user feel empowered. More commonly, it
makes the user feel
258
badgered and harassed. Would you like soup or salad? Salad.
Would you like cabbage
or spinach? Spinach. Would you like French, Thousand Island, or
Italian? French.
Would you like lo-cal or regular? Stop! Just bring me the soup!
Would you like
chowder or chicken noodle?
Users don't like to be asked questions. It cues the user that
the program is:
. Ignorant
. Forgetful
. Weak
. Lacking initiative
. Unable to fend for
itself
. Fretful
. Overly demanding
These are qualities that we typically dislike in people. Why
should we desire them in
software? The program is not asking us our opinion out of
intellectual curiosity or
desire to make conversation, the way a friend might over dinner.
Rather, it is
behaving ignorantly or presenting itself with false authority.
The program isn't
interested in our opinions; it requires information — often
information it didn't really
need to ask us in the first.
Worse than single questions are questions that are asked
repeatedly and unnecessarily.
Do you want to save that file? Do you want to save that file
now? Do you really want
to save that file? Software that asks fewer questions appears
smarter to the user, and
more polite, because if users fail to know the answer to a
question, they then feel
stupid.
In The Media Equation (Cambridge University Press, 1996),
Stanford sociologists
Clifford Nass and Byron Reeves make a compelling case that
humans treat and
respond to computers and other interactive products as if they
were people. We should
thus pay real attention to the "personality" projected by our
software. Is it quietly
competent and helpful, or does it whine, nag, badger, and make
excuses?
Choices are important, but there is a difference between being
free to make choices
based on presented information and being interrogated by the
program in modal
fashion. Users would much rather direct their software the way
they direct their
automobiles down the street. An automobile offers the user
sophisticated choices
without once issuing a dialog box.
Hiding ejector seat levers
In the cockpit of every jet fighter is a brightly painted lever
that, when pulled, fires a
small rocket engine underneath the pilot's seat, blowing the
pilot, still in his seat, out
of the aircraft to parachute safely to earth. Ejector seat
levers can only be used once,
and their consequences are significant and irreversible.
Just like a jet fighter needs an ejector seat lever, complex
desktop applications need
configuration facilities. The vagaries of business and the
demands placed on the
software force it to adapt to specific situations, and it had
better be able to do so.
Companies that pay millions of dollars for custom software or
site licenses for
thousands of copies of shrink-wrapped products will not take
kindly to a program's
inability to adapt to the way things are done in that particular
company. The program
must adapt, but such adaptation can be considered a one-time
procedure, or something
259
done only by the corporate IT staff on rare occasion. In other
words, ejector seat
levers may need to be used, but they won't be used very often.
Programs must have ejector seat levers so that users can —
occasionally — move
persistent objects in the interface, or dramatically (sometimes
irreversibly) alter the
function or behavior of the application. The one thing that must
never happen is
accidental deployment of the ejector seat. The interface design
must assure that the
user can never inadvertently fire the ejector seat when all he
wants to do is make some
minor adjustment to the program.
Ejector seat levers come in two basic varieties: those that
cause a significant visual
dislocation (large changes in the layout of tools and work
areas) in the program, and
those that perform some irreversible action. Both of these
functions should be hidden
from inexperienced users. Of the two, the latter variety is by
far the more dangerous.
In the former, the user may be surprised and dismayed at what
happens next, but he
can at least back out of it with some work. In the latter case,
he and his colleagues are
likely to be stuck with the consequences. |
|
|
|