Patterns have been something of a buzzword for programmers. Programmers often have to deal with the same kinds of situations in their programming tasks. While the code itself may be novel and unique, the general pattern of use is often the same. You might think of patterns as “formalized tactics”; there are known ways of dealing with certain situations. As applied to programming, the original concept of “programming patterns” was taken from architecture.
As in programming, there are similar situations that occur again and again in GUI Design. The sites mentioned itemize several methods of interaction that are worth reviewing. I’ve grown up steeped in these conventions so I don’t really think about them, but there is insight to be gained from having a more formal palette of techniques spread before you.
On a side note, I can’t help but think that GUI Design Patterns are somehow a disservice, as people tend to superficially match the isolated task at hand to the nearest widget. The result is almost guaranteed to be bad. People also find it difficult to separate the appearance of the user interface (as in, “it looks cool”) from its usability. In practice, people can adapt more quickly to bad interfaces than good interfaces can be built, so the status quo of horrible software is maintained. Argh. There is almost always important context and workflow that exists in symbiosis with the software application.
GUI Designers could benefit from knowing a bit more about contemporary video game design. The best games are all about psychology and flow, though it’s easy to get distracted by the graphics technology.
The Joel book on User Interface Design appears to properly make this distinction, though I have yet to order it.