TextMate’s commit window (used by Subversion and other SCM bundles) has a commit button and a frequent question has been, if there is a way to reach that button from the keyboard.
There is, and it’s achieved by pressing the enter key. This is of course mentioned in the documentation but since few read this, I decided to add the enter glyph (⌅) to the button text.
I wrote the following as commit message:
add the enter glyph (⌅) to the Commit button — granted, many users will not know what this is, or how to reach it on a laptop keyboard, but now at least there is a cue that it has a keyboard shortcut
To which James Edward Gray II replied:
Enter is pretty easy to spot on my MacBook Pro keyboard. It's clearly marked and right next to the spacebar. Just FYI.
So logically the user should have no problem figuring out what this glyph represent, and yet I still get the question on a sub-weekly basis. This is what I find so interesting about HCI.
When people argue and theorize, they are mostly being logical. But in day to day life people use heuristics and follow their instincts.
Good designers understand this, that you need to cater to the working patterns of humans, and they understand what these working patterns are.
Programmers generally understand logic, this is after all their specialty. A bad situation arise when programmers design systems which they do not themselves use, because logic often plays only a secondary role in human interfaces.
I learned this the hard way myself as part of an image processing course I took. We needed a way to experimentally apply various filters to a set of images and therefore created a GUI which showed the list of filters as buttons next to the loaded image.
Since it took several minutes to process an image, we added a New From Selection which opened the selection as a new window, so that we could work with just this subset.
Opening a new window was better than running the filter in-place on the selection, as that could cause optical illusions by keeping the unfiltered image as the background. It was also the much simpler thing to implement.
But boy did we make a mistake with this “design” — logically it is just one extra mouse click, the New From Selection button, but as I remember it, we forgot to select that action each and every time. The penalty was having to wait several minutes for the transformation to complete, this was running under AmigaOS so killing a process was not an option.
You would think that two bright computer science students would be able to learn to click that button before applying a filter. Having to repeatedly pay the price of waiting several minutes when forgetting it, should provide some extra incentive to learn it. But no. Even after having used this program more or less continuously for a week, we still made the same mistake from time to time.
The lesson here is that when you observe something used the wrong way, you can rarely document how it should be used and expect the problem to be fixed, and you can much less argue theoretically, using logic, about how the user will interact with a system.