In this post I try to answer the controversial question
Are software design patterns good or bad?
To understand this question, just look at the following two pictures.
- Here are some nice design patterns. You can use them to decorate the floors in your house.
- Here is a masterpiece. Can you construct it using the above patterns, or any patterns at all?
I think the answer is already obvious. One cannot produce a masterpiece by just putting patterns together. Artists know that techniques are never as important as vision. That is why they spend their lives studying the nature of things such as the human body. Once they get hold of the essence, they use whatever techniques at hand to express what they want. They can also change the techniques or invent new ones as needed.
The same holds for computer programming. We need to keep in mind that design patterns are means and not ends. True programmers are never constrained by existing patterns. They observe and grasp the essence of things, inventing new techniques and patterns as needed.