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>
