Thursday, January 26, 2006

Completeness vs. Consistency

In the spring of 1982 I read a book that changed the way I look at design. The book was Douglas Hofstader's Gödel, Escher and Bach: An Eternal Golden Braid. It came out while I was in university and I promised myself I would take some time one day to actually study it, and do the exercise it describes. I indeed had that chance, thanks to my folks, during a week long retreat in Banff, where I booked into one of the log cabins on Mt. Rundle (now replaced by luxury condos) and alternated between days spent hiking the trails around town, and evenings drinking strong coffee and studying GEB. Hofstader tied together many threads that I had briefly encountered through my undergrad, linking computer concepts of recursion to their parallels in art and music, in a way that captivated my imagination.

Recently I've been working with designers and developers on a new application, and it's been instructive to reflect back to Gödel's Theorem, although of course I am probably using it totally out of context, and incorrectly, to boot. Anywho, the idea that stayed with me is that a formal system of logic can either be complete, or consistent, but not both. As it turns out, mathematics is one of those formal logic systems, and it is consistent, but not complete. That is, it does not have any contradictions (if you find one then you have only proved your premise is incorrect), but there are some mathematical truths that we can't discover.

While this fact doesn't keep me awake at night worried about unprovable truths, it did strike me today that when we are designing user interface systems for humans to use, they very much prefer systems that are consistent than ones that are complete. Few people have the expectations of gadgets or software doing everything, but there is a high expectation of consistency, that they should be true to an underlying model. The best systems have an underlying model, or metaphor, that resonates so strongly with users that they call it "intuitive".

What does an intuitive user interface mean? I believe that it presents a user illusion of an underlying metaphor that is analogous to some other activity in users' lives, and provides clues that reinforce the learnability of that metaphor, and functions that act in accordance with it.

As designers we should choose consistency over completeness ("let's just add this one extra feature...") and as users we should demand it.