UPDATED: A little survey in logic

This one is for anyone who deals with online form design, or would just like a little exercise in logic.

There is a form with two fields. Field A is always required. Field B is only required based on the value entered in Field A. If the value entered in Field A is X then Field B is required. If the value in Field A is Y, then Field B should be null.

If you're up to it, leave me a comment indicating the simplest way to express these rules to the user and appropriately guide them through accurate entry. I'll eventually give you the story of what actually took place.

Well, it looks as if only Nick was up to the challenge, but it appears that mostly resulted from the seeming simplicity of the issue that bothered him, not to mention he's probably one of the only people who bothered reading this in the first place!

Nick, as well as some folks I discussed this with off-line, provided a solution that was not only simple, but straight to the point. But the reason I'm writing about this in the first place is that the actual solution was anything but.

Now, here's the logic in the most basic way I can present it and as it was originally implemented:

1. If Field A is null, then indicate to the user that Field A is required and move the cursor to Field A.
2. If Field A equals X and Field B is null, indicate to the user that Field B is required and move the cursor to Field B.
3. If Field A equals Y and Field B is not null, indicate to the user that a value cannot be entered in Field B because Field A equals Y and move the cursor to Field B.

I should also point out that the user group is very experienced and well-trained. This isn't a bunch of first-time one-off users. They use this form multiple times each day.

The problem was that the "lead" user could never remember to complete either Field A or Field B whenever she used the form, and rather than acknowledging that she wasn't learning from the edits, chose to have the edits changed. So here's the "improved" logic that was requested and implemented:

If Field A is null, indicate to the user that both Fields A and B are required and move the cursor to Field B.

Keep in mind here that a value in Field B is only ever required if Field A equals X. But this logic instructs the user that Fields A and B are always required. So the user is directed to Field B and enters a value, only logic points 2 and 3 above still stand, so if after entering a value in Field B the user enters X in Field A, he will be notified that no value should be entered in B, the very field the previous edit said was required.

When I explained to the "lead" user that it would be confusing to instruct a user to complete one field based on another field not being complete that actually should be and that the user would then potentially be told that they shouldn't have done what they were just told to do, I was told "these people are smarter than that."

The same people, apparently, that weren't smart enough to appropriately complete the fields in the first place.

I considered putting this under "People Who Vote," but I'm still hoping they don't!

1 comment:

Nick said...

Is this a trick question? I'd check when the value of FieldA changed, and if it equalled X, I would blank out FieldB and disable the box, otherwise I would enable FieldB. Is this really that difficult?