Ease of Use and easy to memorize steps - usable features with quick results with fewest steps possible. Stimulating for the user - keeping them interested enough to get their job done. Familiarity with existing paradigms -the use of images, shapes and objects that are recognizable. Immediate gratification - as little lag time as possible for tasks. Break them down into sub tasks if possible so that it is easier to understand each step, then offer greater flexibility through customization.
Repetition is perhaps the biggest reason why someone uses software.
It's faster, cheaper, easier, better looking in the end, and maybe even more fun than notepads full of scribbles. So creating a program that mimics life yet assists the user to get a job done is number one in priority. In order to accomplish this task, not a single element of the user interface design or usability issue can be left to chance. Biggest question I've heard asked from anyone anywhere concerning design of a software product, or any product for that matter. It's not difficult to follow that train of thought because every product with almost any configurable design will have some kind of an audience.