I would say that many computer programs are fairly well designed in terms of user interface. A good example is the new Microsoft Word 2007. They have stopped using the simple tool bar and have gone with more bigger buttons which I like. However, I use many other programs that are incredibly more complex. Photoshop, 3ds Studio Max, After Effects, Rhino, Premier Pro, and more. They are all different, and complicated in there own ways. I have tried to teach some people how to use them and it is a horrible experience.
Most programs begin with a blank space surrounded by about 50-100 buttons, about 10 different menus, each with 20 options and many many more sub options. To a new user, everything they see is most likely meaningless. Unless the new user actually has some sort of documentation to follow or a teacher to follow, they will probably just start pressing stuff. They might succeed in learning a few little things about the program, and then completely tire out, get overwhelmed, and give up.
And they have every right to. This method of presenting programs to users is pointless. It is only acceptable to the people who have lots of experience or who actually made the program. I propose that programs should be designed in a much different way.
I would say that programs should begin with only the blank space for the user to work in. Things should only be added when the user knows them and wants them. But if a users does not know anything then how can they add anything? Simple.
Give the users examples of what can be done. These examples should be part of the main interface, not buried in documentation. Once the users see examples and decides something they would like to do. The program should present the tools they will need. And explain the tool. AND test the user on the use of this tool. Before a user is allowed to actually use a tool, they should be able to demonstrate that they know how to use it. And then once they know the tool, they need to add it to their own interface. The user should decide exactly where the tool goes, what shortcuts they want assigned to it. I would not be averse to a suggestion system, where the program can suggest good spots for things, but the user needs to be involved in the process.
I bet most people know where all of the things in their kitchen is. They have a place for their tools. And there is a certain amount of similarity between kitchens, but you will only really know where the stuff is if you actually have to put it there.
This process of getting tools, learning and organizing tools continues until the user can do everything they need to know. When they need more tools, they just look at examples until they find what they need.
And this system of learning really isn't that different from what happens in all good video games. Video games force players to learn how to use the various functions of the game before they proceed. Good games make this process incredibly easy. If we compared programs like 3d studio max to a video game, 3d Studio Max is like throwing a player in the last level of a videogame, without instructions and expecting them to win.
Computer program design could be fun, they could even make it addictive. Many video games give players achievements when they get to a certain level of skill. I see no reason why computer users shouldn't be given a skill rating in different computer programs.
The final piece of this puzzle is that everybody will have completely different user interface setups. These could easily be saved in a file, or uploaded to the internet so that on any computer you can access your saved user interface.
Whoever has the program that is the most widely know by users, will always become the defacto standard, as long as the program in continuely supported and reasonably priced.
Kyler Kelly