
These days I am diving into user interface and interaction design. I wondered what guidelines I should use for developing the UI’s. Some nice guidelines below.
Anticipate
Try to understand in your UI what the user is trying to. If he or she isn’t getting the expected result try to help him in getting him towards the target he was aiming for to accomplish with the application. For example when someone tries to search and has added a lot of criteria and hits a zero result page try to give a consideration of a set of search criteria which will deliver a result. This will help him out instead of letting him reduce the search criteria till he or she eventually finds something.
Icon usage
When using icons, use them for adding more clarity to a certain message. When combining this with color a user is able to understand a certain button/message/action without reading the text itself. This will benefit the user in understanding the UI and make him capable of using it faster.
Reduce the risk of exploring
When using an interface it’s better to ensure that every action which has a destructive effect to some part of the system state is hard for the user to do. A perfect example of this is the way you have to turn of an iphone. You have to hold the power button and then slide a slider all the way to the right on the phone. This will ensure the action isn’t done accidently. In a web interface try not to put a delete action right next to a button to edit.
The match between the real world and the system
Always try to speak the users language in the users interface. Consider the UI as the place belonging to the user. It’s not a place which has to stay inline with the names used inside the system. Things like sorting a column has to be based on what the user is expected to happen. Search criteria based on the available columns in the system instead of investigating what the real users search need is and offering faster options for these seems like another trap.
Status information
Try to improve the system by adding a list of possible states for entities in the system. If you add the status inside screens make sure they are easy recognizable between all the other information of the entities. Using icons and other visual methaphors seems to have a positive effect. Using only colours is not enough due to the exclusion of the colorblind.
Try to prevent errors instead of creating paths out of it
Reducing the possibilities for a user to get into a situation which requires a path out of it.
Inconsistency
Be inconsistent when behaviour is inconsistent, otherwise make it consistent.
User performance over system performance
A UI tries to create a high performance interface for the user, not the system. Try to keep this as a thought during the design. Also think about what the user can do with the system when the system is occupied with a certain task. Is there something the user already capable of doing instead of glaring at the screen waiting for a result.
Short help messages
If the UI needs any messages to help the user try to keep them as short as possible. Also consider if these are only helpfull for first time users or should stay for returning users.
You can read about them and more at the following links:
http://www.asktog.com/basics/firstPrinciples.html
http://www.useit.com/papers/heuristic/heuristic_list.html
http://designingwebinterfaces.com/6-tips-for-a-great-flex-ux-part-5
http://www.zenhaiku.com/archives/usability_applied_to_life.html
http://www.nngroup.com/reports/