For several years, I did usability testing on CAD-style software that was full of legacy code, some of which preceded Windows 98.
Some of that legacy code dealt with CAD objects that displayed on screen. To work with these objects, users had a choice of menu commands and toolbar buttons, supplemented by dialog boxes. For example, to move an object, users could not simply click and drag it; they would choose a command, click the object, and then, in a dialog box, enter the distance to move the object.
That’s the way CAD programs worked when that legacy code was originally written.
Over the years, during my usability testing of various features, I noticed a growing trend toward direct manipulation. That is, to work with an object, users would try to click it or drag it. They would do this without thinking. Even long-time users, faced with a new feature (studies from 2005-2006), would try direct manipulation first:
- 100% of the test subjects clicked a cube, trying to select it.
- 100% of the test subjects dragged a point or line, trying to move it.
- 100% of the test subjects clicked in the window, trying to create a point.
- 100% dragged across points, trying to select them.
But the new features were built on the legacy code, so had the command-driven interaction style. A simple click on the object was usually a dead end for users.
And the users would say: “Darn,” and then look for another vector—another pathway—to complete the task.
The reasons we didn’t provide direct manipulation:
- “Our users are used to the way it is now.” Clearly, usability-test results negated that argument. Users are not so accustomed to old-style interaction, because their first instinct for new CAD tasks in an existing product was direct manipulation.
- “There’s not enough bang for the buck” because the opportunity cost (the cost of skipping other possible projects) was deemed too great. It’s hard to argue with this, as a usability analyst. The company opted for more features, and may have increased its risk of being leapfrogged by the competition, as discussed in an earlier blog.