User Interface Goal
Strange as this sounds, our goal is to create a user interface that no one notices. We want our application to be so intuitive that tutorials, documentation and training are unnecessary. This should be true even for people who are using our application for the first time. When we reach this point we have truly succeeded.
As developers we have a specific focus when we create software. We think about features, performance, security and testing but rarely do we have the time to think about usability. Even when we do consider user interfaces, we have a skewed view. Admit it, anyone who feels a sense of control when faced with a command line cannot call themselves an 'average' user. With this in mind, I've condensed some information on usability to help us create better UIs.
What developers can do
- Be consistent.
- Use the same language to mean the same things.
- Ensure similar functionality is located in the same place and is in the same mode. For example it's better to have all the 'save' actions bound to the same type of widget in a similar position on the user interface than having some as buttons and others as links or having them appear in different places at different times.
- Ensure your user interface fits into the bigger picture of the application. It should look like one person created the user interface. Things that can affect this include: colours, spacing, placement of widgets, placement of messages and font face.
- Be clear.
- Provide information in plain every day language. Use the same language that the majority of your users understand and use in their domain.
- Ensure error messages provide the user with enough information to continue their task or accomplish it another way. Provide the user with a course of action even for unrecoverable errors.
- Consider flow.
- Keep in mind what the user is trying to accomplish and their usual work-flow. If there are several steps provide them in order.
- Be concise.
- Provide only the information and options that the user requires to accomplish their goal. It is easier to use an application that has seldom-used options and features on another page/pane. Balance this with providing enough information to the user so they don't have to remember or look up things that you can provide for them.
- I'll provide examples here.
- Work with a designer.
- Designers are trained to focus on user experience just like developers are trained to focus on software architecture. Through user research, interaction designers provide software developers a summary view of what the users need. This allows developers the time to concentrate on writing good software.
For more information
If you're interested in learning more about design check out the Fluid Design Handbook.