I believe patterns are one of the things that allow developers to stand on the shoulders of giants. The idea behind patterns in software development is to catalogue solutions to repeating problems. This allows developers to leverage the knowledge from great thinkers in the software community to avoid reinventing the wheel and focus on what is new.
In 1994, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides authored the book Design Patterns: Elements of Reusable Object-Oriented Software that led to the worldwide adoption of patterns. The book provided 23 patterns for object-oriented developers to create flexible, elegant, and reusable solutions. Since then, patterns have been observed in many areas of software development other than object-oriented designs, such as in architecture, infrastructure, and cloud.
Patterns are everywhere, if developers know what to look for. In the standard library for Java 17, the sort method on the List interface follows the Strategy design pattern. Routes and middlewares for ExpressJS, one of the most popular web frameworks for NodeJS, take after the Chain of Responsibility design pattern. WordPress, a widely used content management system, has an N-Tier architecture pattern. Developers can only start to recognize patterns instinctively when they have been exposed to many examples that highlight the characteristics of patterns.
In the next post, I will dive deeper into what design patterns are before I start producing examples.
