The psychology of interaction intrigues me. During my 10 years in the software industry, I've held roles in support, quality assurance, development, development management and program management. Most projects I've worked on, and helped design, suffer from bad user interfaces. Often the proper features were implemented but their discoverability and usability clearly suffered in favor of making deadlines. Also, we made the most common of mistakes: implement more features in the same time, rather than making the current set of features usable or discoverable.
That trend continues. The operating systems of today provide better common controls and with some standardization in usage, computer-savvy users acquire a shared set of skills that apply to many applications. Users must learn numerous complex input gestures and synthesize an overly large amount of unrelated information to complete tasks.
Here's my small effort to raise the standard. I'm reading the following books during my infant care leave:
From Design of Everyday Things, describing a stylish, modern Italian washer/dryer combo:
"If the design was so bad, if the controls were so unusable, why did the couple purchase it? If people keep buying poorly designed products, manufacturers and designers will think they are doing the right thing and continue as usual"
Tell me this doesn't happen constantly in the software you use daily.
"Affordance" refers to what an object can accomplish. Norman uses the example of scissors. The holes are affordances clearly for fingers. Fingers fit in the holes and the blades afford ("are useful for") cutting. The sum capability is clear: scissors are used by the hand for cutting. Affordances should be obvious to the user.
Norman also discusses causality and false causality. When you press a button and something occurs, you assume your action caused the reaction. What happens when they are completely unrelated?
Here's a software example of poor affordances and false causality:
You are typing in a word processing program. It is the currently active application and all input goes there. Suddenly, something running in the background requires attention and raises a system modal dialog box, taking input precedence just as you are hitting return in the word processing app. The dialog receives this input and is dismissed. Congratulations - something interesting enough to warrant immediate attention occurs, yet can be dismissed by an errant keystroke.