I came across this talk video from Brian Marick at the Deconstruct software conference. It was a refreshingly candid take on why the classic software design patterns are generally considered burdensome chains instead of the pattern language they set out to be.
And the question is why. I think you can have several reasons, but I’m going to focus on this one, which is that design patterns started out with not enough building blocks, that were at too low of a level. So if you look at all the design patterns, they’re basically composed of two things. There’s functions, or methods, which are just functions, and polymorphism, based on inheritance. Those are the two things in your bag of tricks, and that’s what you create these design patterns from.
The that were at too low of a level line resonated the most for me. These patterns came out of writing C++ programs in the late 80s and early 90s. They were fine patterns for that sort of work. I continue to roll my eyes when platforms based in higher level languages like python, ruby, or PHP seem intent on implementing these almost 25 year old patterns patterns blindly, creating software platforms that are far more complex and brittle than they need to be.