Published: May 02, 2020
When it comes to software architectures, I always view it as some sort of dark arts that I won't be touching it. Due to the possibility of me writing it for a project is not something I would "enjoy" doing it. Plus for software engineering modules that I took is usually a superficial topic of more of an academic nature than a real-world implication for it. I would always pick real-world experience over academic at any time of the day.
My perspective changed, when I had some senior developers that I am with and trust are recommending reading design patterns. As a form of big picture overview and a toolkit for communication when designing a system architecture when your building software that had real-world implications.
Design patterns in layman term are standard templates or mental models used for designing software systems that are observed from software built in the real world.
These templates are used to speed up the creation of an architecture of software systems. Which require extensive knowledge and understanding of the intricacies. For each piece of the component to form the overall system.
This is drawn heavily from the architecture with tons of research and foundation as a form of imparting knowledge. In Architectural style for constructing buildings in similar architectural styles.
The reason, you might want to learn it is that software systems are increasingly becoming more complex and abstracted. Therefore it makes sense to make it simple to understand and implement.
Learning it allows you to built upon best practices of what is used as part of the consideration when building, transforming or maintaining a software system. For communication in solving a problem with a particular use case in mind that is technology agnostic.
In avoiding mistakes like missing the foundation needed to build an adaptable, stable and maintainable software system. This piece of knowledge might not be useful in your early career. If you are not doing anything related to software architecture. It becomes useful when you are required to design or document software systems.
It is observed that there is a total of 23 design patterns in the Design Patterns Elements Reusable Object-Oriented Software book. You can also read it at Reactoring Guru on Design Patterns for a simple to understand graph on it.
Overall there are 3 major archetypes for design patterns:
I believe this article provides you with a good insight into why you should learn design patterns. Which hopefully allows you to dive deeper into it so that it could help you in your own career as a developer. I'm also looking into diving deeper to as well to understand it further to help me in becoming a better software developer.
I will be treating it as a mental model into crafting software systems that are scalable, adaptable & maintainable. When I am creating a new software system for startups or companies that require my expertise to get things done and as a force multiplier approach.
This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.