<img class=”alignright” title=”clock” src=”/images/0901/clock.jpg” alt="” width=”250” height=”247” />Nobody likes slow software because they have to wait. Waiting means you’re spending your time doing nothing because of something else that’s out of your control. But waiting is an integral part of our interaction with computers and the software they run. Things don’t happen instantly. You need to wait for applications to load, wait for websites to download, wait for software to compile and so on.
Because waiting isn’t a positive aspect of your product, you would do well to minimize it. There are two ways of doing this.
The first is the most straightforward: optimize your code. There are a few things you can do here, like re-factoring and caching, that will help your apps run faster. Optimizing your code to run faster is an honest and fairly obvious way to go about decreasing wait times for your users.
What about the second way? Well… you can always cheat. Instead of addressing the root cause of the problem – slow code – you can address the symptom – the negative feeling of waiting.
The biggest problem a wait time presents us with is uncertainty – uncertainty about when the wait will end (and indeed, in some cases uncertainty about whether anything is happening at all). In software, this uncertainty has been solved with the introduction of progress bars and loading indicators.
Progress bars show you how much of the process has been completed, and how much there is left to go. You can also gauge how fast the bar is filling up, so can roughly estimate how long it’s going to take for the whole thing to finish. Sometimes the remaining time is calculated for you.
Research shows that with the absence of a progress bar, the perception of how long a process takes to complete is lengthened. This means that without progress bars or some other indicators your application will feel slower to your users.
<img class=”alignnone” title=”progress bar” src=”/images/0901/progress_bar.png” alt="” width=”451” height=”294” />
The progress bar in Firefox file download manager.
Sometimes a process may only take a few seconds. In these cases it’s not worth showing a full progress bar, however it may be worth adding some form of a “loading” indicator. This will just tell your users that something is happening – that the service is working on their request and it will be completed shortly. Without this indicator, the user doesn’t know whether anything is happening at all – perhaps the application has crashed or the web server isn’t processing their request.
<img class=”alignnone” title=”loading wheel” src=”/images/0901/firefox_loading.png” alt="” width=”150” height=”100” />
Firefox shows a spinning loading wheel during page loading time.
When speeding-up a process is not an option, giving extra care to a customer makes the experience of waiting more tolerable.
John Maeda, The Laws of Simplicity
Next time you’re working on streamlining your app, look at all the options available to you. Improving your code is a good idea, but sometimes it can take a lot more effort and time than you have available. Softening the negative symptoms of waiting is a viable alternative. Use indicators like progress bars and loading wheels to tell your users that the software is working and inform them how long they have to wait. This isn’t just simple courtesy, watching the progress bar move makes time fly faster.