Design Patterns For User Interfaces
We're working hard the next version of the Geocortex Essentials installer and it is progressing really well. We're building a reusable installer framework that will make it easy to recreate not only the Essentials installer can be used for future Latitude products as well.
An important part of our installation framework is a post install step - an application that is run after the program is installed so that the user is able to configure various aspects of the newly installed application. The post install step is mostly user interface - the one thing that I claim complete incompetence at. It's not that I don't enjoy working on UI but there are so many others that are better at it than I am. I've always felt that it is important to bloom where you're planted. My roots are firmly planted firmly in server-side dirt.
I've had the pleasure of working with a very good, technically competent graphic artist at Latitude but not as much as I'd like to. Like all good people, he is about 150 percent over committed and not always available, no matter how much I beg. When I do get to work with him, he always makes me look really good. My question up until today has been "What do I do when he is not available?". I think I found the answer in the form of an excellent book on UI design called "Designing Interfaces" by Jenifer Tidwell.
The content in "Designing Interfaces" is presented in a format very similar to the seminal book on Object Oriented Design Patterns by Gamma, Helm, Johnson and Vlsside. Readers who are programmers will immediately appreciate this approach. For those of you not familiar with design patterns, a design pattern is a reusable solution to a commonly occurring problem. One example of a UI design pattern is "One-Window Drilldown" which shows how to allow easy navigation within your application when your screen real-estate is limited. Another is "Wizard" which explains how to help less than technical users complete a series of complicated steps with a high probability of success. An important aspect of this book is that it explains when not to use a UI design pattern even though you might be tempted to. For example, sophisticated users are often put off by "Wizard". Interestingly there is also very good coverage of patterns that we often use in GIS applications including "Data Tip" and "Local Zooming".
I just discovered this book the other day but I really believe that it will become an important resource on my bookshelf.