Computer Program Design

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

6 comments:

Anonymous said...

Interesting, Ky. I recall you trying to teach me to use my beginner photoshop program and finally making me cheat sheets. Thanks for the patience. I wish I remembered all you taught me, but I just don't use it often enough.

Anonymous said...

Ever tried actually programming a GUI? (That's an honest question, since I don't know what your programming background is like.)

If not, then that'll make it clear... The people who design the GUi set it up as they do because it's simple. GUIs are incredibly hard to program. There are a few good languages out there for programming GUIs, but even the best languages take a LOT of effort for simplistic things. Maybe I just haven't seen a good one yet, but over the past few months I've been exposed to numerous languages, one of which is even designed for GUI programming and it's still a pain.

Now, I'm definitely not saying that your idea is a bad one. In fact, I think it's good for most people. Most users would love to have a system like how you discuss that allows them to slowly learn what they wish to. However, from a programmer's perspective, that's going to take a lot of effort. They'd probably insist on at least a few specified boundaries, as otherwise the frames get more and more complicated.
Even then, it could probably be done if you want it enough. There's probably even a program out there that is designed as you want. However, that's the first challenge. Most companies don't want to throw money at something to make it better - they just want it to be functional.

Personally, I don't mind Photoshop or the like. They all seem pretty useful to me, but that's coming from someone who spends most of their time these days typing stuff in at the command line or in a simple text editor. ;) In fact, I found Photoshop to be rather intuitive, and had very little problem picking it up. Sure, once I got to working with layers and vectors and all it got confusing (and fast), but that's because I didn't (and still don't) know much about vectors and layers and how they worked, not because of the interface.

I also like having lots of actions available by default, as when I start up a program for the first time, I usually have a reason for doing so and already have an idea of what to expect and what I have to do.
Not saying it can't be improved, but personally I don't have too much of an issue with most programs. Then again, I know I'm probably in the minority there.


As per forcing people to do "learn how to use things" before they're allowed to use them, I'd have to say that that should be optional at the very least (as in it can be turned off at the admin level at the very least). The professional community would not take kindly to being forced to do something like that when they already know what they're doing, but aren't on their computer for whatever reason (or are getting a new copy or whatever). Also, some users won't want to be forced to learn how it works. They may already have experience from other similar programs or the like, and therefore just want to do it.
Yes, it works great in video games, but I don't see it working as well in software programs. By all means, let it be an option, as lots of people will love it. However, many others will find it annoying.

In regards to saving the user interface to a file, that's already done. That way when you move buttons around or customize toolbars or the like, they're saved.



Anyways, interesting idea. What brought this on?


Steven

Kyler said...

I have experience with Basic programming, and some other types of programming. I do accept that it is "hard", but once things have been figured out in a program, it becomes much easier to reproduce afterwards.

This process of learning programs only needs to happen once for any program you use, and it would be easy to allow professionals access to what they need.

I realize that people such as you and I, have little difficulty picking up new programs. However, I have been in many situations where I am with people who are learning these complicated programs for the first time, and it really is just a mess to watch them learn. It is never an issue of understanding what specific tools do, it is always an issue of finding tools and remembering which tools do what.

Also, I find myself looking for words and menus from time to time. Also, in 3d programs, I see no reason why we are still limited to manually controlled views and really horrible graphics. As in video games, it would be nice to have a well designed computer controlled camera, and better looking graphics.

This subject has been brewing around ever since I played through the game Portals with the commentary on. The greatest difficulty the designers of that game faced was teaching the player the game mechanics of a portal. The design team made hundreds or thousands of decisions which helped players win the game. That game cost roughly 20 dollars when included in the Orange Box. Why should programs that cost 2000$ deserve less polish in teaching the user how to use them?

kyler

Erucolindo said...

Hmm...interesting proposals from both of you. I must admit though, that it worries me that one of the "potential problems" is that you see "it will be lots of work for the developer" as a problem.

The design professions (from engineering to architecture) are of necessity moving towards something called "integrated design." This is a system where all levels involved (say in a building, mechanical, engineering, architectural, industrial design, environmental science, sociologists, psychologists) are working together from the beginning of a project.

I'm sure you think that this seems obvious...but it is still the exception rather than the norm.

NO design enterprise (software or otherwise) will be viable in the current and future marketplace if they are not capable of producing the kinds of products described above. "Too complicated or too hard..." doesn't fly with any of the best design enterprises these days - that kind of status quo thinking is really not up to date.

Mory said...

No.

Absolutely not.

You're taking principles from art and entertainment, and trying to apply them to tools. It's like trying to write an encyclopedia in three acts.

Let's say I've just installed a word processor, and I need to make a table. First imagine a standard word processor, where there are hundreds of options hidden behind menus. First I'll look around for something marked "table", but if I don't find it I'll consult the help file, search for "table" and in thirty seconds know exactly what I need to know. And I'll make a table.

Now let's say I install your word processor, carefully crafted to give a satisfying learning curve. I'll look around for a table button, and not see one. So I'll start poking and prodding, and the program will gently reassure me: "Don't do that. You don't understand the basics yet. Here, look how you use italics!"

Just, no.

Kyler said...

I agree that for your example of a word processor, this type of design is over bearing. But that is simply because most people already know what can be done in a word processor.

It is a different situation however when trying to introduce people to completely new realms of knowledge like 3d animation programs. When the user has little to no prior knowledge of the program, I think my ideas still stand.