« Creating a Pleasant User Experience - Part I: Expected Behavior | Main | Creating a Pleasant User Experience - Part III: Language »

Creating a Pleasant User Experience - Part II: User Feedback

Another important aspect of a good user experience is user feedback. This can mean anything from using a wait cursor, to using a status dialog, to using progress bars, or just showing a confirmation dialog.

User feedback is important because it helps deal with doubt. First time users to an application by default don’t trust it. If they click a button and nothing seems to happen for a couple of seconds, they automatically think that the program froze. This becomes more important when your app is making web service calls whose length of execution totally depends on the person internet connection and most likely on the amount of traffic being handled on the server at the time.

One of the first things that I implemented at NewsGator was folder synchronization in NewsGator Inbox. When a user would drag a folder from one parent to another, Inbox would catch this and send that change to NewsGator Online. In the first few betas though, it didn’t tell the user it was doing this and seemed to just hang Outlook until the call returned. After a few “NewsGator Hangs Outlook” issues were reported, I put in a quick status dialog that lets the user know that NewsGator Online is being updated.

The same type of feedback is important in AJAX enabled web applications. Letting the user know that their action was completed on the server is key to a pleasant user experience. An example of this in NGES is when you’re subscribing to feeds. You click the subscribe link, it changes to “Subscribing…” which is no longer a link, then finally to “Subscribed” with an additional notification balloon alerting you that the action completed.

Pre-emptive Feedback
Pre-emptive feedback is also a good thing. By this I mean disabling features or options (or sometimes making things no longer visible) depending on a users current configuration. An example of this in Inbox is the “Override Retrieval Interval” option. If this isn’t checked, the user cannot put a value into the “minutes” box. This gives the user visual confirmation that this option is not enabled, and also removes the confusion of what changing that value means when the option is not turned on. I call this pre-emptive because it saves on the error checking you need to do when the user clicks the OK button.

Striking a Balance
User feedback is good, but too much user feedback, or poorly placed user feedback can be really bad. Changing to the wait cursor on actions that routinely take less than half a second is bad. Displaying a confirmation message on a label that is not always visible is bad.

The worst example of this actually caused me to move on from a program I was trying out before I even tried any of its features. I installed and started the app, then started moving my mouse around over it. Every time I moused over a button, it played a very annoying sound. Why it had to tell me in such an obtrusive fashion that I had moused over a button, I don’t know. But once I saw that I moved quickly back to my Add / Remove Programs window.

Remember – your users tell your app stuff all the time, it’s important to tell them that you understand… but know when to whisper, know when to shout and most important, know when to shut up!

Posted by Nick Harris on January 29, 2007 at 09:56 AM | Permalink

Comments

Here's some user feedback for ya :)

You're font is too small.

Posted by: Jason Grunstra | Feb 12, 2007 5:06:15 PM

Ummm, not sure if my previous comment posted twice or not, so here's some more feedback, I hope you get it.

Give the user visual indications that an action they performed was accepted. The comments system here does not.

Posted by: Jason Grunstra | Feb 12, 2007 5:08:51 PM

TypePad... I actually moderate comments since I was getting a lot of spam. I'll have to see if there is a setting for that.

Posted by: Nick Harris | Feb 12, 2007 6:16:32 PM

The comments to this entry are closed.