One thing that makes you truly stand out as a software engineer is a good knowledge of design patterns. Knowing them makes you quicker at solving problems. It makes you much better at understanding architecture. And it significantly improves your chances of landing a good job, as it makes you better at solving problems during technical interviews. However, the biggest problem with the design patterns is that they are hard to learn. Most of them are not very intuitive. Therefore getting to understand them at the level where ...
Read More
One thing that makes you truly stand out as a software engineer is a good knowledge of design patterns. Knowing them makes you quicker at solving problems. It makes you much better at understanding architecture. And it significantly improves your chances of landing a good job, as it makes you better at solving problems during technical interviews. However, the biggest problem with the design patterns is that they are hard to learn. Most of them are not very intuitive. Therefore getting to understand them at the level where you can use them usually takes a long time. Many developers just give up, which prevents them from unlocking their full potential. This book aims to solve this problem. It takes a very different approach from how design patterns are normally taught. It does it by providing sufficient context first. Instead of jumping into the UML diagrams and code samples, the book provides descriptions of real-life software engineering challenges that developers can easily relate to. For each of these scenarios, appropriate design patterns are listed with a summary of how each of them can solve a given problem. Only then, when sufficient context has been provided, we jump into the code examples. The process of effective learning is not about memorization. It's about adding new associations to the existing knowledge. And this is the approach this book has taken. Because of its structure, this book can also be effectively used as a reference source. It allows you to look up an appropriate design pattern as you are facing a problem of a particular type.
Read Less