4 Answers
4

Alan Cooper has written some great stuff about what skill level to direct your main design effort to. He calls it the perpetual intermediate, meaning that users' skill levels are often distributed like a Gauss curve:

Beginners will often have such basic questions as "What does the program do?", "How do I print?", "What is the program's scope?", but will often quickly move on to being Intermediates.

Intermediates will ask things like "How do I find facility X?", "What is this control for?" or "Oops! Can I undo?". Most users are likely to remain at this stage, as they don't have the time or will to move on to become an expert. Hence they stay perpetual intermediates.

Experts will do advanced things, such as automating tasks, use shortcuts, customizing the application for their needs.

The focus on designing for perpetual intermediates doesn't mean you should abandon your efforts to bring beginners up to speed, but you should always keep in mind that features that are helpful for beginners can as well be hurdles for intermediates and experts.

Some helpful design principles from his book "About Face" (quotes from chapter 3) include:

I wouldn't limit/hide features for new users; changing the interface while using a software has a great potential of confusing the user. Instead I'd try to make it easy to get familiar with your product. I see two possibilities:

Guided tour. Can work if users are committed to using your product.

Explain features on the go. E.g. whenever a function is used for the first time show a bubble or something with a hint: "Did you know you can do this and that with this item?". There should of course always be options to disable hints and to see all hints. Many iPhone games and other apps use this approach and I find it pretty helpful.

Also consider the situation where an experienced user explains something to a beginning user. It is very confusing to both of them if their interfaces don't have the same functionality
–
Jan FabryMay 27 '11 at 16:26

Progressive disclosure can be used to tailor the product to the user’s level of expertise. The paradoxical trick to making it work is to link the disclosure to the tasks the user wants to accomplish, not the expertise of the user. Users don’t wake up one day suddenly experts, nor do they suddenly need all your advanced features, nor do the vast majority of users want to become experts with your particular app (they’re just not that into you). Instead, users gradually become more knowledgeable as they learn each new feature in order to solve a specific problem related to the task at hand. Within a week or month they may encounter their first need for an advanced feature, but almost no users ever need all the advanced features. Different users encounter different problems so each learns a different set of advanced features, and even users with the same problems learn them in a different order.

Because of that, linking progressive disclosure to expertise won’t work.

Do not automatically start showing advanced features for long-time users. Just because user have used the app for a long time doesn’t mean they are ready or even need the particular features you’re about to show. Since users have different problems which they encounter in different sequences, you can’t predict what feature they’ll need to be exposed to next. Changing the UI on its own will just confuse users.

Do not have Basic and Advanced modes for the user to choose. Users don’t know if the problem they need to solve is something you consider “advanced,” so that just means they have to search two places for the feature that will help them. Have a Novice, Regular, Expert, and Guru mode, and now you have four places users need to search. Because users will encounter a need for their first advanced feature relatively early on, they inevitably need to go into Advanced while they’re still new, where they’ll be overwhelmed by all the advanced features they don’t need yet. The end result is no one is using Basic mode –they’re all in Advanced, and all lost, and you’ve defeated the purpose of progressive disclosure.

Instead, you want to group your features by task or problem and put them behind a label that makes it clear what problems they solve or tasks they support. It’s okay to have a few very basic groups exposed by default –these are the features and functions minimally needed to do anything with the product (e.g., Exit). When the user exposes a group and uses the controls within, then that group remains exposed indefinitely –it’s still open when the user returns to the product for a later session (unless the user manually closes it). In this way, the UI evolves to provide easy access to specifically the functions the users needs when they need them.

+1 for "Different users encounter different problems so each learns a different set of advanced features, and even users with the same problems learn them in a different order". It's so true.
–
James CrookMay 27 '11 at 15:15