I'm reviewing a book I read about nine years ago, Why Software Sucks...and What You Can Do About It by David Platt. It feels like re-reading Keynes in 2008: really much more familiar than one would want, because no one seems to have learned much. From Chapter 1:
As with many areas of computing, user interface design is a highly specialized skill, of which most programmers know nothing. They become programmers because they're good at communicating with a microprocessor... But the user interface, by definition, exists to communicate with an entirely different piece of hardware and software: a live human being. It should not surprise anyone that the skill of talking with the logical, error-free, stupid chip is completely different from the skill of talking with the irrational, error-prone, intelligent human. ...
Because they're laboring under the misconception that their users are like them, programmers make two main mistakes when they design user interfaces. They value control more than ease of use, concentrating on making complex things possible instead of making simple things simple. And they expect users to learn and understand the internal workings of their programs, instead of the other way around.
The book is a little dated (October 2006), so some more, ah, concrete thinkers may have trouble getting past the 2006-era examples. But just like the idea that government investment can get an economy out of recession, the ideas in the book are still relevant and timely. Unfortunately.