I'm sure that most folks in the IT world have come across Joel Spolsky, and his blog, Joel on Software. Now Joel has some fantastic articles on recruitment, and I think he really knows his stuff when it comes to employment. However, every now and then he seems to have a delusions of grandeur and he thinks he's an expert on other things.
Today I went to Joel's blog to find some articles he's written on recruitment, and I saw his latest post, entitled Don't hide or disable menu items. I'm afraid I'm going to have to disagree with him. I don't think he really knows that much about UI design and usability. I think the reason he has managed to sell a book on it is because he's an experienced software writer, and he knows a little more than most other developers.
However, this blog post shows me he doesn't truly understand the user's perspective. When it comes to usability (and I'm no expert either), your interface is about managing expectations. If your menu item is there, and enabled, they expect it to work. Users don't expect a dialog to pop up and say that the feature the want doesn't work.
Now, I don't go for the disabled thing either, but it's a darn sight better than a dialog box. The best option is probably to hide the disabled menu item, thereby removing the user's expectation completely.
The best way to test your application's usability is to get a real pleb, sit them down in front of your app with a list of tasks to complete, and tell them to perform the tasks without telling them anything about your application. Then watch them, and note their difficulties and their successes.