Foolish Consistency

A foolish consistency is the hobgoblin of little minds,
adored by little statesmen and philosophers and divines.
-- RalphWaldoEmerson?

Speak what you think now in hard words,
and to-morrow speak what to-morrow thinks in hard words again,
though it contradict every thing you said to-day.
-- RalphWaldoEmerson?

And there are lots and lots of little minds when programmers try to do interaction design.

Speaking generously, people try to consistently apply a rule when they shouldn't because they don't understand the forces that created the rule in the first place. In general, there are three different situations that arise from this:

Evil rules

People develop and maintain evil rules without realizing they are evil because they confuse a goal with the conditions that bring it about. So even though the goal can be a directly and obviously Good Thing, the condition that brings it about can be evil (directly and obviously bad). The condition can still be good indirectly if and only if the good it brings about indirectly outweighs the bad it does directly. This is something that has to be judged on a case by case basis, by understanding what the rule is for, as opposed to dogmatically.

Example chain of associations:

evil job evil money evil consumption evil property And we can extend the chain still further by including 'university diploma' 'studying' 'school' and so on.

In computer science, an example of an evil rule is "maximize user choice". In fact, choice is directly evil. The good it can sometimes bring about is the user getting exactly what they want. So a much better alternative to "maximize user choice" is "maximize only meaningful user choices". This fact is referred to in AutomaticVsManualPlacement.

While I wouldn't compare maximizing user choice with slavery or Nazis (or McDonalds, for that matter)...GodwinsLaw and all of that... you do hit upon a good point here. Quite a few people, rather than designing a UserInterface (good or bad), instead design a common interactivity AntiPattern which I will herein name the UserInstrumentedApi. More on why it's a bad idea on that page.

Imperfect good rules

Example: back-opening bus shelters.

Bus shelters are a good thing. And ones that open at the back, when they're too close to the street, are also a good thing. But having to walk all the way around when the bus comes is not such a good thing. Better to have two, or side, openings sometimes.

Unless you live in a cold climate

In which case you can have one side opening or two front and back openings that are staggered so that the wind doesn't have a direct path.

It's not just the wind. Bus riders don't like getting splashed when the traffic on a rainy day sprays water all over the sidewalk--that's why bus shelters often open to the back. Especially in notoriously wet climates like PortlandOregon...

Interaction of good rules with evil rules

The MacOs maintains the unity of identity of objects. Maintaining unity of identity at all times is a Good Thing. There is no unavoidable situation where unity of identity should be broken because the Mac OS system programmers deliberately created all those situations.

Unfortunately, the Mac OS also has manual placement of objects by the user. Which means that the user can easily and does routinely (in fact, unavoidably) place objects in such a way as to destroy their identity. That's because "is contained in Y" is part of the identity of object X. So in this case, the evil rule of manual placement (user choice) conspires to utterly destroy what the good rule seeks to strengthen.

What are the alternatives in this example? I can think of making it "reference friendly", but that may make it confusing to some users. Mac strives for intuitiveness, and part of this comes from echoing the real world in which a thing can only be one place at a time. Most users don't "get" set theory and references. Their target market for sales is not geeks and IT experts.


See also: WhenAreStandardsRestrictive


JanuaryTwelve


EditText of this page (last edited January 11, 2012) or FindPage with title or text search