views:

310

answers:

11

What are the best ways to keep the user busy/amused when he's waiting for a long running task to complete?

Thoughts:

  • Show random tips or help messages
  • Progressbar (but if it's a long running task this isn't very handy because it doesn't change very frequently)

Or does anyone have some examples of how other people solve this problem in their web application?

+12  A: 

Don't you think he'd rather minimize your window and do some other work? Or go and get a coffee? Or chat with his buddies?

Why don't you just let him know it'll take some time and let him decide?

It seems all you'll be doing is making more work for yourself and the user's precious CPU :-).

paxdiablo
If user action is required after process completion just send an email.
aivarsak
+4  A: 

I'd concentrate on calculating how long the task is going to take as accurately as possible, then let the user know, so they can decide what to do while it's running.

gkrogers
+1  A: 

The most important thing is to give to the user a precise estimation of the time the process will take.

As you told, giving tips is a classic but always usefull information.

However, depending on the type of application you are developing, you can provide little games (such as sudoku or the hangman...)!

Another idea is to display some news (you can use a RSS plugin linked to web sites related to your business for example).

romaintaz
+1  A: 

Related to your question, you might want to take a look at:

http://stackoverflow.com/questions/182112/funny-loading-statements-to-keep-users-amused

Aron Rotteveel
A: 

Show nice faces of ugly people who enjoy using the product and besides them a text that explains why this version is better than any version before it.

shoosh
A: 

Do it in the background, if possible. Tell him when you estimate the job to be done, then notify them via some sensible method. I would only do progressbars and/or something "amusing" if it doesn't make sense for the user to do something else (with your application) while the job is running.

Dave Vogt
A: 

Elevator music?

Crashworks
+1  A: 

Precise estimation is hard with Web applications, as there are many potential delaying factors. On rough guesses, if an average user has to wait for ..

  • .. a few fractions of a second, do nothing and blame others (the user's system, IE, Windows, ISP, etc.) when it occasionally takes longer than that
  • .. a few seconds, load a small but nice-looking GIF with a few frames (whether it's funny, professional, dead-serious, or annoying is up to you)
  • .. more than a few seconds but less than a minute, display a form with explanation, ideally with progress bar if you can manage
  • .. a delay that has to be count in minutes, then the application is not suitable for the masses nowadays, accustomed to the typical speed of Web 2.0. Including some nice games (like this) might help trying to win back their patience, but it's not guaranteed
Heartless Angel
+3  A: 
  1. Inform the user: Give an estimate of the duration Show progress (perhaps if your user is a techie show him/her what is actually being done)

  2. Notify the user: Make sure the user knows that they will be notified once the task is complete or if it requires their attention (for errors, et.). This will allow them comfortably do other things whilst knowing that the process is progressing.

  3. Background processing: Where possible try to make the process non-intrusive. That is, try to have it run in the background whilst the user continues with his/her use of your site, and once it completes it just notifies them (through an AJAX pop-up or notification of some sort). This is best done if the process is account related not session related. This way, if the user puts in the request to start the process and the connection is lost (browser closed, etc.) the process completes and is ready when the user returns. If the process is session related, this will be tough since it will be terminated with the session.

  4. Useful messages: If you just have to keep the user waiting, try using the time to display useful messages (either tips, or advertisements, etc.)

Ahmed
+1  A: 

if it's a web app, why not just give them an estimated completion time and email them when done?

Colin Pickard
+1  A: 

For long tasks, if possible, don't even require them to keep the window open an minimized. Instead, put the action they requested in a queue and inform them that it will take some time to complete. You may even offer the option to email when done as @Colin Pickard says.

This approach is followed by Flickr when you do massive retags of your photos and it's quite convenient. (Although I must say that the last retagging I did never worked :)

Daniel Daranas
I agree. Take report generation - something that can consume massive quantities of time and processor if you let it. Queue it up, and offer to deposit it in their account or mailbox when done. Safari Books online does this when converting chapters to PDF for download.
Chris Kaminski