buzz·word
- A word or phrase connected with a specialized field or group that usually sounds important or technical and is used primarily to impress laypersons: "'Sensitivity' is the buzzword in the beauty industry this fall" (ADWEEK).
- A stylish or trendy word or phrase.
- a word or phrase that is frequently used because of its importance or popularity especially among a certain age-group or profession
Example: `Recycling' is the new buzzword.
I'm kinda poking fun at a coworker here with this. He didn't specifically say that "Strategy", "State", "Supervising Controller" or anything like that was a buzzword, but I recall he did say "Open-Closed Principle" (which is, of course, a principle of OO, not a design pattern) is a buzzword, or something like that.
Patterns are not buzzwords. At least not in the way that I think of what a buzzword is. I did find a source that defines buzzword as "a word or phrase, often sounding authoritative or technical, that is a vogue term in a particular profession, field of study, popular culture, etc." But what it neglates to elaborate on is the fact that buzzwords have a lifespan. They are short-lived in their meanings, usually no longer than a few years. Software design patterns do not fit that category. They are long lasting, have concrete definitions and stand as a solid form of communication in the industry.
I've heard on occasion people call patterns, practices or principles buzzwords. In fact, they are not. They are a form of communication amongst a group of people, in this case, developers and even managers, to simplify and create more effective communication. A common and efficient language is critical to a properly built and well oil development machine.
Its so much easier to say "I'm going to decorate this class." than it is to say "I'm going to add some sort of dynamic functionality to this class." Ok, not too bad. But now, how about take something common like a factory pattern. Yeah, NOW how much easier is it to say that you're going to implement a factory pattern, rather than go all out and talk about how you're going to be designing an interface for creating objects, but your implementation is going to be allowing subclasses to make the decisions on which actual instances of classes they want to create. If someone tells me template, I know what they are talking about without further explanation.
Its important to know and understand design patterns, otherwise when someone else tells you they are going to implement a strategy and get rid of the switch statements, you might be uneasy about what it about to happen if you don't understand what they are talking about. The best way to learn them is to write code.
Here is more information regarding "patterns" and "communication" here on CodeBetter.