I am archiving older pieces I have written on other sites, making this the definitive home for all my work. This is one of several I am porting over from my GameDev.Net user journal. Enjoy!
"Blender sucks! That UI is absolutely braindead"
"You just haven't gotten it yet. Once you do, you'll appreciate a lot of the thought that went into it."
"Bullshit! Blender sucks, man!"
While half participating in yet another debate of the above sort, I remembered a comment from OK/Cancel about the concept of "mastery interfaces," UIs that facilitate expert actions but confound and befuddle the beginner. Such as the piano. One party (identities protected because of the strong negative reaction that one participant in particular tends to draw) was arguing that Wings 3D had a usable interface while the other was arguing that he had experienced much frustration with it. While I lacked (and will continue to lack for the forseeable future, as I have no use for pro-grade modelers, not being an artist myself) experience with Wings 3D, I eventually had to concede that both parties could be right. So I stepped up and said so.
You can imagine the sort of incredulity that garnered. "Let me explain." An interface can be well-suited to persons already familiar with a set of conventions peculiar to a system or activity, but horrible for a beginner. Such interfaces are called mastery interfaces, and they allow a near-seamless transferrence of concept to reality/execution, be it playing the piano, modeling a complex subdivision mesh or otherwise. The problem is that applications are typically tightly bound to their user interfaces, such that mastery interfaces force an application to be viable for master use only. Worse, the prevalence of mastery interfaces in certain domains makes the learning curve steeper than it needs to be.
This is why we need introductory interfaces. Introductory interfaces, as the name suggests, are tuned to the beginner and provide a gentle transition into the arcana of a given subject domain. To many people, MilkShape 3D is a modeler with an introductory interface. Introductory interfaces complement mastery interfaces by eliminating the burden of "broad appeal," enabling a product to target a certain category of user.
But is it possible for an application to present both introductory and mastery interfaces? I say yes. The key, in my estimation, is to accept that certain functionality is master-grade only, and thus does not need to be exposed via the introductory interface. In fact, there is already a class of applications that does this (albeit with variable results, due to other factors): Linux GUI utilities. Typically built as front-ends to command-line tools, the better ones only expose core or most frequently used functionality in their UI, understanding that masters will drop down to the console anyway.
In fact, it can be argued that the CLI is the mastery complement to the introductory GUI, generally speaking. Certain operations (I/O redirection, for instance) will never be elegantly expressed in GUIs, so why bother? Expose core, single-step functionality in the GUI and leave the masters to manually express themselves via the CLI.
Returning to 3D modelers - particularly Blender and Wings 3D, since they're open source - the installation process' user profile setup (we assume that robust software is aware of the fact that multiple users may exist on a single system, and it consequently stores profile data separately for each user) queries for a "usage level" which determines which interface is first presented. As the introductory user becomes familiar, or if s/he searches the help for a certain functionality or appears to be hunting around the menus, the application can then mention the existence of the mastery UI and provide instructions on how to enable it. For the first several sessions there will be a fairly obvious "revert to introductory interface" menu option or such, after which "full mastery mode" is entered and the user is assumed to know what s/he is doing. No more prompting and/or assistants.
I know a lot of people would like to see mastery interfaces for Windows and other Microsoft products!