Tuesday, April 25, 2006
Apparently Windows Vista will have a whole slew of new dialog boxes for us to contend with. This is all in the name of security so perhaps there is some reason behind the apparent insanity, but us programmers have a bit of a soft spot for dialog boxes and our users don't. For a programmer, a dialog box is often the easy way out. What's the alternative? It depends on the scenario, but the typical situation where we would consider popping up a dialog is when the user is about to do something that could lead to some kind of data loss, so we throw up a dialog saying 'Are you sure?'. The alternative here is to have some kind of undo functionality and that can be pretty tricky to implement. So why don't users like dialogs? Because they interrupt workflow. The user is merrily going about their business when up pops a dialog and they have to think about the answer. After a while of course they learn to ignore the dialog and just hit the Enter key, which is another problem with dialogs that popup too frequently. They lose any effectiveness they initially had. Another problem occurs with multitasking. In one application I use, loading a document takes some time, so I open a file, then switch to some other application. When I flip back to the original application, there's a dialog asking a dumb question... So how do we get rid of them? First, remove any dialogs that serve no purpose at all. Examples of these are dialogs that merely say 'I've completed task X'. What is the user meant to do? Congratulate the computer? Next, find dialogs that 99% percent of the time serve no purpose, the 'Are you sure?' dialogs and just do what the user asked for but allow them to undo that action. Then look for dialogs that ask a question that invariably has the same answer. Add a checkbox that says 'Always do this and never ask me again'. You may decide that you want to provide a way of turning this back on, but have you ever needed to do it? I'd go even further at this point and suggest looking at any modal windows in your application and see if you can make them non-modal. Modal windows make user interaction more difficult, even though they make programmer's lives easier. If a user is likely to want to copy and paste between windows in your app, make sure they are non-modal so they have some chance of doing so. But I don't have an original bone in my body. All these ideas come from the great book 'About Face', that everybody should read.