A language is a system of symbols and rules to convey ideas and information. We rely on natural languages like English, Spanish, and Swahili to communicate with one another. We use artificial languages like SQL, Perl, and Java to specify instructions and behavior. These language types have much in common, but they differ with respect to rules. Artificial languages are planned and constructed by an individual or group. Their vocabularies and syntax are precisely defined. In contrast, natural languages emerge and evolve in unpremeditated fashion. They're spoken before they're written and only later do we derive the rules (like "i" before "e" except after "c"), which are riddled with weird exceptions because they're not really rules at all. In fact, "patterns" is a better word. Patterns allow for emergence, evolution, and imperfection. We can detect patterns and adapt them to our needs. They are free of charge and subject to change. And yet, access does not ensure success. Eloquence requires sensitivity to structure and situation. How do our patterns work together within specific contexts? And which patterns are we missing?
These are the tough questions we often ignore. While Christopher Alexander is most famous for his patterns, he's the first to point out their limits. He notes, "The links between the patterns are almost as much a part of the language as the patterns themselves." He argues that how we put the patterns together makes all the difference:
"The difference between prose and poetry is not that different languages are used, but that the same language is used differently. In an ordinary English sentence, each word has one meaning, and the sentence too, has one simple meaning. In a poem, the meaning is far more dense. Each word carries several meanings; and the sentence as a whole carries an enormous density of interlocking meanings, which together illuminate the whole."[13]
Finally, Alexander warns of the dangers of language by invoking the linguistic relativity of the Whorf hypothesis—the idea that language shapes (and constrains) thought. To avoid limiting the solution space, we must give our language sufficient expressive power. Even then, when faced with new problems, we must be ready to change the language or leave it behind. As Alexander concludes, "This ageless character has nothing, in the end, to do with languages. The language, and the processes which stem from it, merely release the fundamental order which is native to us." The timeless way and the quality without a name flow naturally from observing and responding to human behavior within an environmental context. The language is a map, but empathy is the key.
As we study the patterns of search, we'd do well to heed these lessons from disciplines more storied than ours. After all, the design of search is a new and rapidly evolving practice. We're still working on the basic alphabet, even as we aspire to the poetry of language. We design applications that work beautifully, but then struggle to repeat our success. Getting the design right and the right design often feels like trying to catch lightning in a bottle. That's because all too often we don't understand why the design works. We search for solutions by trial and error. It's a long, risky process and sometimes there's no alternative, but often there is a better, more timeless way.
In this chapter, we'll survey 10 patterns that have emerged as repeatable solutions to common problems. Simply identifying and describing each pattern has value, but we won't stop there. We'll explore how each pattern relates to others and which contexts are most suitable to which patterns. Most importantly, we'll ask why. Why does this pattern work? Why is this a common problem? Why have we selected this solution? In this final question, we sow the seeds of innovation. Can we escape the limits of existing tools and templates? Is there a better way? Answering this question may require modifying the fundamental system of symbols and patterns that we use to communicate our ideas. After all, as the architect said, "The design of the garden lies within the language."
The autocomplete design pattern is a good place to start. As users type into a text entry box, suggestions appear automatically. It's a pattern that first emerged within the Help functions of desktop applications. This solution solves several very common problems. First, typing takes time. Second, users can't spell well. Third, we're often at a loss for words. We simply don't know or can't remember the right terms. Since these problems are portable, it was only a matter of time before the pattern spread. Autocomplete is now a familiar fixture across desktop, web, and mobile platforms (Figure 4-1).
A major prerequisite of autocomplete is a source of data for suggestions. Classic desktop applications rely on an alphabetical index of help topics. Google draws from a user's personal search history and from the collective search behavior of many users (Figure 4-2). Firefox (also shown in Figure 4-2) taps browsing history and bookmarks. Yahoo! steps beyond autocomplete to autosuggest, shown in Figure 4-3 by tapping query reformulation data to recommend related queries that need not include the original search term.
Autosuggest can help users to pivot by highlighting alternate concepts and relevant verticals. It's worth noting that while autocomplete and autosuggest are distinct concepts, most applications blend them together for a small footprint. Consequently, in this book, we've bundled both under the autocomplete pattern.
A pioneer in this area, Yahoo! has also experimented with visual autocomplete, shown in Figure 4-4. Sometimes users are able to clarify better with an image than a word.
Many websites, such as Apple.com, draw from their product catalogs to suggest Best Bets rather than popular queries, allowing users to skip search and go directly to their destination. Reference sites like Answers.com, shown in Figure 4-5 draw upon a structured database to support query disambiguation, helping users to clarify before they search.
On the mobile platform, autocomplete is clearly a natural. Small, shaky keyboards are not conducive to text entry, so Google and Yahoo! work overtime to recall past searches, suggest common queries, and recommend popular destinations, all before we've typed the first word. Of course, autocomplete isn't the only solution to this common problem—both Google and Yahoo! support mobile voice search. We can't limit ourselves to refinement and continuous improvement. We should also strive to innovate with novel approaches and complementary solutions. We must think outside the box.
For instance, autocomplete isn't only about typing and spelling. Suggestions help us when we're not sure what to seek. On websites, the information architecture provides users with structural and semantic clues that precede and inform the search. Similarly, in mobile applications, we use categories and icons to invite users to explore with a click. In this way, browse complements search by getting folks started and helping them learn what to seek.
In summary, autocomplete is a flexible pattern that works across multiple platforms. And, it's fairly discrete. It can coexist with or function independently of other patterns.
That said, autocomplete can draw suggestions from a Best Bets database and may leverage algorithms from the best first pattern. Autocomplete can also work well with scoped search and personalized search, since it's easier to make good suggestions when the scope is limited and when we have insight into searcher behavior and intent. However, as Figure 4-9 shows, organizations don't always tune suggestions to a specific category. It's unlikely that "kerosene heater" is a popular query among users looking for books.