This repository has been archived on 2017-04-03. You can view files and clone it, but cannot push or open issues/pull-requests.
blog_post_tests/20030513161100.blog

71 lines
4.9 KiB
Plaintext

A Taxonomy of Cognitive Stress
<p>I have been thinking about UI design lately. With some help from my<br />
friend Rob Landley, I&#8217;ve come up with a classification schema for the<br />
levels at which users are willing to invest effort to build<br />
competence.</p>
<p>The base assumption is that for any given user there is a maximum<br />
cognitive load any given user is willing to accept to use an<br />
interface. I think that there are levels, analogous to Piagetian<br />
developmental thresholds and possibly related to them, in the<br />
trajectory of learning to use software interfaces.</p>
<p>Level 0: I&#8217;ll only push one button.</p>
<p>Level 1: I&#8217;ll push a sequence of buttons, as long as they&#8217;re all visible<br />
and I don&#8217;t have to remember anything between presses. These people<br />
can do checklists.</p>
<p>Level 2: I&#8217;m willing to push as sequence of buttons in which later ones may<br />
not be visible until earlier ones have been pressed. These people<br />
will follow pull-down menus; it&#8217;s OK for the display to change as long<br />
as they can memorize the steps.</p>
<p>Level 3: I&#8217;m willing to use folders if they never change while I&#8217;m not looking.<br />
There can be hidden unchanging state, but nothing must ever<br />
happen out of sight. These people can handle an incremental replace<br />
with confirmation. They can use macros, but have no capability to<br />
cope with surprises other than by yelling for help.</p>
<p>Level 4: I&#8217;m willing to use metaphors to describe magic actions. A folder<br />
can be described by &#8220;These are all my local machines&#8221; or &#8220;these<br />
are all my print jobs&#8221; and is allowed to change out of sight in an<br />
unsurprising way. These people can handle global replace, but must<br />
examine the result to maintain confidence. These people will begin<br />
customizing their environment.</p>
<p>Level 5: I&#8217;m willing to use categories (generalize about nouns). I&#8217;m<br />
willing<br />
to recognize that all .doc files are alike, or all .jpg files are<br />
alike, and I have confidence there are sets of actions I can apply<br />
to a file I have never seen that will work because I know its type.<br />
(Late in this level knowledge begins to become articulate; these<br />
people are willing to give simple instructions over the phone or<br />
by email.)</p>
<p>Level 6: I&#8217;m willing to unpack metaphors into procedural steps. People at<br />
this level begin to be able to cope with surprises when the<br />
metaphor breaks, because they have a representation of process.<br />
People at this level are ready to cope with the fact that HTML<br />
documents are made up of tags, and more generally with<br />
simple document markup.</p>
<p>Level 7: I&#8217;m willing to move between different representations of<br />
a document or piece of data. People at this level know that<br />
any one view of the data is not the same as the data, and lossless<br />
transformations no longer scare them. Multiple representations<br />
become more useful than confusing. At this level the idea of<br />
structural rather than presentation markup begins to make sense.</p>
<p>Level 8: I&#8217;m willing to package simple procedures I already understand.<br />
These people are willing to record a sequence of actions which<br />
they understand into a macro, as long as no decisions (conditionals)<br />
are involved. They begin to get comfortable with report generators.<br />
At advanced level 8 they may start to be willing to deal with<br />
simple SQL.</p>
<p>Level 9: I am willing to package procedures that make decisions, as long<br />
as I already understand them. At his level, people begin to cope<br />
with conditionals and loops, and also to deal with the idea of<br />
programming languages.</p>
<p>Level 10: I am willing to problem-solve at the procedural level, writing<br />
programs for tasks I don&#8217;t completely understand before<br />
developing them.</p>
<p>I&#8217;m thinking this scale might be useful in classifying interfaces and<br />
developing guidelines for not exceeding the pain threshold of an<br />
audience if we have some model of what their notion of acceptable<br />
cognitive load is.</p>
<p>(This is a spinoff from my book-in-progress, &#8220;The Art of Unix<br />
Programming&#8221;, but I don&#8217;t plan to put it in the book.)</p>
<p>Comments, reactions, and refinements welcome.</p>
<p><a href="http://enetation.co.uk/comments.php?user=esr&amp;commentid=94293671">Blogspot comments</a></p>