![]() |
|
|||||||||||||||
|
||||||||||||||||
|
| Progress indication | ||||
| Concepts, design, and implementation
This article covers aspects of progress indication related to: understanding the design problem, design considerations and guidelines, and implementation issues and tips. Guidance is provided based on usability testing. This information will enable UI designers and developers to design more effectively and evaluate progress indication design more critically. Background
As this article shows, progress indication is much more than animations of documents flying between folders. One reason this aspect of UI design is neglected is that progress indication is rarely written about or emphasized in UI training. One of the few places to read about this topic is the excellent chapter (Chapter 7: UI Responsiveness) in Jeff Johnson's recent book GUI Bloopers. This article complements the GUI Bloopers chapter. It covers new ground and presents another perspective. This article covers the following main topics:
This article will enable UI designers and developers to design more effectively and evaluate progress indication design more critically. Understanding the problem: 1. Concepts related to progress indication Introduction This section aims to provide a solid understanding of the domain of progress indication by describing:
Concepts of performance and responsiveness
The GUI Bloopers chapter discusses these concepts extensively. Some key points related to this article are:
In summary, progress indication is needed because: (1) there are inevitable limitations in UI performance, that is, there are always cases where the user will have to wait for a final result, and (2) increased UI responsiveness, or improved communication with the user, can make the wait more acceptable to the user. Types of indication: busy, working, progress, and status
Psychological latency thresholds (or defining "instantly") The GUI Bloopers chapter highlights that there are certain time thresholds that should be observed to avoid disrupting psychological phenomena. Two thresholds are listed here and explained below:
The "perception of cause-and-effect threshold" implies that the UI should respond or visually acknowledge user input within 0.1 seconds. This applies to aspects such as: a pushbutton appearing depressed after it is clicked, the mouse pointer moving after the mouse is moved, letters appearing after they are typed, and a pop-up menu or window starting to appear after it is invoked. Failure to achieve this performance limit results in problems such as decreased eye-hand coordination, slowed input, and a decrease in the perception that the input (e.g., moving the mouse) causes the effect (e.g., the movement of the pointer on the screen). It also results in perceptions of the entire product being sluggish. Developers can observe this phenomenon for themselves by invoking pop-up menus in different applications. There are noticeable differences in latency; even with latencies well under one second, menu display can appear sluggish. The implications of this threshold for responding to user input are: (1) in specifications, the commonly-found vague wording "... should respond instantly" should be replaced with "...should respond within 0.1 seconds to avoid degradation in user performance or satisfaction," and (2) there is no adequate progress or busy indication; performance should be good enough that there would be no latency in which to display indication. If this performance cannot be achieved, then any progress indication display is only a band-aid; it will tell the user that the system is not hung but it will not ameliorate user performance or satisfaction problems cased by the poor performance. The "conversation response" threshold implies that the UI should provide preliminary results to a user request within one second. This tells the user their request has been received. This is based on research showing that in conversation, people (subconsciously) expect their conversation partner to react within one second. After that, they get anxious that their communication was not received. For example., the communication partner did not hear them or maybe the application is hung and needs to be rebooted. Anyone who has conducted a job interview knows the discomfort experienced after they ask a question and the seconds tick away before they get a response. The implications of this threshold are: (1) in specifications, the commonly-found vague wording "... should respond instantly" should be replaced with "... should respond within 1 second in cases such as displaying a window." Otherwise, users may believe the system failed to accept their input and they may repeat their input. Besides the immediate user problem, repeated input can result in further performance degradation or system malfunction. (2) The user needs acknowledgement with a busy indication. Not until there is a longer delay (more than one second) do they need more detailed progress indication. Psychology of waiting
The implications of this research are: (1) designing progress indication is not an entirely new field of knowledge; as designers, we can leverage our experience in many areas of daily life, and (2) many parameters of progress indication design affect the user's waiting experience; it is a topic worthy of some attention in designer training and project work. Understanding the problem: 2. User interaction contexts The Loading Tools context refers to waiting for a computer to display requested tools so work can be performed. Examples include launching an application, launching a dialog through a pushbutton, displaying a menu, expanding a tree, and loading the home page of a website. These examples differ widely in scale and other aspects but they all have in common that the user is preparing the computer to do some work. That work could be reading content, manipulating content, inputting data, or having the system perform some work, for example, running a script. The Work Actions context refers to waiting for the system to display the result of the user action. Examples of work actions include presenting search results, presenting a requested Web page, or presenting the result of an application command invoked by the user, such as a command to create a new database. The justification for distinguishing between Loading Tools and Work Actions is that users have different expectations of an acceptable wait period and the progress indication design that meets their needs. For Loading Tools, users expect their wait will be proportional to the perceived size of the tool being displayed, i.e., they expect a secondary window to load faster than the entire application. In any case, users are generally intolerant of having to wait for tools to load. Suitable progress indication, if required, is a busy indicator, e.g., hourglass. In contrast, for Work Actions, users are more tolerant of long wait times, which could be hours in some domains. For this type of system action, users are generally more interested in obtaining indication that goes beyond a busy indication. There is a third user interaction context: User Input. This refers to interaction at the scale of mouse clicks. This wait period is the one between the input and the system acknowledging visually that it has been received. In this case, the acceptable latency is less than 0.1 second, so progress indication is not applicable. These concepts are summarized in the table below. Table 1. Illustration of the three user interaction contexts
The differences between each user interaction context are summarized in the table below. Table 2. Comparison of the three user interaction contexts
Externals design: 1. Overview and examples Having described progress indication concepts, this article turns to externals design of progress indication. As shown in the figures below, there are many types of progress indication display. The following sections address these categories of progress indication design:
For each section, the design considerations and options are itemized, and then some guidelines are provided. Externals design: 2. Quantitative information for progress indication displays The following points list the considerations and options related to quantitative progress information:
Designers should also consider:
Guidelines Guideline: Displaying the work remaining is better than displaying work completed. Examples:
Discussion: This guideline is based on the understanding that users are most interested in when the operation will complete. By analogy, how often have you heard restless kids on a long car trip ask , "Mom, how long have we been in the car?" Of course, the common question is, "When will we get there?" Guideline: Displaying total progress is better than displaying progress on the current step. Examples:
Discussion: Again, this follows from the understanding that users want to know when the operation will complete. Again by analogy, kids anticipating the final destination don't want to hear "It's just five minutes until the next overpass." Guideline: For "percent complete" information, start at 1%, not 0%. Discussion: An important secondary function of progress indication is to reassure the user that things are progressing normally and that there is no malfunction that requires user intervention. In user tests of product usability, we have observed that users become anxious when the display remains stuck at 0% for a few seconds. Guideline: For "percent complete" information, display 100% for less than about 2 seconds. Discussion: This is another way to avoid alarming users. Guideline: Show smooth, linear progress rather than erratic bursts of progress. Discussion: This is another way to avoid alarming users and is also a way to help users estimate completion time. Of course, the smoothness of progress is related to the underlying work being done. One workaround to smooth out progress is to display progress at larger granularity. For example, instead of displaying progress every 1%, update it in 10% increments. When following this approach, there should be a separate animated graphic that indicates that work is being performed, e.g, a graphic of turning gears. Guideline: For estimates of remaining work, use human-scale precision; don't be over-precise. Examples:
Discussion: Most progress indication today can be characterized as overly precise but extremely inaccurate. This guideline addresses one of the those problems. Again, good design can be intuited by analogy to our everyday experience. Which of the following seems more appropriate?: "I'll be home in about 4 hours" or "I'll be home in 3 hours and 54 minutes." There are many phrases that provide useful information to users: less than 1 minute, about 1 minute, between 1 minute and 5 minutes. This last example has the benefit of conveying the degree of accuracy in the estimate. Externals design: 3. Displaying multi-step progress information Considerations
Guidelines Examples:
Discussion: Showing steps is appropriate only when users have an understanding and interest in the interim steps. This helps them monitor that the operation is proceeding normally and allows users to estimate remaining work in the absence of good estimates from the tool. Generally, users don't know or care about the details related to tool loading operations while the opposite is the case for work actions. (The distinction between tool loading and work actions is explained in the section titled "User interaction contexts".) Guideline: Define summary steps that are meaningful to a novice user. Examples:
Discussion: Part of the justification is the next guideline which caters to more advanced users. Guideline: Define detailed steps when required. Examples: See the screen shots shown earlier. Discussion: This is typically implemented as a Show Details button which toggles the display between summary and advanced steps. This provides more raw data on the steps being completed, for example, listing each file that is copied. In the event of failure, the user can see what steps have completed and at which one the process failed. For reasons not entirely clear, users in usability tests routinely make positive comments when such a feature is available; however, we have yet to see anyone actually use it other than to try it out. Externals design: 4. Design of user actions Considerations
Guidelines Discussion: To illustrate the distinction, consider the context of copying a set of files. Clicking a Cancel button should rollback or undo any file copying done to that point and restore the system to the state before the file copy operation started. Pressing the Stop button should stop the operation as soon as feasible; any work done to that point remains. Because of the lack of attention to this guideline in current products, you never know what will happen when pressing a Cancel button. Guideline: Cancel means canceling the operation, not just dismissing the dialog. Discussion: To illustrate the distinction, consider a dialog displaying the progress of loading data into a database. Pressing cancel should rollback the operation, not just close the dialog and leave the operation to proceed. One case to consider is when the functionality does not exist to cancel the operation; in that case, perhaps a button labeled Close would better convey this fact. Another case is where the user may wish to close the dialog but not disturb the operation. In this case, again, Close would better convey this fact. Finally, in the case where users have the option to: (1) cancel the operation and/or (2) close the window, suitable button labels are: Cancel Operation and Close. Externals design: 5. Interaction style Embedding progress indicators refers to displaying progress indication on the existing display surface, for example, putting a progress indicator on a splash screen or within a wizard panel or a dialog. Progressive display refers to displaying the portion of the window that is ready to display and leaving blank or with progress information the areas that are not ready. Examples are in a figure shown earlier where the "Recommended Meeting Time" area shows the word Working and a column with no information. When the information is available those parts of the display are refreshed. With this approach, the user can work with parts of the display and the progress indication is not intrusive. Another example is when Windows Explorer displays the word "searching..." in the search results area. Implementation Progressive loading Another instance of this principle is to load visible elements first. For example, to display a large tree in a view, figure out which part of the tree is visible, then load and display that portion of the tree first (Figure 5). Only when users explicitly expand part of the visible tree is the additional data (Figure 6) loaded. Additionally, you can further improve the responsiveness by spawning a separate thread to load the rest of the tree data in the background. Another example is related to loading Java-based applications. It takes a while to load the Java Virtual Machine (JVM) before the application can be loaded and executed. While the JVM is being loaded, no progress indication is given by default. One technique to eliminate this problem is to produce a small platform native executable program that first puts up a splash screen and then loads the JVM in the background. Such a program uses minimal overhead, but can dramatically improve the user perception of its responsiveness. Progress estimation and linearization Something related to the ease of estimation is how linear progress is. Highly linear progress is a goal in its own right for user satisfaction and it also makes progress easier to estimate. A related decision is the size of the update increment (for example, every 1% versus every 10%). A larger increment can reduce the appearance of non-linear progress. A good example of making progress appear linear is during the product installation process. Improper progress indication can often lead the user to perceieve that the install program is slow. By making sure the progress indicator is updated in a timely and linear fashion, incorrect user perception can be reduced or eliminated. This involves minimal overhead to implement, but the feasibility of such an implementation technique usually affects the product packaging architecture. Therefore, it's a good idea to explore and walk through the installation scenario early so that there is time to decide and react to different packaging requirements. MVC and large-scale architectural approaches Finally, entire product-wide architectural decisions can have a progress indication implication. An example in the area of compiler design is the incremental versus batch compilation of programming code. The incremental compilation architecture leads to much better response to user initiated compilation command.
| ||||||||||||||||||||||||||||||||||||||
| About IBM | Privacy | Terms of use | Contact |