Undo is the remarkable facility that lets us reverse a previous action. Simple and elegant, the feature is of obvious value. Yet, when we examine current implementations and uses of Undo from a Goal-Directed point of view, we see considerable variation in purpose and method. Undo is critically important for users, and it’s not quite as simple as it may appear at first glance. In this chapter, we explore different ways that users think about Undo and the different uses for such a facility.
Undo is the facility traditionally thought of as the rescuer of users in distress; the knight in shining armor; the cavalry galloping over the ridge; the superhero swooping in at the last second.
As a computational facility, Undo has no merit. Mistake-free as they are, computers have no need for Undo. Human beings, on the other hand, make mistakes all the time, and Undo is a facility that exists for their exclusive use. This singular observation should immediately tell us that of all the facilities in a program, Undo should be modeled the least like its construction methods — its implementation model — and the most like the user’s mental model.
Not only do humans make mistakes, they make mistakes as part of their everyday behavior. From the standpoint of a computer, a false start, a misdirected glance, a pause, a sneeze, some experimentation, an “uh,” and a “you know” are all errors. But from the standpoint of a person, they are perfectly normal. Human ...