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:
- Creational patterns - Various duplication techniques used to reuse an existing codebase.
- Structural patterns - The focus on the assembly of a smaller part to form larger structures. While maintaining flexibility without waste.
- Behavioral patterns - Deals with algorithms and assignment of roles for the intended behaviours of each piece of software in the system.
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.
If you like this article do sign up for my Adventurer's Newsletter which contains interesting content I stumble across over the week in the area of Python, Web Development, Startup.
You can also follow me to get the latest update of my article on Dev
The original post was on Full Stack Development in Django - Reading Time: 3 Mins and cover image by Lily Banse on Unsplash
This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.