Design patterns is a critical subject in building great application software. I’ve seen great developers often ignorant about design patterns. Often developers ask how to be a great software designer. Most of the times, my answer was that it requires ‘design thinking’. Design thinking is slightly different from coding a module or cracking a problem. It’s essentialy disciplined view of the system being built. In order to get into the plane of design thinking, it’s crucial to understand the existing documented design patterns. Once, you are aware of these, your design thinking would allow you to compose the elementary designs and come up with design solutions for real world problems.
I attempt to capture the important pieces of the puzzle. As with my style throughout this blog, am going to be cryptic highlighting just the critical points leaving the details for googling.