Design is hard. A structural engineer must balance structural integrity and utilitarian function with the look and style of the building. Bridge engineers want to build strong and flexible bridges, capable of standing up to both fierce weather and the test of time; however, large bridges are points of interest for a city (or even a country) and must therefore be aesthetically pleasing and as unique as possible. Software engineers enjoy building specialized and interesting projects that allow people to achieve some meaningful goal, but often struggle to provide a user interface that is discoverable, easily understandable, and lives in the balance between not-enough-information and too-much-noise. In each case the problem can be resolved by bringing together a team of people who can marry pragmatic engineering with the needs of the users.
The success or failure of any software product can often be correlated, at least partially, to the degree of usability of the product. Usability is a sticky word in software development — it can refer many seemingly unrelated aspects of the product — but at the core it is a combination of three primary things: how easy the product is to learn, the visual appearance of the interface, and feature discoverability. Each of these is a very important part of the user experience, and each is exposed via the product documentation and the user interface of the product. However, since users don’t read documentation and even the best software is useless if nobody can figure out how to use it, the user interface becomes, quite possibly, the most important part of the software.
With this in mind it makes sense for a company to expend considerable resources to hire and train interface designers and to include them as a part of any development project. These individuals must somehow capture and visually represent the combination of what the software is actually capable of with what the user expects it to do, how they expect it to do it, and the way they expect it to look before, during, and after the procedure. Understanding and representing this conceptual model and then rendering it to the computer screen is the fundamental basis of interface design.
For us as software engineers, creating a good user interface design is usually an intractable problem. At the same time we tend to pooh-pooh interface designers; after all, how hard is it to throw some buttons and sliders up on the screen? However, the results speak for themselves: Many believe a primary reason that Linux distributions haven’t made significant inroads on the consumer desktop is because of their inattention to user interface design. Conversely, one of the biggest draws to Apple’s handheld offerings is the enormous (and largely successful) effort in that same area.
The truth is that user interface experts are an essential glue between engineers and users, and we should respect them as valued members of the team. Our product’s users will thank us.
Tags: book inspired post