Ian Bicking: the old part of his blog

Guidance, Navigation, UI

Dave Thomas (http://pragprog.com/pragdavePragDave) writes about user interface in his latest post. He talks about Naked Objects:

A Naked Objects system provides mechanism, but little in the way of policy. When I describe this, some folks have a strong reaction against the idea. "Without high-level policy imposed by the GUI (scripting, or series of modal dialogs that have to be filled in in a proscribed order) how can we ensure our users do everything that needs to be done?" they ask. And its a good question. Experienced users, folks who understand the domain, love Naked Object systems because they get the control and flexibility they need to get the job done. But inexperienced users can be confounded by that same flexibility—"what should I do now?". (In a way, this also relates back to the Dreyfus model of skills acquisition: beginners need to be guided, while experts need to be left alone to get on with their jobs.)
I think that dichotomy -- flexible tools for experts, guided applicatins for beginners -- isn't entirely correct. I believe good user interfaces are built up out of heuristics -- you guess what the user wants to do next, you guess what information they need to know, and in what order. It's just guessing (which is why it's based on heuristics, not rules), but doing it right is very important.

This guessing is no less useful for an expert than a beginner, though the answers you'll come up with are much different for the two. The expert may not need guidance, but a well-honed UI can save them from navigation, and that looks just like guidance. This is all especially true of an application that is data-rich, with complex relations among data -- exactly the sort of systems that Naked Objects are addressing.

In my experience with application development, domain objects can be implemented in a fairly stable manner. They can be abstract, normalized, and elegant. The same isn't true of UIs -- a normalized UI sucks. An abstract UI is almost an oxymoron. An elegant UI is elegant based on user interactions, not an intrinsic elegance. Binding the UI to the objects themselves doesn't seem like an good, or even particularly powerful idea. Doing that, you are asking your users to become programmers, and create their own user interfaces (ala shell scripts). That's not an impossible goal, but it's not what Naked Objects is trying to sell.

My post on status notification web pattern was about enabling the heuristics that make a good UI -- it lets you easily move the user through the system, predicting where they may want to go next. This shouldn't be confused with back-button-breaking web applications that make the user go through a particular navigation (often with overuse of POST). That's, and other modal, restricted, highly-directed systems are simply poor implementations, they shouldn't be an indictment of guidance as a tool that can help all users, at all levels.

Created 26 Nov '03
Modified 14 Dec '04