I came up with a new "complexity theorem" the other day,
so I'm putting it in my Slashdot journal where pretty much
nobody will likely ever read it.
Everything will be complex in proportion to its perceived
importance. Real complexity which is deemed unimportant
will be perceived through simplifications (if at all) and
things which are considered important will be burdened with
minutiae and arbitrary garbage.
Why? Two reasons. First, simply because they will
tolerate difficulties in whatever is
important to them. Second, because the tolerance for
complexity in general is a handy way for people to
measure each other's brains. Thus,
it has an out-of-band use.
Having recently acquired some basic proficiency in Esperanto,
I can see this arbitrary complexity in languages very plainly.
There's no need for verbs to conjugate differently, nor for
irregular forms. One can't blame it all on the mixing and
development of language because some complex archaic
forms have been dropped for simpler modern forms. Take for
example how the word "you" has usurped the second person
singular in both nominative and accusative cases which used
to be "thou" and "thee". In some locales, it has made a
complete migration into the singular, being replaced by
the incorrect "yous" for the plural. But that makes
sense in a way, so it has been officially rejected.
Even in Esperanto one sees the influence of this effect as
the number of de-facto exceptions increases in a language
which some claim (falsely) has no exceptions to its
sixteen basic rules.
One ever-apparent example of the constant push toward
lingual complexity is generation-specific slang. Just think,
for example, how many different words you can remember having
been used to indicate the simple concepts of the adjective
"good" and the noun "excrement", and how they've kept coming
and going (puns not originally intended) over time.
And how with graphical user interface (GUI) design?
Same thing. The programmer thinks that their software is
the most important thing, so it ends up complex. The
user doesn't care about the programmer though, and ends up
resenting the tedium of searching through arbitrary lists,
menus and screens just to find where to "click" to accomplish
a task which they already understand in concept.
What I get out of this is an understanding
that I should strive to reduce the complexity of the user
interfaces which I create. I need to be humble about my
role, and the role of my work, and allow the user to perceive
complexity through the interface rather than
in it.