In the minds of users, a system's user interface is the system; everything else is just stuff they're happy to ignore. The design of the user interface is therefore critical to the success or failure of a project. Get it right, and your users will forgive the occasional infelicity in implementation. Get it wrong, and it won't really matter how efficient your code is.
The irony here is that if you do get it right, hardly anyone will notice. Really elegant interfaces are invisible. Even if you get it wrong, no one may notice. The interfaces of many computer systems, particularly database systems, are so awkward that your system will be just one more of the mediocre, mildly abusive computer systems people have come to expect.
So if no one's going to notice, why bother? Well, why not? It is, after all, your job. At the risk of sounding like your mother, if you're going to design computer systems at all, doesn't it make sense to do it as well as you can?
Designing effective interfaces does require more work than simply slapping a front end on a database. Effective interfaces can also require more work to implement, although this isn't necessarily the case. But the payoffs can be huge, and they're not all of the "virtue is its own reward" variety.
An effective user interface minimizes the time users require to learn and implement the system. Once the system is implemented, productivity gains are higher if users don't have to struggle to bend it to their will. Chances are good that both of these issues were addressed in the project goals. They certainly impact the infamous bottom line.
Effective interfaces that closely match the users' expectations and work processes also minimize the need for external documentation, which is always expensive. And while users might not consciously notice how wonderful your user interface is, they'll certainly notice that your system seems to just work better than the one designed by UsersAreScum, Incorporated. That can affect your bottom line the next time a project or promotion comes up.
So, what constitutes an effective interface? To my mind, it's one that helps users accomplish their tasks and otherwise gets out of the way. An effective interface doesn't impose its requirements on users. It never forces users to play by its rules; it plays by the users' rules. An effective interface doesn't force users to learn a bunch of uninteresting stuff just to use it. And finally, it doesn't behave in unexpected ways.
We'll look at these three principles in this chapter, but first we'll take a brief look at a few models that are useful to consider when thinking about the design of user interfaces.