|
- Use background tasking.
- Reduce subjective time. Keep the user engaged; set up the next task.
Summarised from Bruce Tognazzini's website.
|
Implement Background Tasking
|
A classic example of background tasking is printing (or print spooling), because:
-
The task takes a long time.
-
It requires no user involvement during the process.
-
The total task time is unpredictable.
-
The user's next task is usually not contingent on the results of the
background task.
Any operation that fulfills the above criteria
and can be split off as a separate task, should be.
Tasks that require asynchronicity must be enumerated in the Functional Spec
to avoid performance surprises down the road.
Asynchronicity is a serious engineering task,
but it is far easier to accomplish when planned for,
rather than waiting for the inevitable client-complaints to roll in.
The one central strategy for reducing subjective time:
Keep the User Engaged
When inevitable pauses occur in the workflow because you must make a
server round-trip before the user can proceed, for example,
make sure that the user is engaged and entertained.
The ideal engagment is engagment with the task being performed.
Before leaving for the server, give the user something to read that will
set them up for the next task.
People's subjective beliefs as to what is or is
not quick are highly-suspect.
Do not accept personal opinion about speed and efficiency as fact.
Instead, user-test (use a stop-watch).
Users asked to perform the same task with a mouse and a keyboard
will report that the keyboard is faster, even if the mouse
is actually significantly faster.
This is because the keyboard is more engaging,
requiring the user to make many small decisions.
|