Why we love them…
How often have you opened up a solution to see a clean separation of concerns, with clear use of creational, behavioural and structural patterns!
How about when you have a conversation with a colleague who is not familiar with the code base - without even seeing the code, design patterns enable the conversation, “here are our factories, here we have leveraged a singleton”. All of a sudden conceptualising what is going on is so much easier.
Design patterns enable you to have a common terminology for discussing design situations and decisions, for this reason we love them!
Why we hate them…
How many times has someone who has been recently introduced to design patterns felt the need to make all their code going forward use a recognized pattern. How often have they introduced unnecessary complexity, given people a false sense that they have done a good job and followed “best practices” and inflated the solution.
That’s why we hate them!