Just a random thought that popped into my head… it seems like a lot of products have that initial polish down pat but then end up failing once you really start to live with it. Case in point, my office phone. Yes, I can make phone calls, and yes the speakerphone in it actually works quite well for a portable phone. The problems come down to the stuff you don’t do everyday and thus forget how they work. Muting the phone for example requires pressing a series of 3 buttons (menu, down, select - I think). The problem is that doing anything with the menu key means there’s a good chance you will accidentally hang up on the person you are talking to due to the chiclet-like nature of the buttons and the fact that it doesn’t really stand out from the other “meta” face buttons on the phone.
If you used this feature everyday it would become second nature I’m sure - but I think the only people who would do that are receptionists (who have much better phones generally) or the people who made the phone. This problem seems to infect software UIs as well, but at least with software we can iterate our designs fairly easily.
It seems to me that a good way to create a UI from a scientific standpoint would be to start with a very basic and naive UI - one with all of the features display at once. Then let users play - and analyize the distribution of the use of the features. This would give you a glut of statistics about the features including the most important features and the most common grouping of the features (which ones were used with which other ones). From there it’s just a matter of changing the design accordingly.
I know Microsoft and others have tried this approach with their old “learning menus” from the office suite circa 2002 I believe - but I think their approach of putting those changes into the actual users hands was misguided. They were committing the common programmer sin of heaping the responsibility onto the user (Joel on Software has a great rant about this - I’ll see if I can dig it up later). Instead, the base setup for the software should be made to handle and work well for the vast majority of users. It’s hard work that requires a certain amount of dialing down of ones ego, but at least you don’t have to re-tool a factory to iterate the interface.