I was asked during an interview for an entry level coder position about how much I knew about design patterns.
Actually, the interviewer brought out a hard-cover book (Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides) and asked me, enthusiastically, if I had read it.
I know this is a classic programmer text, I recognized the book of course. I had to answer "no, I haven't read it," and when he continued to ask me about specific patterns that I should at least be familiar with, I drew a blank.
I should have at least cited the Observer pattern, which I was very familiar with and have used in many of my own programs (in writing Java Swing GUI applications where you have to define a Listener to react to a button press, for example). But I didn't know then the actual name of a pattern like this.
My specific question is:
Are design patterns only useful to know in large-scale, "enterprise"-type applications, where you have to communicate with a large team of programmers? I understand one of the benefits of knowing pattern names is that its a good way to communicate high level ideas to other programmers.
To be more precise, are design patterns useful mainly in the problem domain of large scale web-application development, working on a large (say 10+ members) team?