Email the Author
You can use this page to email Fiodar Sazanavets about The easiest way to learn design patterns.
About the Book
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.
About the Author
I am a senior software engineer working for Microsoft. I have over a decade of professional experience and am a past recipient of the Microsoft MVP award. I primarily specialize in .NET and Microsoft stack. I am enthusiastic about creating well-crafted software that fully meets business needs.
Throughout my career, I have successfully developed software of various types and various levels of complexity in multiple industries. This includes a passenger information management system for a railway, distributed smart clusters of IoT devices, e-commerce systems, financial transaction processing systems, and more. I have also successfully led and mentored teams of software developers.
I enjoy sharing my knowledge with the community. This motivates me to mentor aspiring developers and create educational content, which includes blog posts, technical books, and online courses. I regularly write about software development on my personal website, scientificprogrammer.net.