can be used to reduce the complexity of a system or design. This important concept has been co-opted for HumanComputerInteraction
design but should be considered any time a complex design of any type is approached. ProgressiveDisclosure
literally means to progressively disclose
Present (or disclose) the most basic information and options first and progressively uncover more complexity as the user becomes more sophisticated. This increase in sophistication could happen over seconds (such as an advanced options
button on a dialog) or years (such as the depth provided by a complex class library). Good ProgressiveDisclosure
helps the user to become more sophisticated and does not hold the user back with intimidating options or by making it difficult to advance.
Consider a ProgrammingLanguage
that is a joy to use at a basic level and encourages you, by igniting your curiousity, to discover more about it. The more sophisticated you become as a user, the more layers you find in the rich semantic of the language's design. This is progressive disclosure.
For a UserInterface
design, progressive disclosure asks that we present the most common choices to our users while initially hiding more complex choices or additional information. In this way you can design an interface that is easy for novice users to learn and includes the powerful features that advanced users require.
has its roots in education, presentations, and general communication. Consider a child, who as parents, we disclose more about the human reproductive system as the child grows in years and maturity. In this case, too much and too little actually have the same effect. Too little information over too long a period of time and we may cause an uneducated mistake to be made. Too much information over too short a period of time may have the same result since they will not have the sophistication to understand the information.
in software has some element of ProgressiveDisclosure
See also: GreatDesign
Thoughts on, for, or against ProgressiveDisclosure. These may be refactored into the DocumentMode portion of this page or "factored" into a new page presenting a different point of view.
The classic example of ProgressiveDisclosure
is showing key commands next to menu items in a pull-down menu system. The user can get to all the functionality via exploring the menus, thereby discovering the equivalent key commands. As the user becomes more experienced, they speed their work by using the keyboard for common commands in preference to the menus.
I find that ProgressiveDisclosure
done right is very helpful. A good example of ProgressiveDisclosure
done right is sub-menus. A bunch of related commands (hopefully advanced commands that most users won't need very often) can be grouped together in a sub-menu and only take up one slot in the parent menu instead of many. This makes the parent menu easy to understand.
done wrong is extremely annoying. A good example of ProgressiveDisclosure
done wrong is the way MicrosoftWord
(and other similar apps of the last few years) arbitrarily hide the most advanced functions from a menu, unless you give it the "show me more" hint. Why couldn't they simply move these things into a submenu marked "Advanced"? No, they leave them interspersed with the rest of the menu contents. After the "show me more" hint, the menu is larger and most importantly, most things in it have moved
to a location farther down. I would much rather they made intelligent use of sub-menus to group functionality than resort to randomly hiding a third of the functions. This mis-feature means about every third time I go up to the menu bar, I won't find the item I'm looking for at all, unless I remember that MicrosoftWord
considers it an "advanced" feature.
[Feel free to move this elsewhere:] A google.com search on "Progressive Disclosure" found several interesting pages, including: