The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Bad Design Rant

This is the requirement, so I have to implement it. Is it as bad as I think?

Screen has a few entry fields and a checkbox labeled "Save as Defaults". So if the user checks it, the current entries are saved and the entries are automatically populated next time. So far, ok.

Now they bring up the screen again and the fun starts. The entries are prepopulated and the checkbox is automatically checked (because they saved the defaults). Now if they uncheck it *without* changing any of the entries, the defaults are not used next time ("clear the defaults"). But if they change any of the entries *and* uncheck the box it means "keep the old defaults". But if they change any of the entries *and* check the box it means "use the entries as defaults next time".

So we have a checkbox that can be checked or unchecked, but can mean one of four things:
1) Keep the old defaults (was checked, is checked)
2) Change the defaults (was not checked, is checked)
3) Use new entries this time, but use the old defaults next time (was unchecked, entries changed and is unchecked)
4) Don't use any defaults next time (was checked, entries unchanged but box not unchecked).

Oh, and there's another checkbox on the page, but what it does is really confusing...
Anony Coward
Wednesday, October 27, 2004
4) Don't use any defaults next time (was checked, entries unchanged but box -->now<-- unchecked).
Anony Coward
Wednesday, October 27, 2004
The (4) seems to be bad. I would never assume that unchecking the box results in clearing the defaults. If you need this functionality, it could be a separate button, clearly named "Clear the defaults".
Thursday, October 28, 2004
Call me twisted, but I sort of thinks the senario makes sense.

I feel a little bit uneasy about number 4, perhaps it should have a 'clear defaults' button, but I think it works this way to.
Thursday, October 28, 2004
The solution is clearing the checkbox when you have populated the fields with defaults.

You get it very straight then, just 2 options like a good checkbox is supposed to have:

1) When there are no defaults, you have the box automatically checked. Whatever was entered first becomes the defaults.
2) When there are some defaults, you have the box automatically unchecked. To set new defaults, the user has to check the box manually.

This makes sure that the user does not need to do anything to get defaults memorized, but has to make an explicit action to change the defaults - so there's far less chance to lose the defaults accidentally.

This does not interfere with "clear defaults" button, either.
Thursday, October 28, 2004
Bad, very bad. Context sensitive GUI functionality.  It collides with intuition and expectation ("if I uncheck it, the current defaults are not touched... oops"). The user has to think anytime the dialog pops up, knowing exactly how the dialog works to do it right.

In fact, you even have *described* it wrong on first try. Do you really think it could be *used*?

Imagine an editor with a SAVE button - most of the time, it will save the current text, but in some context - depending if the text was changed - it will delete the file.
Thursday, October 28, 2004
I think the REAL solution is forgettin the checkbox, and adding two buttons instead: one labelled "save defaults" and other labelled "clear defaults".
Thursday, October 28, 2004
Agree, 4 is a fucked up case. Shoot your designer.

Thursday, October 28, 2004
As listed you don't have 4 actions, you have 3.  Look closely and you'll see that #1 and #2 are the same - the button is checked so save these as the defaults.

You need to clarify #4 with whomever speced it.  This is unusual behavior for a check box - it might just be a poorly written spec.  They may have meant it to be the same as #3.

And you need to inform whomever wrote the spec that they are tying the operation order of the checkbox and the other fields together. That is, it sounds like WHEN the box is checked/unchecked will change the operation outcome.  This is highly undesirable.

So speak up.  Ask for clarification, there's no problem with that.  "Hey John, I was getting ready to code the preferences panel and I wanted to make sure I understand the spec.... when you say 3, do you want X... okay and when you say 4, do you want X again or is this something else?  Could we handle that differently as it will be really hard to code."

Remember, saying that something will be difficult to code/maintain/debug/test usually lays the groundwork for getting small concessions.
Lou Send private email
Thursday, October 28, 2004
It might simplify things to realize that there are always defaults, so your #4 doesn't mean anything to the user. The question is whether the defaults are something the user set, or something hardwired into the program.

If the set of choices is really complicated, it might make sense to have a way to revert to the hardwired default defaults. I think this rarely is helpful. Otherwise, the default should always be the last set the user saved. So checking the box updates the defaults, leaving the box unchecked leaves the defaults as they were last time they were saved (or leaves the hardwired default defaults).
Harvey Motulsky Send private email
Thursday, October 28, 2004
Maybe I misunderstood, but a checkbox should never be used to initiate an action. That's what buttons are for.
Practical Geezer
Thursday, October 28, 2004
"Look closely and you'll see that #1 and #2 are the same - the button is checked so save these as the defaults."

They're subtly different. #1 means perserve what was there before, #2 means change them to something different. Although in both cases they mean "save what's displayed", which is what I wanted; the part I didn't like is pre-checking the checkbox, it adds nothing. And making unchecking a pre-checked box different than leaving a box unchecked was what really set me off.

"a checkbox should never be used to initiate an action"

