Oftentimes when designing applications, certain functionality needs to be present in some situations but not in others. The traditional way of dealing with this on the desktop is to enable the controls that provide access to that functionality when it is available and to disable them when it is not. For example, consider the following application snippet where the “Merge” function only applies when the user has selected two records.
Unfortunately, disabling controls without explanation is often a pathway to confusing your users. The problem is that disabling a control does not, by itself, provide the user with any indication of why the control is disabled. It may seem obvious to us, the system’s designers/developers, but to a new user experimenting with the application’s functions the reason the control is disabled may be quite opaque, especially if the function is far away from the means of enabling it (e.g., with application menu items). Time and again in user testing, I’ve watched participants fumble when a function they were expecting to be able to perform is inexplicably disabled.
Continue reading →