“Design Patterns” Aren't (2002)
&gt;What is a Pattern?<p>&gt;An &#x27;element of reusable software&#x27;<p>&gt;A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.<p>Interesting to note that the person defines a pattern as something exclusive to using Objects and classes or in other words OOP. So something like lenses or functors or programming techniques defined outside of OOP are not patterns.<p>When I talk to people they often define design patterns as a common language for various methods that are common to programming and not exclusive to OOP. Doesn&#x27;t english and vocabulary fill this space? You don&#x27;t find carpentry workers referring to domain specific vocabulary as design patterns. Why don&#x27;t FP practitioners or mathematicians call their techniques &quot;patterns&quot;?<p>This may piss some people off and get me a load of downvotes, but honestly IMO I find design patterns to be just snobbery. Instead of saying someone is iterating through a list they say that someone is using the iterator pattern. It&#x27;s really just prefixing the word &quot;pattern&quot; onto some vocabulary. I used the number pattern on the variable pattern and the addition pattern to get the sum of two numbers.<p>I would&#x27;ve just called the book &quot;Programming Tricks for OOP&quot; rather then &quot;Design Patterns.&quot;