views:

872

answers:

21

This is inspired by the question OK-Cancel or Cancel-OK?.

I remember reading somewhere about the concept of switching OK-Cancel/Cancel-OK in certain situations to prevent the user from clicking through information popups or dialog boxes without reading their content. As far as I remember, this also included moving the location of the OK button (horizontally, left to right) to prevent the user from just remembering where to click.

Does this really make sense? Is this a good way to force the user to "think/read first, then click"? Are there any other concepts applicable to this kind of situation?

I am particularly thinking of a safety-related application, where thoughtlessly pressing OK out of habit can result in a potentially dangerous situation whereas Cancel would lead to a safe state.

+27  A: 

Please don't do this unless you are really, really, really sure it's absolutely required. This is a case of trying to fix carelessness and stupidity by technological means, and that sort of thing almost never works.

What you could do is use verbs or nouns instead of the typical Windows OK / Cancel button captions. That will give you an instant attention benefit without sacrificing predictability.

Mihai Limbășan
Agreed, I actually popped in to answer the same thing - better to replace the Ok/Cancel with meaninful values so the user actually has to *think* first.
Jay
Or you can use a checkbox or some other positive way of marking something as 'acknowledged'. So you have to click a checkbox and then click OK.
Redbeard 0x0A
We have some software at work that does that checkbox trick. I despise that stupid checkbox. I click what I intend to do, and then the second time I check the box and click again. I don't recommend it.
HitScan
+14  A: 

NOOOOOOOOOOOO!

In one of our products we have a user option to require Ctrl+Click for safety related commands.

But startling the user with buttons that swap place or move around is bad design in my book.

Jon B
A: 

But if the OK/Cancels are not consistent, that might throw off or upset the user.

And don't do like some EULAs where a user is forced to scroll a panel to the bottom before the Agree button becomes clickable. Sometimes you just won't be able to get a user to read everything carefully.

If they really need to read it, maybe a short delay should happen before the buttons appear? This could also potentially be annoying to the user, but if it is a very critical question, it'd be worth it.

Edit: Or require some sort of additional mechanism than just clicking to "accept" the very important decision. A check box, key press, password, etc.

Bryan Denny
+3  A: 

No, it doesn't make sense. You're not going to "make" users read. If the decision is that crucial, then you're better off finding a way to mitigate the danger rather than handing a presumed-careless user a loaded gun.

Making the "safe" button default (triggered by enter/spacebar/etc.) is a good idea regardless, simply because if they surprise the user then a keystroke intended for the expected window won't accidentally trigger the unexpected action. But even in that scenario, you must be aware that by the time the user has realized what they've done, the choice is already gone (along with any explanatory text on the dialog). Again, you're better off finding another way to give them information.

Shog9
A: 

I recommend informing the user that this is a critical operation by using red text and explaining why is this an unsafe operation.

Also, rather than two buttons, have two radio buttons and one "Ok" button, with the "don't continue" radio button selected as default.

This will present the user with an uncommon interface, increasing cognitive load and slowing him down. Which is what you want here.

The change of the method of accepting the dialog does not enforce there understanding of the critical operation.
lillq
A: 

As always with anything with user interaction, you have a small space between helping the user and being annoying. I don't know you exact requirements but your idea seems OK(pun intended) to me.

Raminder
A: 

It sounds like your user is going through a type of input wizard in the safety app.

Some ideas as alternatives to moving buttons.

  1. Have a final screen to review all input before pressing the final ok.

  2. Have a confirmation box after they hit ok explaining what the result of this action will be.

  3. A disclaimer that require you to agree to it by checking a box before the user could continue.

Mark Robinson
+5  A: 

If you must use a dialog, put descriptive captions on the buttons within the dialog.

For example, instead of OK and Cancel buttons, have them say "Send Invoice" and "Go Back", or whatever is appropriate in the context of your dialog.

That way, the text is right under their cursor and they have a good chance of understanding.

OS X does this most of the time. Here's an example image.

The Apple Human Interface Guideline site is a great reference, and very readable. This chapter on that site is all about Dialogs.

JosephStyons
A: 

Don't switch it around - you'll only confuse more than you'll help.

