+ Introduction: I strongly think that there is a huge difference between making a UI Beginner Friendly and user-friendly. A user who is going to use a software as he's or her full time job will not care if it takes one day or two weeks to learn a software, if the software is more effective once you have learned it. On the other hand a UI for a web site or in installation software will not be used many times and it is therefor important that the user can understand it directly. I am almost only interested in designing UIs for the first mentioned group, because I my self is a professional user and I want to require my user to have to learn new things and read documentation to use it. This allows me to innovate and create things that are radically different form what you are used to. If you like me want to use software that is truly innovative you must accept that you have to learn new things and that it may feel strange in the beginning. + Attention sorting: First of all lets talk about your brain, your brain computes different things in a specific order: Motion Color Shape Text This is also how you should order your interface, have the most important things moving, the fairly important things in signal colors, the not so important using icons, and the least important indicators using text. + Modes and "feed before": Having different modes is something i think you should avoid at all cost, and the modes you have should only be active as long as you keep a button pressed. This avoids the how-do-I-get-out-of-this-mode problems, and it also saves a lot of mode switching time. If possible the user should be able to "just do it". you should never have to tell the software "I'm now going to start deleting" you should just start deleting by performing specific action. This can sometimes be a problem, since it makes it easy to do the wrong thing. There for I thing you shouldn't just have feedback you should also have "feed before", some type of indicator that pops up and tells you "if you click now this will happen" + Placing Functionality: So where do you place your functionality? this depends on how important the function is. The most used actions should always be easy accessed (duh!). But there are a number of places to place functionality. My favorite is always to have the interface embedded in the data, if you want to modify a specific peace of your data that is where the UI should be, this keeps you focused on what you are actually creating instead of looking around in menus. This is why i am such a huge fan of manipulators, or simply just adding handles to your data that you can grab hold of and do changes. As hard as this may be for some programmers to swallow, people are interested in using your software to do something not interested in your software. Does "I cant see the Words for all the word processor" ring a bell? + Bells and Whistles: On the other hand I am not among those that think that think that applications have to be dull, without colors, motion, effects and attention to detail. Most people are horrified by the idea of an animated UI, but this is just because most people have used badly, for instance some UI requires the user to wait for an animation before they can perform further actions.... If unimportant thing is blinking and animating it will be annoying, but sometimes things are very important and should be slightly annoying because the user needs to pay attention to it. I believe that esthetically pleasing add reactive software is good, it inspires us and makes us feel like we are in control. There is one thing i have to warn against and that is to have an intrusive color scheme in an application where the user selects colors. I have experienced that artists will not only choose colors that match each other but also match the user interface of the application that created them.... + Easy clicks: The edges of the screen are usually very easy to reach and are therefor very suitable for quick access tools. I also like Pop-up menus because it allows them to be context sensitive (different menus appear depending on where you bring them up) but I prefer them to be direction based. If you have a list of options and place them in a list from top to bottom the user have to find the option in the list, but if the options are placed in different directions it is easier to find and remember it (The cut tool is in the upper left corner). I am also in favor of stokes and gestures although they can be hard to learn. Something i definitely think you should avoid is having timed interfaces (if you hold down the mouse for two seconds this action will be performed) because it limits the ability of the user to become faster then the user interface. Something I use is directional sliders. instead of moving a little dot to 25% of a slider, I just click on a area and drag to the left (3 O clock, one fourth of 12 hours). This is much faster and the user doesn't have to re-calibrate according to how where the little dot is, you can actually do it with your eyes closed. The users generally think spatially (that think I am looking for is left of the yellow thingy) so you should order your applications actions spatially and in relation to each other and have distinctly different features, like color shape and size to make them easy to find. + Philosophy: I always think you should have some sort of philosophy when you design your software , this may not be a a opinion just related to UIs but i think it is important. I think it is very good if you have a simple concept that a user can understand. The ideal case is if the two first pages of your Documentation makes the user "get it" and everything after that is following that rule. Classics is of course the UNIX concept of "Everything is a file", Or in HTML everything is done by tags, and even if you have to most fancy HTML tool in the world it helps to know a bit about what a tag is and some basics of how to write HTML manually. It makes the user understand what the application does, and makes it more predictable. Don't ever try to hide the the basics of the software, even though the user will almost only use high level functions to do fancy things, He or She will sooner or later want to do something by hand, just to have total control and then the app should let them! I even want to claim that this part of the interface is very important since once the user have to turn to doing something by hand it is usually something tedious. + Configuration: Once I meet Mac programmer that said: "Every option that a Application has is a failure, because the programmer was unable to make up his/her mind." I don't claim this to be true, but he had a point. People doesn't spend to much time configuring their software, it is tedious and boring. Making a user interface configurable is great, but it doesn't substitute a good interface, never assure that people will configure anything, "you can configure it to do that" is a bad answer to your users requests, not as bad as "you cant do that", but a lot closer then most people think. Configuration is often not very convenient, you switch computers, take work home, run multiple user interfaces, read manuals and tutorials that assumes that the software hasn't been heavily modified, you bring un new users form other companies or schools who are not used to the configs and so on. In the CG world this is very much an issue, You can find that companies who consists of 4-5 people can do a tight schedule tv spot in a week or so using software and technology that came out yesterday and sometimes are still in beta to do excellent work, while a large production house takes years to adopt a new software and technology because they are stuck in a configuration, a pipeline and whit artists who aren't responsible for technology and are therefore only using the interface that is presented to them by the technical people. There are however one type of configuration that I do like and that is when the user can "record" his/her actions and then repeat it. This means that the only configuration need is for the user to say "I want to be able to do this again faster later on". Many have applications have this feature but they are too often not general enough to be applicable all the times that you want to, so often you need to edit scripts to make this happen this easily. + Size and Windows: Windows is one of those things that people think that users care about. I prefer a single window or a full screen app. I also think that you can use the screen more aggressively, especially modal stuff like requests, color choosers and stuff like that. why cant they take up the hole screen? if I get up a "Do you want to save" requester on my full screen app, why is the buttons only 20 pixels large on my 1600*1200 screen? I have only two options to chose from why cant they be big enough to be easy to hit? You don't need to be able to see everything at once, what you need is to be able to quickly see what you want to see when you want to see it.