This week I was reminded of the roots of design patterns.
Kent, Ward and an architect - a real architect
This week Luis Ascorbe published a beautiful little tweet accompanied by a diagram. He’s given me permission to republish it here and I will - but first I wanted to tell you that it really took me back to the design patterns that existed before the GoF book on Design Patterns was published in the mid 90s.
One of my favorite books on programming is Kent Beck’s Smalltalk Best Practice Patterns which remains an important and beautiful book even if you will never write a line of Smalltalk.
To me, it’s a reminder of what a design pattern is meant to be. It is a small solution to a problem that lives within a family of patterns that make up a pattern language.
Ward Cunningham and Kent Beck were inspired by the work of Christopher Alexander. Alexander’s books “A Timeless Way of Building” and “A Pattern Language” changed how many of us thought about many things - including software.
Many people cite his books as inspiration without having read them. They are very readable and they form the foundation of what Ward and Kent brought to software engineering.
Last week Luis posted this:
“I’m seeing more and more people share their desk against windows.
I just want you to know the desk should be placed perpendicular to any window when possible, to limit glaring or back lighting of the monitor.
I created a pic, with my great design skills, to illustrate 💁🏻♂️ “
Look at how simple this tweet is. He has stated the problem (monitor glare). He has stated who the problem is relevant for. He has stated and illustrated a solution.
Many people commented on Lascorbe’s post and suggested refinements. My favorite comes from James Duncan Davidson.
Duncan was trained as an architect (as in Alexander not as in software) before beginning a career in software. His addition (also republished with permission) was that Ascorbe’s presentation was perfect for building on.
“Bonus: It provides just enough information that you can sketch on and annotate for specific cases.
For example, here’s a quick illustration of optimizing your desk for better webcam light.
You can either turn your desk slightly or shift your camera to get nice light.”
These are the design patterns I love. Short, direct, address a problem, propose a solution, and composable.
Essay from Dim Sum Thinking Newsletter 9. Read the rest of the Newsletter or subscribe