I recently got this dialog box telling me I had just 3 seconds left in my installation. In fact I had way more then 3 seconds because the software had an error right at the end. As the progress dialog displayed it jumped around in it's estimation starting at 10 seconds, then jumping to 7 seconds and then back to 10. It then stalled out at 3 seconds for about 5 minutes.
How to estimate properly:
First off if you're not going to do it right please don't try to estimate time. If done incorrectly it's more annoying then simply giving a percentage indication. So if you're not sure you can provide an accurate time estimate use a % done indication instead.
1 - Time left should always be of the entire process. Often times a progress bar shows progress of a particular component of the process for example copying files. Users care about the entire process not just your portion.
2 - Time left should be linear and proportional. If you're going to show time based progress your time indication should progress smoothly from start to finish. You shouldn't start slowly and then speed up or vice-versa. If the estimate says three hours and I walk away for two hours when I return it should say approximately 1 hour.
3 - The estimate should take into account past experiences. The estimate should be based on actual progress data as well as assumptions on future data based on historical trends. The estimate should not re-calibrate it's assumption data more then once every 10 seconds.
4 - Time/Progress should never flow backwards. This may seem obvious but I've seen several Office progress indicators that can roll backwards when undoing an operation. Time marches forward never backward.
guidelines for progress
- Things under 1/10th of a second do not need any progress indication. Moving the mouse, resizing a window, etc.
- Things under 1 second should have some visual indication to show that the action was received. For example a button should go down, a hover effect should be shown.
- Between 1 and 5 seconds users will need some indication that the computer received their action and is still processing. Show an Arrow+Hour glass. This shows that the user can still move the mouse and the progress will complete quickly.
- Things under 10 seconds should show an hourglass this shows a slightly longer wait.
- If the action will take longer then 10 seconds a progress indication should be shown.
- If the action will likely take longer then 5 minutes a time based estimate should be shown so the user can go get a cup of coffee.
- If it's difficult to tell how long the action will take an animation should be shown that the system is still processing. Similar to the animation in a web browser.
- If a program is loading and it may take over 10 seconds consider using a splash screen to show that the application is being launched.