When we, the more computer-savvy users of the world, dive into a new application, we tend to learn everything we can as quickly as possible, hunting through all the nooks and crannies to uncover features and find out how the application stands up to others we've used. We want to see how far we can push the application. We strive to become experts.
Other people don't do this. They get up to speed just enough to become productive with the application, and they stay at this level until there's a compelling reason to learn more. Usually, there is no compelling reason.
Alan Cooper points out in The Inmates Are Running the Asylum that the skill level of users doesn't break down quite as neatly as we usually think, into beginner, intermediate, and expert. First of all, most users are not experts. In fact, only a very small percentage of users ever extend their skills within an application beyond that of an intermediate user. Secondly, beginners tend to quickly learn what they need to know to use an application, stepping forward at great speed into the land of what Cooper calls "perpetual intermediates."
What this means is that when we design for beginners and/or experts, we're usually designing for the wrong crowd. The intermediate users are by far the largest group.
Even when an intermediate user does become an expert, it's often for a very short period of time, when the application being used is particularly important for a certain project or task where the user has to spend a substantial amount of time using it, and therefore learns to use it with greater proficiency.
Focusing on the features intermediate users want and need means improving usability all around by leaving out many of the more obscure features that take a long time to create and learn. Building less also translates to shorter time lines, so we can get applications to market sooner and spend less money doing it. (Isn't it nice, by the way, how well the concepts of improving usability and getting to market quickly work together? It's ironic, but often the less time you spend building an application, the better it is.)
Along the way, however, we have to remember to teach our future intermediate users how to use our applications, or they'll never become intermediates. We also have to remember that since we're designing for intermediates, continually shoving beginner-level tools in their way will annoy them in the long run.
To satisfy both goals, we need to offer up some sacrificial lambs, so to speak. That is, we need to implement some tools that stick around long enough to help users learn what they need to know, but then disappear once their purpose has been served. We also need to make smart decisions about which features to put up front and which ones to tuck away in the back. We need to inject instructive elements into interfaces that help new users and serve as reminders to intermediate users. Finally, we need to provide help documentation for the users who will eventually read it, and instructive hints throughout the application so everyone can be productive without a lot of hassle.