Your goals are often in conflict with the user's goals. The following lists describe typical programmer goals and typical user goals.
Typical Programmer Goals
- Programmers want their software to be fun to program, often by using new tools and technologies.
- Programmers want to write their software quickly, often by using third-party solutions, so that it can be delivered on schedule.
- Programmers want their software to be easy to implement, often by avoiding user interface details, documentation, and gory debugging.
- Programmers want to advance their career by working with technologies that are in demand.
- Programmers enjoy technical challenges and want to know how software works.
- Programmers don't care much about installation, documentation, and technical support—these are perceived as somebody else's job.
Typical User Goals
- Users don't generally use software because they enjoy using software. (Games are an obvious exception.) Rather, they use software to get their work done.
- Despite the fact that users generally don't use software because they enjoy using it, users want to get their work done enjoyably.
- Users want to get their work done quickly.
- Users want to get their work done without having to read documentation or ask for help. They don't want to know how the software works.
- When they have to read documentation, users want it to answer their questions with a minimum amount of effort.
- Users want software to install and uninstall easily.
No big surprises here, but notice that programmers and users have fundamentally different goals.