Disable All You Want

I’m not one to disagree with Joel, but I actually think I will disagree (sort-of) with this post.

Personally, I have no problem with disabling menu items (graying them out), and I have no problem with showing / hiding items in context sensitive areas of your UI (be they right click menus or elsewhere). I think disabled items give a quick indication of what you can and can’t do given your location current context. How horrible would it be to think you’re inside a table and click something to format it, only to get an error saying “You can’t do that because you’re not in a table,” then you click OK, then you click in the table, then you go back to your menu. That extra error box plus OK click can get real annoying real fast, whereas grey text tells you quickly that you’re in the wrong place. Hiding items is fine too, so long as you’re hiding the items in areas the user understand are context sensitive. Right click is always assumed to be context sensitive, but properties windows, and certain toolbars could benefit significantly from some amount of context sensitivity.

I will say, though, that I absolutely agree that a disabled menu item should always be able to display a descriptive reason for why its disabled. In addition, hidden items should only be hidden from areas that are known to be context sensitive. If an item is hidden, a user should still be able to find it in the menu, find that it’s disabled, and get a reason why. I think a tool-tip or similar is sufficient for when you see the grayed out item but have no idea why it’s disabled, but of course in the desktop application world support for that can be fairly limited (last I checked) which is why almost no companies do it, which is what is irking Joel (I think).

So in conclusion, hide and disable all you want because I think even the general user can work faster seeing disabled menu items and hiding unnecessary commands. Just be sure that when you hide or disable, the user can find out quickly why you’ve hidden or disabled the item. That assertion’s nothing new, though. Chris Crawford called for that in his self-published Understanding Interactivity some 8 years ago.

2 Responses to “Disable All You Want” »»

  1. Comment by Bill | 07/16/08 at 8:42 pm

    I have to say that my gut reaction was to agree with you, Jeff, but I think I can see the reasoning behind Joel’s assertion.

    I think that Joel is implicitly espousing the idea that we need to move away from the notion that our software users have a complete mental model of the problem space the software addresses. If someone knows the problem space sufficiently wel, then they realize that the greyed out option is an indicator that then need to complete an initial step (that presumably they know how to do.)

    Joel’s stance is that this is no longer the case for the majority of users, and so he is suggesting using the desire to do something as a ‘teachable moment.;

  2. Comment by Jeff | 07/17/08 at 8:16 am

    If a person doesn’t have a full mental model of the problem space, I think that leaving all menus enabled is just a temporary fix. Sure, the first time they click on it, they get that “teachable moment” but from then on it’s an annoyance. You can still have that teachable moment with a disabled menu item, PROVIDED that there’s a pop-up or explanation available to you.

    IMO, the problem is not the disabled menu item, which is a quick indicator of whether an option is available to you, but lack of explanation on why an item is hidden or disabled. I feel Windows is partially to blame for that one, since built in support for doing that is spotty at best.

Leave a Reply »»