Users have feelings too!

This is a very quick post about usability & informing your users.

As you’ve seen on my home page I do indeed have a quick testing tips section which due to my normally excessively long posts, has been neglected of late.  Thankfully I had some time tonight to write about a brief chat I’d had in work today, which can join that small pile of quick testing tips :-)

The question

So today one of my testing colleagues approached me to ask what our minimum allowed browser response times were.  1.5 seconds I replied.  He went on to tell me about the scenario he’d been testing which had exceeded this time limit.

Essentially the scenario was taking our live environment & exporting it to a format which could later be re-imported.  In other words allowing our database to be extracted & imported into another environment or database type.  Obviously the 1.5 second limit was a little short for such an intensive scenario & in the past with similar intensive administrative tasks we’ve agreed upon a much larger time limit, which is fair; one rule doesn’t fit all of course.

So I’d explained as it was a pretty large task it would be acceptable for it to exceed this 1.5 second time limit.  He’d agreed & said he’d thought the same but just wanted to be sure.  I suggested that he should run it past the stakeholder to determine what its new upper limit should be.

Informing your users

Simple question, easy answer right?  I then went on to ask him about how the user was informed about the task being labour intensive.  It’s good manners after all for a program to let you know if it’s going to take some time.  In fact, as Jakob Nielsen famously suggests a user’s attention will switch to other tasks at hand after only ten seconds.

So he went on to tell me that his team had placed a dynamic component which indicated graphically to the user how many percent complete the task was.  Cool!  It informs us, so everything is just fine and dandy right?  Well not quite!

Blocking a users work flow

This program places a glass pane over the task at hand, which essentially indicates to the user that the program is busy & while it’s busy they are not allowed to do anything else.

I can’t recall what the exact waiting time for this task was, but it was into the several minutes & not seconds.  So tomorrow I’ll sit down and chat with him & see if there is a better way to do this that will allow user to continue with their tasks whilst this task works away in the background.

How can you improve a users experience?

Tips for labour intensive tasks:

  • Always consider your users emotions when using your application.
    • How would they feel in this situation?
    • How would they react to delays to their working process?
    • How often would they use this?
      • Does the fact that they use it more often change anything?
      • Would something upset them over time?
      • If it’s seldom used, would things be less of a problem?
  • If they are going to be left waiting for some time.
    • Allow them to continue to interact with the application, whilst the task works away in the background
      • Would you be happy being interrupted by a program?
      • Would you like to have to wait for it to complete before you could do anything else?
    • Inform them prior to the task that it may take some time (proactive information, not reactive)
      • Try to avoid information via a popup dialogs.
        • Will the dialogue interrupt their work flow?
        • How many times per day with they use it?
        • Is there a better way to present this information?
    • If possible inform on the tasks progress.
  • Informing the user when the task has completed will improve the users experience.
    • Is this method of informing usable?
    • Is it invasive to their workflow?
    • Does it improve the experience?

Not just GUI’s

Of course this isn’t just limited to GUI’s!  I remember a few years back I was asked to run a script.  I can’t recall what the script was or even what it did, however I can remember what its output looked like when I executed it!

I kicked it off and waited for around a minute for something to happen & nothing did.  I switched my window to some other tasks I had to complete & after about five minutes I returned.  There it was still doing something; I just didn’t have a clue what.  So I went to talk to my colleague who’d asked me to run this script & then he told me “Yeah its rubbish isn’t it!  I was wondering what it was doing the first time I’d run it as well.  Just leave it running & it’ll be finished in about an hour.”  Oh! Now he tells me how long it takes!

So the point I’m getting at is even scripts should consider their users.  If it’s labour intensive & will take some time, then inform the user about that prior to executing those labour intensive actions.  Better still!  If you can run it in the background then do that, so that they can continue to use their interface uninterrupted.  I can’t recall how many a times I’ve run a script & had to open up a new interface because it’s taken over my console doing its tasks.

So please do consider your users feelings when you leave them waiting around.  You could do it better, couldn’t you?

No related posts.