Design Patterns are a great piece of knowledge, that gives a possibility to learn how to create a good design instead of researching it. From the other side, agile development practices is another mainstream that for ones means flexible though stable organizational methodology and for others a way to save some money by reducing time (in reality by reducing paper work etc. while going directly into the development). To me these two mainstreams are highly coupled. The later makes great use of the former, and from the other side represents a set of organizational patterns itself. So I will talk about patterns in general having in mind agile practices and design patterns as part of it. Patterns are great because you gain a scheme for your solution and do not need to invent a wheel from scratch. Generally saying, patterns are considered to be “best practices”, and likewise they are.
For these and other similar reasons the design patterns and agile methodologies are “mainstream” now, and that’s why are severely required to follow in many organizations (perhaps, you have heard something like “this is not compliant with this or that design pattern or best practice, so is wrong!”). However, while thinking of patterns against real life, you may find that they are merely common recommendations and do not provide “every hole fitting” solutions – ’cause simply it’s (almost) impossible – and then you spent long time searching for a pattern that fits your problem the best or how to apply that given pattern to it. There are so many general design patterns, so that in some cases they overlap and provide confusion. In the end, we’ve got lots of anti-pattens. Doesn’t it sound a bit of non-sense?
Thinking of pattens further, I find them restricting a developer’s fantasy (one, who is able to think and generate his own ideas). Moreover, patterns are simply a set of terms or names for widely known notions which were (and are being!) forged in many organizations. With time new patterns appear, evolve, replace older ones, and it is normal process since new problems to be solved appear. Patterns are being “invented” and shouted out and sold (indirectly).
Concluding, in my opinion, the design patterns or principles should not be considered as a rigorous tool and used blindly, though do not forget that patterns are your basic and fast knowledge and don’t afraid improve them… so sometimes you will have to make a choice: to drag in a mainstream (for the “it’s cool!” sake), or start your own one!