Instead, do like FireFox and not activate the control for 5 sec. - just make sure you include a timer or some sort of indicator that you're giving them a chance to read it over. If they click on it, it cuts off the timer, but requires they click one more time.

Don't know how much better it will be, but it could help.

Just remember, as the man said: You can't fix stupid.

AnonJr
A: 

This will give me headache. Especially when I accidentally close the application and forget to save my file :(

I see another good example of forcing user to "read" before click: Firefox always grayed out the button (a.k.a disable) the "OK" button. Therefore the user have to wait around 5 seconds before he can proceed to do anything. I think this is the best effort I have seen in forcing user to read (and think)

Another example I have seen is in "License and Agreements" page of the installer. Some of them required the user to scroll down to the end of the page before he/she can proceed to next step.

m3rLinEz
+1  A: 

What I've done in some instances was to compare the time of the message box being shown with the time of it being dismissed. If it was less than 'x' amount of seconds, it popped right back up. This forced them, in most cases, to actual read what was on the screen rather than just clicking through it blindly.

Fairly easy to do, as well....

Something like this:

Dim strStart As DateTime = Now
While Now < strStart.AddSeconds(5)
    MessageBox.Show("Something just happened", "Pay Attention", MessageBoxButtons.OK)
    If Now < strStart.AddSeconds(5) Then strStart = Now Else Exit While
End While
Kevin Fairchild
A: 

Keyboard shortcuts would still behave as before (and you'd be surprised how few people actually use mice (especially in LOB applications).

Vista (and OSX IIRC) have moved towards the idea of using specific verbs for each question (like the "Send"/"Don't send" when an app wants to crash and wants to submit a crashdump to MS)

In my opinion, I like the approach used by Outlook when an app tries to send an email via COM, with a timer before the buttons are allowed to be used (also affects keyboard shortcuts)

Rowland Shaw
+8  A: 
ShreevatsaR
It's not necessarily a bad idea for a rare event that is likely a mistake and has irretrievable consequences, when the user isn't doing work. It works well for deleting Guild Wars characters. Anything else, I'm not so sure about.
David Thornley
Hmm how does that work in Guild Wars? In every other MMO I've played, the character gets marked as "deleted" without any silly confirmations at all, but is just as easily undeleted again during a specific time (say 7 days)... makes much more sense to me?
Oskar Duveborn
A: 

If you use Ok and Cancel as your interface you will always be allow the user to just skip your message or screen. If you then rearrange the Ok and Cancel you will just annoy your user.

A solution to this, if your goal is to insure the users understanding, is:

  • Question the user about the content. If you click Ok you are agreeing to Option 1, or if you click Ok you are agreeing to option 2. If they choose the correct answer, allow the action.
  • This will annoy the user, so if you can keep track of users, only do it to them once per message.
lillq
+2  A: 

At the end of the day you can't force a user to do something they're unwilling to do... they will always find a way around it

  • Short cut keys to bypass the requirement to move the mouse to a moving button.
  • Scrolling down to the bottom of the EULA without reading it to enable to continue.
  • Starting the software and then going to get their cup of tea while waiting for the nag screen to enable the OK button.

The most reliable way I've seen this done is to give a multiple choice question based on what is written. If they don't get the answer correct, they can't continue... of course after a couple of times, they'll realise that they can just choose each of the answers in turn until the button enables and then click it. Once again meaning they don't read what was written.

You can only go so far before you have to put the responsibility on the user for their actions. Telling the user that their actions are logged will make them more careful - if they're being held accountable, they're more likely to do things right. Especially if there's a carefully crafted message that says something like:

This is being logged and you will be held accountable for any repercussions of this decision. You have instructed me to delete the table ALL_CORPORATE_DATA. Doing so will cause the entire company's database to stop working, thus grinding the whole company to a halt.
You must select the checkbox to state that you accept this responsibility before you can choose to continue...

And then a checkbox with "Yes, I accept the responsibility for my actions" and two buttons:

  • "YES, I WANT TO DELETE IT" this button should only be enabled if the checkbox is checked.
  • "OH CRAP, THAT'S NOT WHAT I MEANT AT ALL" this button can always be enabled.

If they delete the table and the company grids to a halt, they get fired. Then the backup is restored and everyone's happy as Larry [whoever Larry is] again.

BenAlabaster
A: 

This is what I responded to Submit/Reset button order question and I think the same principle can be used here. The order does not really matter as far as you make sure the user can distinguish the two buttons. In the past what I have done is used a button for (submit/OK) button and used a link for (reset/cancel) button. The users can instantly tell that these two items are functionally different and hence treat them that way.

andHapp
+1  A: 

Do NOT do it, please. This will have no positive effect: You are trying to AVOID people's clicking OK instead of Cancel, by making them potentially click Cancel instead of OK (okay, they may try again). But! you might as well achieve people's clicking OK when they really want to cancel and that could be a real disaster. It's just no good.

Peter Perháč
A: 

Why not reformulate the UI to make the OK the "safe choice"?

zvrba
A: 

I am not really for OK/Cancel. It's overused and requires you to read the babbling in order to say what you are OKing or Canceling. Follow the idea of MacOSX UI: the button contains a simple, easy phrase that is meaningful by itself. Exampleç you change a file extension and a dialog pops up saying:

"Are you sure you want to change the extension from .py to .ps?"
If you perform the change, the document could be opened by a different application.

(Use .ps)   (Keep .py)

It is way more communicative than OK/Cancel, and your question becomes almost superfluous, that is, you just need to keep active the rightmost button, which seems to be the standard.

As it concerns the raw question you posed. Never do it. Ever. Not even at gunpoint. Consistency is an important requisite for GUIs. If you are not consistent you will ruin the user experience, and your users will most likely to see this as a bug than a feature (indeed it would be a BUG). Consistency is very important. To break it, you must have very good reason, and there must not be another different, standard way to achieve the same effect.

Stefano Borini
Always skip the "Are you sure you want to" part and get right to the business "Change the extension from .py to .ps?" Don't add the "If you perform the change, the document could be opened by a different application." part unless it is a certainty. If change in default app is a certainty say "This will change file editor from TextPad to VIM.". And in any way these confirmations are really annoying for users who do not want to be baby sitted by OS.
Totophil
Oh yes, what you propose would be even better. As for the baby sitting. Well, this message annoys me too, but I find OSX babysitting level the best compromise on average.
Stefano Borini
A: 

I wonder if you're thinking about the option that exists in Visual Basic where you can set various prompts and response options; and one option is to allow you to switch Cancel and OK based on which should be the default; so the user could just hit enter and most of the time get the proper action.

If you really want to head in this direction (which I think is a bad idea, and I'm sure you will too after little reflection and reading all the oher posts) it would work even better to include a capcha display for OK.

le dorfier
A: 

The problem is better solved with a combination of good feedback, communication of a system model and built-in tolerance.

In favor of the confirmation mechanism speaks the simplicity of implementation. From programmer's point of view it's the easiest way of shifting responsibility onto user: "Hey, I've asked you if you really want to shoot yourself into the foot, haven't I? Now there is no one to blame but yourself..."

From user point of view:

  1. There is a productivity penalty of having to confirm operation twice every time even though actual mistakes take up just a fraction of total number of actions, any switching of buttons, breaking the habitual workflow or inserting a pause into confirmation just increases the penalty.
  2. The mechanism doesn't really provide much safety net for frequent users whose reflexes work ahead of the concious mind. Personally I have many times done a complex sequence of actions only to realise a moment later when observing the consequences that my brain somehow took the wrong route!

A better for the user, but more complex (from software development point of view) solution would be:

  • Where possible communicate in advance what exact affect the action is going to make on the system (for instance Stack Overflow shows message preview above Post Your Answer button).

  • Give an immediate feedback to confirm once the action took place (SO highlights the freshly submitted answer, gmail displayes a confirmation when a message is sent etc).

  • Allow to undo or correct possible mistake (i.e. in SO case delete or edit the answer, Windows lets restore a file from recycle bin etc). For certain non-reversible actions it's still possible to give an undo capability but for a limited timeframe only (i.e. letting to cancel or change an online order during the first 10 minutes after its submission, or letting to recall an e-mail during the first 60 seconds after its been "sent", but actually queued in the outbox etc).

Sure, this is much more initial work than inserting a confimation message box, but instead of shifting the responsibility it attempts to solve the problem.

Totophil