Wednesday, March 23, 2005

Designing Windows Applications

In coming lines I willtry to figure out the guidelines of an intuitive User Interface. Have you tried to figure out the mind set of your user? Here are three major points why user may treat your software as hard to use:

1. User is not really concern about applications conceptual model: You might have followed a nice concept through out your application, but does it help your end user to accomplish her task. Its not like that your users are dumb. The fact is that they are inundated with daily routine and information. They dont have time and energy to understand the conceptual model behind your great software.
2. Most users dont master common procedures:While developing a new feature in your software you thought, after a while user will get used to that feature. But according to one study, users do not really notice the procedure when they are accomplishing one task. They may stumble while doing the same task in some future point.
3. Users face the problem to find the purpose of screen: You developed software for a user who has mastered the common procedure and conceptual model, but for majority of users each screen would be unwanted puzzle.

The best solution to deal with these problems is to develop a UI that is easy to learn and self explanatory. Users must be able to find out the feature every time they need it and they must be able to use that feature every time they want to.

Deductive User Interface
Now a days most software forces their users to infer the purpose of software. For example look at the screen below:

UnUsable

Experienced computer user like you and me will come out saying;oh this is a simple screen to add some items to list box provided there. And other buttons are there to further give some sort of functionality to this screen. But did you notice one thing in this screen.It is nowhere written the purpose and behavior of this dialog box.

Now just slide yourself into end users shoes. You will find one obvious question, What should I do with this dialog box? One another big point is when this dialog box pops up to user, she has to stop her current work and find out what this screen will do for her.

A normal end user may try to type in directly to list box as it appears like a normal edit box. End users will be detracted from their usual task when they have to figure out the behavior of screen. You might wonder why a user cant figure such a simple task. But according to studies most users are even confused about the capabilities of their software. They have difficulty understanding what the product can do for them, whereto go to perform an operation, and how to perform that operation once they have found it.
A Solution to this
The most basic solution to come out of this issue is Inductive User Interface (IUI). IUI's goal is to reduce the amount of extraneous thinking users must do to successfully move between parts of a product and use its features. The word inductive comes from the verb induce, which means to lead or move by influence or persuasion.

You can define IUI as an extension web-style interface, where each pagehas to be simple and task based because each piece of information has to be sent back to server and it should be correlated to primary task of that page. A well designed inductive interface help users to find answer to following two questions:
· What am I supposed to do now?
· Where do I go next to accomplish rest of the task?

A screen with a single, clearly stated, explicit purpose is easier to understand than a page without such a purpose. This fundamental premise can be expanded into a series of four steps for designing software that uses inductive interface:
1. Focus each screen on a single task.
2. State the task.
3. Make the screen's contents suit the task.
4. Offer links to secondary tasks.

Going forward we will try to change our dialog box to suit above four point. How? We will see...
Step One: Focus each screen on a single task. Each of your screens should be based on one primary task.Now how will you come to know about the primary purpose? You may express bunch of tasks as one task, if that are abstract enough to group in to one. So here is the rule of thumb; a screen is focused on one purpose if the designer can express that purpose with a concise, meaningful, and natural-sounding screen title. In our example we can define the primary task as to Change Item Details.

Step Two: State the Task. Each of your screens should have concise and explicit statement of its primary task. As we have given, Change Item Details.
Now just have a look on modified screen:

Usable

Step Three: Make the screens content suit the task. Did you interpret screen content as the text that you will put on the screen? No. Its all about the controls those are going to have on your screens. Controls on screen make the content of your screen. User should be able to easily figure out how to achieve their task. For example if you see, now our dialog box is having Remove and Details...button enabled. This facilitates user to click on these buttons rather then puzzling, when the become enable. By doing this you will have much more impressive effect on user when user clicks one of these buttonswithout selecting any item in listbox and alert her that she first has to choose one item from list. Another thing is to provide a clear exit to user, when she is done with her job. Dont try to retain her on screen saying, You HAVE to add at least one item. If she wants to go out of screen, let her do that. Being an intelligent software developer, take care of such scenarios in your code.

Step Four: Offer links to secondary tasks. Do you see our Details... button? In our modified dialog box it is enabled and provides the link to one secondary task. Clicking this user can go to next screen. Then it depends upon you, how much functionality you are giving her in next screen. However be sure give clear exit from next screen too and that screen also should follow usability guidelines as much possible.
We are through with basic guidelines to design Windows Application. Beside this you should also keep consistency through out your screens as far as controls font, size, placement and their grouping goes. Use color contrast to enhance users experience not to damage his confidence in your software. For Example Green text on Red background may look great to you, but just think about a user who is color blind to Green color. Hope all this discussion benefits you to develop your next great application.

No comments: