Is there a smooth path from novice to expert?
Will Wright once discussed how in game design there is a model of the game in the players mind and a model of the game in the rules and tools of the game itself and that the two need not be (indeed rarely are) the same, but ought to communicate nicely. Bret Victor recently used this idea to introduce a programming pedagogy Though no intended as a programming course, Victor’s article is a better online tutorial to programming than most I’ve seen. , which is what brought it to my attention. This idea jumped out at me as a valuable model in which to discuss my long-time interest in keyboard shortcuts, command lines, and high-powered programming editors.
Let us consider an example tool: a text editor or word processor. The main thing you do in such a tool is type. But the tool can do a lot of other things besides type. It can cut, copy, and paste blocks of text. It can move the text entry point around. It can highlight text, apply formatting, wrap text at window or page boundaries, zoom in and out, and so on. It is easy to imagine many possible things this tool might be able to do beyond what most do do: have multiple clipboards, swap between multiple “remembered” insertion points, distinguish between undo and history, complicated find-and-replace functionality, and on and on. We can make tools as complicated as we wish.
Now let us consider the mind of a user of such a tool. A novice user starts out with an understanding of typing. They quickly learn that there is such a thing as copy/paste and find/replace and that these and other tools can be accessed by clicking one of the things on the menu bar. As they gain experience, though, more enters their mind: the position of the keys to type with becomes automated, and so does the keyboard shortcuts for copying and pasting and other common tasks. They start to think in terms of “cut this block of text” and their mind supplies their fingers the right sequence of key combinations to navigate to, select, and cut the text. The mental model expands to fill the scope of the tool.
At the far extreme of this spectrum are editors like vim and emacs. These editors have so many functions that I know long-time emacs zealots (and yes, zealot is the right word) that don’t know half of what it can do. The flip side of these editors is that the novice needs to carry around several pages of help sheets to do even the simplest tasks.
Experts think differently than novices. This is true on many levels; one such level is how they think of their tools. A novice thinks of where to find labeled functionality, while an expert acquires the muscle memory to access that functionality directly. Novices benefit from a well-thought-out hierarchy of menus that help them find the right function without scanning thousands of options. Experts benefit from the flattest hierarchy possible so the steps required is minimized. Novices learn one way of doing something while experts learn a set of paths suited for different circumstances.
Expert knowledge cannot be gained all at once. Internalizing the structure that makes large tool make sense take time and effort. Expertness is not something we can give novices.
I often hear people talk about one tool or another being “simple” (i.e., good for novices) or “powerful” (i.e., good for experts). The usual implication is that no tool is both simple and powerful. And at some level this is justified: I typically don’t want my tool to duplicate the structure inside my head: I want it to pick up where I leave off. I am perfectly capable of dragging the mouse to the menu item I want but key strokes require so much less effort… and if the keystrokes will all fit in a flat space (e.g., Ctrl+X instead of Alt+E T) so much the better
Many tools today try to provide both a novice and expert view. You start off a novice with the mouse-and-menu approach where everything is neatly organized and labeled but you also have a vast array of key combinations to reach those options. Every time the novice goes to the edit menu and selects the cut option there’s the keyboard shortcut Ctrl+X sitting there waiting to be learned. Such tools try to be simple and powerful.
The most powerful tools often have trouble adopting this best-of-both approach. There are so many options the menus get overwhelming and in some there are different states the tool can enter each completely changing the behavior of all controls. Novices not only want simple structured ways to get to each function, they also don’t want to be able to accidentally invoke a function that they didn’t even know existed.
There is another difference between experts and novices that impacts tools. Some tools you just aren’t going to think about on your own. Until someone tells you you can hold the Ctrl keyAlt instead of Ctrl on OS X, if memory serves. while using the arrow keys to navigate by word or paragraph instead of letter or line you never even think to ask “what other kinds of arrow key meanings are there?” Experts not only store more of the structure of their tools in their heads, they also know of and know how to use many more functions overall.
Since I am not sure what is the right conclusion to draw from these observations, I leave this post for now as merely the observations above.