Coping with the real world

The biggest factor in user satisfaction comes from the feeling of control. When a program doesn't let them do what they want, or behaves in a way that isn't intuitive to them, they begin to feel like they've lost control to the big box with blinking lights. This leads to resentment, job dissatisfaction, and stress. Software designers rarely make their software frustrating on purpose1, they just find that the universe they've shipped their software into is an unruly place that doesn't care to obey the models and abstractions that were invented for it.