There's also a button to initiate action based on the settings of the entry fields. We could've made the checkboxes buttons, but saving the defaults isn't the reason a user went to the screen, it's sort of an "oh by the way, remember these settings" feature.
Anony Coward
Thursday, October 28, 2004
Anony Coward wrote, "We could've made the checkboxes buttons, but saving the defaults isn't the reason a user went to the screen"

But now that they're *on* the screen, this is something they need to do.  If the behavior is as subtle as you describe, you need to make that behavior clear to the user.
Brent P. Newhall Send private email
Thursday, October 28, 2004
(Incidentally, #3 seems like gibberish - how can there be defaults if the 'use as defaults' was unchecked?  If it actually does make sense somehow then I'm going to go hide under my desk.)

The only common thread here is that even supposed experts don't agree on how this process should work or what the checkbox actually means - even if they're sure that their interpretation is correct. Even the guy actually implementing the damnable monstrosity is confusing me with his description of how it works.

Given this, what is the likelyhood that a typical user is going to understand it correctly? Are users going to quickly see and understand all the options or will they just have no idea why their preferred defaults come and go at random? How often will they forget to check or uncheck that little box just to keep their settings correct?

That should answer the question "is this a good design?"

Decapitate the designer, stick his head on a spike, and place a printout of that dialog box as a warning to the next idiot who tries to torture your innocent users. It's the only way to deal with people like that.

Thursday, October 28, 2004
Did this requirment come from a Business Analyst? No respecting Interaction Designer would ever come up with that kind of garbage.
MT Heart
Thursday, October 28, 2004
It came from the lead analyst. He once came up with a design so unusable it had to be rewritten, and he commented later "the only user smart enough to actually use it was me".

We (development) are working on management to give us more veto power over this kind of thing; it looks like we're getting somewhere (albeit short of putting his head on a stick) but I needed to vent.
Anony Coward
Friday, October 29, 2004
Why would you let an analyst dictate a design?
Isn't he supposed to analyse the problem domain and explain to the designer(s) for them to decide on a proper solution?
From your description, I would guess he is not qualified to design.
Practical Geezer
Friday, October 29, 2004
Ahh, figures. All BA types seem to want to do is hook up input controls to database fields... I guess you'll need a can of 'spray on usability' in case some real, live users actually want to use the system.
MT Heart
Friday, October 29, 2004
just code it up as two buttons, one that says save defaults and one that says clear defaults and then later when they ask about it say it would be too hard to do it the other way, but if they really want it like that you can go back and work on it later.. then conveniently never go back to it.
Zach M Send private email
Friday, October 29, 2004
I the user really need to manage the defaults?

I can think of four scenarios:

1) The last entered values are a good starting point for the next time. You don't need to hide the previously entered values.

I this case, don't include the checkbox at all. The values entered last time are fine.

2) The last entered values are a good starting point for the next time. But sometimes you don't want the values you entered to be seen next time (for security reasons, or whatever).

In this case, include the checkbox labelled "Do not display these values next time". Remember the value of this check always.

3) There is a good default set of values, that change from time to time.

Include a button "Set as default", No checkboxes.

4) There is a good default set of values, that there is no need to change, really.

Do not include nothing, always load the hardcoded default values :).

Daniel Benmergui Send private email
Tuesday, November 02, 2004
I guess what you have is:

Dialog with a few data entry elements, a checkbox ("save as defaults"), an "OK" button, and a "Cancel" button.

Here's one thing to do:

Dialog opens, the checkbox is unchecked (always).

If the user, checks the checkbox and clicks OK, the items are saved as defaults.

The "Clear defaults" is another, independent operation (I suppose an extra button). Maybe with a confirmation.
Wednesday, November 03, 2004
I know this in the "Design of Software" forum, but I sort of don't care about all the design issues people are talking about here. I trust you to come up with a much better design (there are plenty that would suffice). But you have to trust yourself to talk to whoever you have to talk to to prevent this "feature" from being a part of the final application. Maybe you have to make a paper prototype and video tape some user testing with those prototypes to capture people's reactions so that you'll have something to buttress your argument. But my feelinga bout these things is that you should take the responsibility upone yourself to prevent this from going forward. It is, after all, a truly horrible idea.

Jeremy Send private email
Thursday, November 04, 2004
Seems like the only problem is here: "Now they bring up the screen again and the fun starts. The entries are prepopulated and the checkbox is automatically checked (because they saved the defaults)."

Is it important for them to know, when the screen comes up, whether these are the default values or just the ones that were used last time? If not, surely the checkbox should just be empty each time. If they want to use the values as defaults, they check it (before clicking the OK button or whatever dismisses the dialog).

If it's really important that they know when the values that come up actually are the current defaults, how about showing the checkbox checked but greyed out (disabled) in that situation. If they change any of the values, enable it. And uncheck it. Hmmm, that's not ideal is it? OK, how about displaying a discreet message 'These are the currently saved default values' until they change a value?
Tom Send private email
Thursday, November 18, 2004

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz