A lot of current software literature is based on experiences with traditional applications like control systems, client-server applications, and so on. While Web applications differ from thesefor example, most traditional applications maintain state while many Web applications do notthe lessons we can learn from the literature are still powerful. One of the most interesting approaches pointed out by many recent papers is the notion of patterns. To paraphrase, in the software world, patterns are descriptions of solutions to recurring problems that you can apply in various contexts. In the 1980s, Kent Beck and Ward Cunningham applied Alexander's patterns to object-oriented design.
Patterns pass knowledge from experts to other practitioners.
They distill experience into a form that can be applied easily to new manifestations of familiar problems. Patterns are not algorithms, reusable code, or data structures. They are descriptions of objects and collaborations that you can apply in a specific context. Patterns encourage modular thinking. When you use them, you isolate specific aspects of the problem you're solving, and this analysis lends itself well to developing portions of your applications as classes or modules.