They allow one to make use of the knowledge of past designers. Many design projects are confronted with similar problems that demand similar solutions. A design pattern is an abstraction of the best solutions for a particular class of problems. MVC or model view controller triad is a classical example of design pattern. It was introduced 1980 in the Smalltalk system.
The book that introduced the term design pattern to software development, Design Patterns: elements of reusable object-oriented software (commonly shortened to GoF) says:
In computer programming, the incredible gap in productivity between amateurs and experts is partly a difference in experience. Experts have weathered a variety of problems repeatedly. Typically experts end up with the same pattern to solve the problems as each other's. That is a design pattern. (GoF)
Each pattern comes up with the problem that happens again and again among programmers. Then it shows a typical solution for such a problem, if not the best solution, along with the trade-off, which is a convenient assessment to make prior to applying a potentially costly solution. It is important that patterns accompany a name because it makes possible to describe problems, solutions and talk about them with other folks.
For example the classical MVC pattern is actually a combination of three patterns listed below - Observer, Composite and Strategy. It is broadly used today.
Frequent problems that occur in programming are sometimes less commonly called anti-pattern.
See also amelioration pattern[?]
Life cycle patterns
Social / other