Standing on the Shoulders of Giants
Last year I was working on a fairly large windows forms project that was heavily reliant on displaying large sets of information in grids. Most of the functionality in the system was exposed through buttons that had to sit somewhere near a grid. There were multiple main forms, each built around a central grid that displayed contextual information to the user. Basically, the users were going to be spending a lot of time staring at grids, so we had to get them right.
Now, grid related operations tend to fall into two categories:
- Grid Level Operations, which are sort of like a class level, or static, actions that may act on a collection of items, add an item to the grid, or do something else that's not directly related to a particular item. Sometimes these can be married up with a means of multiple selection, perhaps through a secondary screen or allowing multiple selection on the original grid (although I tend to avoid the latter, as it has a whole bunch of other implications like not being able to change your selection if you prompt the user for additional inputs etc). e.g. You may be looking at a list of current orders and want to add another order. This would be a grid level operation.
- Item Level Operations , which act on a single currently selected item. e.g. If you have picked a particular order record from a grid you may want to edit that record. This would be an item level operation.
Other applications that the users were being exposed to simply shoved all the commands together in a seemingly random order and placed them above or below the grid. This created a huge usability problem, as users were unable to tell whether a button performed a grid or item level action. Will the delete button delete the current item, or will it prompt for a list of items that you may want to delete?
I hit upon a solution fairly quickly: split the commands up, placing grid level actions on the left hand side of the grid and item level actions on the right. It worked extremely well, and we got a lot of feedback from the users about how easy our application was. I was really proud of myself for about 5 minutes, then I realised that I had seen it before.
In fact, I had been staring at an application that implements that very design paradigm nearly every day for several years. What application was I subconsciously channeling? Why none other than Valve Software's Steam. So much for my great original idea.
At the very least it was a validation of my design choice. After all, if it's good enough for the company responsible for Portal then it's good enough for me.
It also proved that inspiration can come from the most unlikely sources. I try not to think of it as being doomed to never have an original idea; that's just way too depressing to comtemplate. It's more that our thoughts will always be informed by the past and our surroundings. Besides which, if it's been done before then there's a good chance that users will be familiar with the concept, and familarity in UI breeds comfort, not contempt.

