Patterns are ways to describe best practices, good designs, and capture experience in a way that it is possible for others to reuse this experience.
I learned about patterns while doing software development. Typically, when you document a pattern, you identify four key elements:
Pattern Name - this is a handle used to describe a problem, its solution, and consequences in a word or two. Naming a pattern immediately increases the shared vocabulary
Problem - describes when to apply the pattern.
Solution - describes the elements that make up the design, their relationships, responsibilities, and collaborations. The solution doesn't describe a particular concrete design or implementation, becuase a pattern is like a template that can be applied in many different situations
Consequences - results and trade-offs of applying the pattern.
As patterns emerge, you can even classify or categorize the patterns. Some categories of software patterns include:
Fundamental - these are the patterns that are most common, used most frequently, and even become the foundation for other patterns
Creational Patterns - provide guidance for the creation of objects. The most commonly used creational pattern is the Factory Pattern (and its related patterns Abstract Factory & Factory Method) - the name alone suggests something being created.
Behaviroal Patterns - used to manage, organize, and/or combine behavior
I think the idea of patterns can be applied to many other domains. Writing, for example. There are obvious categories, Fiction, Non-Fiction, etc.
The writing pattern could help you organize your thoughts and provide a template for writing your story:
- Introduce Concept
Product Usage Patterns could help you align customer service to more closely reflect the usage of your products
I love the thought of applying patterns outside the software development world.
Have you ever used patterns? If so, in what context? Can you think of a specific example where patterns might apply?