Archive for December, 2013

UI Design - What Not To Do

Thursday, December 19th, 2013

I would never claim to be a good UI designer.  What I know of design is from personal use.  One principle that applies to both code and UI design is that consistency is king.  I often look to widely used commercial software as models for UI design.

Of course, one of the software packages I use most often is the Delphi IDE.  That’s why it’s particularly frustrating to see that when attempting to add a new unit test case to a project right clicking the project and choosing Add New -> Other… invokes the New Items Delphi dialog as shown below:

New Items Dialog invoked from Project Manager local Menu

New Items Dialog invoked from Project Manager local Menu

If I choose File -> New -> Other from the main menu I get the following New Items dialog, that does include the Unit Test folder in the tree, and provide a Test Case item.

New Items Dialog invoked from IDE Main Menu

New Items Dialog invoked from IDE Main Menu

Now considering the project I have selected in the project manager is a Unit Test project, one might think the Unit Test item should appear on the Add New local menu flyout.

Add New Flyout Menu

Add New Flyout Menu

I thought I could work around the initial limitations of the menu by Customizing it, but after adding the Test Case item using the Customize Dialog, it still doesn’t appear on the local menu.  It only appears on the main menu.

Customize New Menu Dialog

Customize New Menu Dialog

You might also notice the label “Default Application in Startup”.  To me this label is very confusing, so I invoked the help which indicates:

“If you want to set a default application type, drag the item that represents the application type from the center pane and drop it on this button. To remove the default application, click the button.”

Not only is the help incomplete, it is also inconsistent.  Within a single sentence it conveys conflicting semantics.  An application type is not the same as a default application.  It doesn’t mention anything to do with “Startup” as the label indicates.  In short, it does not sufficiently describe the functionality to which this option pertains.

I decided to experiment, so I changed the default application to a console application, closed all projects, closed the IDE, and re-launched it.  A new console application project was in fact created.  How this pertains to Menu customization is beyond me.  Personally, I don’t care if the IDE creates a new project because most of the time I am loading an existing project to work on it, or I explicitly create one.

In short, just as a poet carefully chooses his words, developers and documentation writers also have to do likewise.  In the case of documentation, it also makes more sense to be overly explicit to ensure the reader cannot misinterpret your prose.  Consistent UIs with logical grouping of functionality, meaningful hints and labels and discover-ability are also important in an age where users don’t read manuals, expecting software to be intuitive.  Of course it helps to dog food your own product, as if you were an actual end user…