UX Guidelines
- Visibility of system status - The user should always understand what is happening right now. Where is she in the system (e.g highlight the right tab in the navigation menu)? What is the system doing (e.g loading animation when a page loads)? If there's an error - what's wrong (e.g "wrong password" message under the password field, if the user entered a wrong password)?
- Match between system and the real world - The site should use labels and terms that the target users understand (e.g on a mass-market e-commerce site, call the cameras section "Cameras" instead of "Optical photo devices").
- User control and freedom - The user should be able to easily fix mistakes or change actions. In other words, everything the user does should be reversible (e.g "undo" button in office suite apps), unless there's a very good reason not to.
- Consistency and standards - The system should use the same words for the same things (e.g don't call the user's account "profile" on some places and "user file" on others). Also, if there's a specific term everybody's using to describe an object, the system should use it as well (e.g use the term "web" instead of "net" to describe the world wide web).
- Error prevention - The system should prevent mistakes the user is prone to make (e.g on Gmail, if you wrote the word "attached" in your e-mail without attaching a file, a message pops, asking you if you meant to attach a file).
- Recognition rather than recall - The system should show the user all the info she needs to complete an action, instead of making her rely on her memory (e.g on a customer service form, if you want the user to enter a transaction ID, show her a list of her recent transactions with their IDs).
- Flexibility and efficiency of use - The system should allow expert users to perform actions more quickly (e.g shortcuts, hot-keys and macro commands).
- Aesthetic and minimalist design - The system should only use the minimum possible amount of text and other design elements to convey its message. And everything should be visually appealing as well. Apple's website is considered a good example for this.
- Help users recognize, diagnose, and recover from errors - Error messages should be easily read and understood by the users, and should tell them what to do to fix this (e.g don't write "Error 1052" and let the users search the solution themselves, but instead write "We couldn't locate you. Please turn on your phone's GPS under Settings").
- Help and documentation - Any system should be accompanied with a simple, searchable "manual" written for the user (i.e focused on what the user needs and not how the engineers developed it). I think Microsoft's support center does a good job at this.
[source: http://ux.stackexchange.com/a/17799]