Reset password:

Strategic insights
Synchronous vs. Asynchronous Interaction - Visualized

Written by on July 9, 2006

I have been speaking out against the use of synchronous interaction principles on this site, and other places. It is has mostly been trough to use of words, but I really wanted to illustrate it instead.

The difference between asynchronous and synchronous interaction is that when it is synchronous you have to do each step at the time. You cannot do two things - or what is called multitasking.

Take uploading a file. To do this, you have to:

  1. Select the files you want to upload
  2. Click the upload button
  3. Wait for the files to be uploaded
  4. Work with them

You cannot chose to upload another set of files while the first ones are being uploaded, nor can you start to work with them (like adding tags) before the upload process has completed. The interaction is synchronous.
With asynchronous interaction you can do other things while the system uploads the file.

Or take a kitchen, which is asynchronous by design. While you are e.g. baking bread, cooking spaghetti and frying some meat - you are also making the salad. The result of this multitasking behavior is that you can prepare a nice dinner in about 30 minutes. If you had to do the same in a synchronous fashion it would take hours, and most of the food would have gotten cold before everything was finished.

Humans are asynchronous by nature

Working in a synchronous fashion is not something we as humans are accustomed to. But, when we are using a computer, and especially the web, almost everything happens this way.

Desktop applications has been able to do multitasking for many years (remember the days when the OS couldn't multitask. Everything took ages). But, it was not really until the "discovery" of AJAX that we have had the ability to multitask on websites/web applications.

The problem is just that most applications do not take advantage of multitasking. 98% of all applications (even most AJAX applications) works as if it was never invented - they have synchronous interaction. The result is that computers feel unnatural to work with and it really hurts our productivity too.

But, let me show you how a asynchronous interaction can improve a web application.

Flickr X

Here is a concept for Flickr - using asynchronous interaction.

See a high-res version here.

The special thing about this application is that I do not have to wait for anything to complete. I can keep working, and in this example I am doing 3 things simultaneously.

1: Uploading files

Instead of having to wait for all the files to finish uploading, each file is uploaded and updated independently. Here I am uploading 6 files, and as each of them finishes (or even while they are being uploaded) I can work with them - like adding tags, rotating, adding notes etc. If I like, I can choose to upload more - the new files will simply be added to the queue. I can even cancel uploading a specific file without having to stop the entire upload process.

2: Rotating

While uploading I noticed that three of my images needed to be rotated. In this example I have already chosen to rotate two of them, and I am currently rotating the image on my screen. Again, I do not have to wait for the image to finish rotating (which can take some time with high-res images). I can move on to rotate other images or do other things.

3: Adding tags

While my images are being uploaded and others are rotated I have started to add tags to the image I see on the screen. Again, this is possible because of the asynchronous nature of this. I could also add notes.

I can even work with on images that has not been uploaded yet (although with questionable usefulness).

Use it!

This is just a simple example, but asynchronous interaction can make most applications better. The are many advantages. The primary one is a productivity boost. Multitasking applications are much faster to operate. It also helps support people workflows, as you are not limiting them to a linier path through your application.

The way to make asynchronous interaction is to separate system operations from the people. Every time the system does something, allow people to carry on with their work - to do other things. Every time you feel the need to add a progress indicator, allow people to continue working instead.

Share on

Thomas Baekdal

Thomas Baekdal

Founder of Baekdal, author, writer, strategic consultant, and new media advocate.


Baekdal PLUS: Premium content that helps you make the right decisions, take the right actions, and focus on what really matters.

There is always more...