Thursday, February 22, 2007

Distinction Driven Design

One of the most frustrating issues I have with doors (and apparently it’s genetically inherited by David!) is their inherent direction ambiguity. Looking straight at a garden variety door- can you tell me which way it opens? Does it open towards you? Away from you? Does it swing both ways? The only practical way to determine the direction of this interface is by testing.
Would you care for an Api in your programming language of choice that contains such vagueness? Consider a series of DataAdapters with methods like Process, Do, OpenOrSave… Now some consider putting a label on a door a good enough solution. But that’s just like plugging a hole in a dam with your finger. Another one will spring right up. Some people can’t read, some don’t understand your language and most of us don’t bother to read. When was the last time you read code comments? When the damn thing stopped working, right? Sure I read those– right after I crash my head against the “pull” label.
So I’m watching David successfully navigating all sorts of door handles (push, pull, turn or raise handles) while still having problems figuring out which way the door swings and it got me thinking. There’s something inherently wrong about out door designs. If David can figure out how to turn off my computer he should not have problems with 19th century doors should he?

No comments: