When working on a website design, I often find that I am faced with very specific design challenges in much the same way that I am face with very specific code challenges when I am programming. The difference is that when I have a code-related problem, I can usually Google arround and find someone who was faced with a similar problem and see how they solved it. Their solution may not be the one I ultimately choose, but it is very helpful to me to see what they ended up doing.
This information comes from a variety of sources. Sometimes it is written up in a blog post, or described in a screen cast. Other times it is the answer to a question on Stack Overflow, a post to a mailing list, a bug report, or a patch. Perhaps the most common case of all is that the solution is found embedded in the source code of an open-source project.
At any rate, between searching for specific method names, technical terms, and error messages, bouncing back and forth between web search and code search, I can usually find someone, somewhere who has had the same problem as me. Sometimes they have a solution, and sometimes they don’t, but it is almost always worthwhile to find that person, and hear what they have to say.
But when I find myself facing a specific design problem, I don’t know where to go. I know that other people have done similar things. What do you do, for instance, when you need to design a form on a 960 pixel wide layout, and the form has logical sections, and you don’t want to use boxes, because they are lame, and you’ve used them enough in the past to last your whole lifetime as a designer? I know people have done it. I’m sure I’ve seen a dozen sites that did it. But I don’t know what they are. It’s not even like it’s really a conundrum, but it would benefit a budding designer to see a few real examples.
I imagine that there are some instances where I simply don’t know the right terms to search on. But I hardly know where to turn to learn them. I have certainly learned some terminology related to design principles, but it is not very useful for describing specific scenarios. When I do programming-related searches, I often come to progressively better search terms as the information I read teaches me new terminology. I cannot even get started down this path when I go looking for design help.
In that design is not nearly as inherently textual as programming, most of the information that I am looking for does not exist in a searchable format at all. While the designs may be implemented in code, most of them do not have their code indexed, and searching the code would not yield useful results anyway.
I imagine the only possible solution would be to build a library of specific, curated examples, using annotated screenshots. I have tried to do exactly this using the wonderful Little Snapper, but this doesn’t usually help me when I’m stuck, because the pages I have captured an annotated in it are there because of specific things I noticed about them—design strategies that I have already noticed, and to some degree, absorbed. When I really need help, I need to notice things that I haven’t noticed before.
I know that there is the Ember social network attached to the Little Snapper, and I have done a little browsing on it, but it’s categories are very broad, and it seems more geared toward general inspiration rather than catalogueing specific solutions to specific scenarios. It seems to me that you would have to build some kind of glossary or ontology to describe the patterns exemplified in the gallery (i.e. a pattern language) if wanted them to be easily searchable.
I wonder how much of this language actually exists, and how much of it would have to be invented for this problem to ever be really solved. Programming is technical of necessity, but design is only technical when you decide you want to make it technical. In other words, programming techniques (I’m thinking more of specific algorithms and constructs rather than “design patterns”) by their nature end up having names, becuase they become the actual constructs of the code, which is textual.
Also, programmers often work together on teams, and often work remotely, so it is a necessity that they be able to talk very specifically about their approaches and implementations, whereas designers often work alone, or together in person, and can fare much better with vague terminology. Furthermore, the nature and behavior of a program can be very subtle and involved, whereas a design, though it may be subtle, is largely self-evident because it is visual, so that description may not be necessary at all.
So it seems to me that creating a pattern language for web design, with an accompanying gallery of examples, would be a boon to designers everywhere, especially those with limited experience. It also seems that this would be an enormous undertaking, because much of the necessary terminology does not seem to really exist.
I would be very pleased to hear how other designers find examples of other people’s work, and generally where they go for help when they find themselves in what is, for them, uncharted territory.