While it can be useful to talk about design patterns sometimes, I tend to agree with those who consider them harmful in many situations.
The main argument I would make is that often they actually stop people from coming up with proper solutions to a specific problem. Instead of thinking about how to solve that particular problem, people try applying one design pattern after the other.
They also tend to hide language deficiencies. A lot of them are trivial in a language expressive enough. A prime example would be the Strategy pattern which is basically reinventing functional programming in a complicated fashion. Often people would be better off understanding the real programming principles instead of just talking pattern languages.
Having said that: I'd rather talk about patterns with someone than not having a common language at all. In that way they are important if there is no better option. If I can explain myself in more formal ways (e.g. algebras), then I stop caring about pattern languages. Of course some would claim I just invent my own pattern languages that way ;-)