1. Interaction Design Tips
Some of those tips are based on the work of Alan Cooper (from the books "The Inmates Are Running The Asylum" and "About Face 2.0").
1.1. Design for the Intermediate User
There are three types of users: beginners, intermediates and experts. When someone uses your software for the first time, he is a beginner. But nobody remains beginner for long. Nobody wants to. They either climb the learning curve and become intermediates or they give it up.
Optimizing your design to intermediate users mean to make frequently used functions more accessible and easy to use, while taking more advanced, rarely used features out of the way. Those would still be easily accessible through shortcuts for the expert users.
You also need to make sure that beginners become intermediate users as fast and easy as possible, but without building training weels right into the interface that will get on the way of intermediate users (that's the case of wizard type interfaces).
1.2. Be aware of users (hidden) personal goals
Besides work goals, every person has personal goals that are in effect when using any software. The most common (that are usually disrespected by many applications) are:
- Not to feel stupid
- Not to make mistakes
- Get an adequate amount of work done
- Have fun (or at least not be too bored)
1.3. Design for Goals instead of Tasks
Goals are the reason we perform tasks. Goal is an end condition, whereas task is an intermediate process needed to achieve a goal. Goals remain constant over a long period of time, while the tasks performed to achieve a goal can change rapidly. Also, there is a large number of combinations of tasks that can achieve the same goal. Only a fraction of those combinations can be considered a good design.
Developer's way of thinking is often biased towards tasks. There is a reason for that: it is a natural way of implementing software, step by step. That way of thinking sometimes make developers design towards tasks. Don't do that, design for goals instead of tasks.
Examples of goals: (under construction)
1.4. Present the interface in terms of an appropriate User Model, not an Implementation Model
Developers tend to design users interfaces that are heavily based on the implementation model, or the internal application organization (data structures, object and class hierarchies, etc) which rarely matches what is intuitive for the user. Designers must implement a reasonable user model for the interface (that matches the user characteristics) and map that model back to the inner implementation model.
1.5. Create polite software
It's been proven that users react to a computer interface just like if it was another human being. For that reason, it is a great advantage to produce interfaces that behaves like a polite and considerate human being. No one likes rude people, right? Besides, software is there to serve people, right?
Polite software:
- is interested in me
- is deferential to me
- is forthcoming
- uses common sense
- anticipate my needs
- is responsible
- doesn't bother me with its personal problems
- is well informed
- is perceptive
- is self-confident (are you sure you want to delete that file??)
- stays focused
- gives instant gratification
- is trustworthy