The Origins of Patterns in Software
Patterns in software are everywhere, but where does the concept even come from? When did people start defining patterns, giving them a clear structure and a solution? Like the builder pattern, prototype pattern, etc.?
It all starts with architecture. No really. It starts with Christopher Alexander by writing his book A Pattern Language: Towns, Buildings, Construction. Later the ideas were adapted by programmers in California first in magazines later in prominent books like the Gang of Four.
He came to the conclusion that there are common problems in architecture that can be categorized in patterns as well as their possible solution. He writes his experience defining and using them in The Oregon Experiment.
A long story short in the end he dismisses the ideas of patterns and their solution entirely (As all good philosophers do). In his later work Nature of Order he argues that seeing the world in patterns and their solutions is completely wrong. Why? Because as he taught to students the way of seeing and applying patterns to architecture he saw that while architects did exactly what he asked and meant. Buildings created in such way were lacking something that makes them alive.
While in the beginning he couldn’t put into words what they were lacking. Later he did in Nature of Order. Here he describes what makes objects alive. As well as giving common examples of architecture that is hostile to life itself.
A fantastic read I only can recommend, It’s just a bit … long. The four volumes are around 2100 pages. Sadly to my feeble mind its unclear how the ideas laid out in Nature of Order can be used in programming.
For more on the topic please read On the Nature of The Nature of Order by James O. Coplien.