People should learn what the problem is, not focus on patterns. They should learn that some patterns exist (merely) to overcome limitations of Java or C++ (like the el primo Visitor Pattern or the Singleton). They should understand those limitations. E.g. they should learn what multiple dispatch is instead of learning what the visitor pattern is. If they can code at all, they will then come up with a way to work around the single dispatch limitation of Java/C++ if they need to.<p>Patterns poison people into only seeing patterns instead of seeing the picture.<p>I fully understand why 'pattern pusher' is supposed to be an insult. It's not about not wanting to learn, but about learning the reasons behind things, instead of just following patterns.