I frequently pop down to the canteen to buy a sandwich. The early conversations with the person serving went a little like this:

==

Me
I’d like a sandwich please
Server
What would you like on it?
Me
Erm, Cheese and coleslaw please
Server
On what kind of bread?
Me
White sliced please

==

Well, you get the idea. I went down today and the conversation was much more brief:

==

Me
I’d like a cheese and coleslaw on white sliced, with spread to takeaway please
Server
OK

==

So, what happened here? Initial conversations exposed to me the various options available to me, as a customer. In subsequent visits I refined my original request to ask for exactly what I wanted, thereby saving time.

Good GUIs should attempt to do something similar. By all means offer to lead the user around by the nose usingn wizards and the like, but realise that if they are going to be coming back to your application time and again they are going to get _very_ frustrated if they can’t do what they want quicker when they know exactly what information they need to provide. Give short-cuts for commands; give the option of opting out of wizard processes in favour of a single more complex dialog; provide rich-context sensitive right-click menus. In short, assume your user starts ignorant of how your GUI works, but that he is going to learn – reward him by making this new knowledge speed up their use of your application and you’ll be rewarded with happy users.

Advertisements