The reason some applications are a pleasure to use typically is because they have been extensively designed to be that way, using thoughtful consideration of the inherent way humans interact with systems. This reduces the friction between the system and encourages better uptake of the final product.
Make it easy to use
Reduce complexity
Let users determine how to work
Keep users informed
Provide timely feedback to users
The time it takes to make a decision increases with the number and complexity of choices
People lose interest quickly
People prefer information which is easy to understand and access
People prefer simplicity over complexity
People tend to understand brevity better than detail
Avoid uniqueness for its own sake
Understand and incorporate current trends
Be brief and provide further detail when required and requested only
Users spend most of their time on other sites, so they prefer your site to work the same way as other sites
Human memory limitations can quickly reduce a persons perceived experience of a system, particularly when a system does not support a user
Users expect systems to remember choices
Users will expect system-wide consistency
Avoid situations where users guess how to interact with a system
Encourage and adopt consistency across domain related systems
The average person can only keep 7 (plus or minus 2) items in their working memory
Making mistakes is normal
Users learn by making mistakes
Help users recover from mistakes
Avoid rigid systems, but rather allow users to interact on their terms
Help the user identify when errors are made
Help the user recover from errors
The simplest solution tends to be the right one. When presented with competing hypothesis to solve a problem, select the solution with the fewest solutions.
Humans typically avoid complex scenarios, but will accept assistance to get complex tasks complete
Most complex scenarios can be reduced to small activities which are achievable with guidance
Identify aspects of a system which are complex
Reduce the complexity where possible, and provide guidance where complexity cannot be reduced.
Use to most simple way to help the user interact with complex systems
For any system, there is a certain amount of complexity which cannot be reduced. (Law of Conservation of Complexity)
Uniformity is reassuring and helps users understand how items are related, simply by looking similar.
Items which appear different are memorable, and draw the users attention.
Help users understand similarities by making similar information look the same.
Help users identify differences by making differences and exceptions look different
Avoid similarity where items are not the same
Avoid difference where items are the same
The Isolation Effect predicts that when multiple similar objects are present, the one that differs from the rest is most likely to be remembered.
Systems which satisfy the majority of the user base will most likely be considered satisfactory
When large stable systems exhibit large faults, the most likely cause is small, not large
Users will tend to focus on aspects which are not-functional, over aspects which are functional
Focus on aspects which satisfy the greatest need
Avoid focusing on minor aspects, particularly at the cost of more significant aspects
Diagnose and fix big faults first, then small tackle faults
Ensure users observations and grievances are heard and recorded
The Pareto principle states that, for many events, roughly 80% of the effects come from 20% of the causes.