I was ranting recently about some stupid UI design decisions in a certain piece of CAD software.
There is, of course, no requirement that sophisticated, powerful tools be hard to figure out and use. A case in point is McNeel's Rhinoceros 3D, a popular CAD / modelling program based on NURBS mathematics.
Part of the beauty of this program is that it does not force you to use any particular user interface paradigm. Almost every command you can think of has a menu item, a toolbar button, and a command-line syntax.
On first start, the program provides three toolbars (four if you also have the Flamingo renderer) containing the bulk of the commonly used tools. You can also access these from the application menus or the command line.
The following four operations, then, are exactly equivalent:
- Surface > Edge Curves
- Alt, S, E
- Main toolbar > Button "Surface from 2, 3 or 4 edge curves"
- EdgeSrf (type on keyboard from anywhere in the interface)
This may sound redunant to some of you. I assure you, it is not. Different users, with different workflows, will prefer to access the commands in different ways. Forcing a user into one particular UI paradigm that does not fit their workflow is a recipe for anger and frustration. (Witness the ribbon in Excel 2007/2010; some folks eventually got used to the new design, but others are still cursing the thing for spontaneously moving their tools around in the middle of a complex operation.)
But back to Rhino. Part of what I love about this program is that, since it has a full command line interface, I can ditch the toolbar chrome in favour of more working space.
What makes this work is that the folks at McNeel used logical, intuitive names for most of the commands. Need a cylinder? Cylinder, and it'll prompt you through specifying the shape. Need a pipe to follow a path laid out by a curve? Pipe, click the curve, it'll prompt you for the diameters. Need to loft a surface from an array of curves? Loft. Whatever you think it should be called, that's probably what the developers called it. And, if you hesitate while typing a command, it'll offer the list of everything that matches what you've typed so far.
A different user, one who likes toolbar buttons, might keep the three default toolbars- or, perhaps, break out some of the 100 other toolbars to stay in specific places. (Most of these extra toolbars are displayed as fly-outs when you right-click a button to see related tools or options; all of them can be made to stay wherever you want them if you're so inclined.)
This isn't even terribly hard to program; you just have to set some standards in your development shop. Every function must be written with a command line interface, whose syntax follows the application's standard syntax. The toolbar buttons, and the menu items, are just macros that enter the corresponding command on the command line.
User interfaces for sophisticated, powerful programs do not have to suck. They can be intuitive and they can adapt to the personal preferences of users with different workflows. Rhino is proof of that.