The article starts with a metaphor where the author compares software design to complex cities. At the start of the chapter he mentions that the way we design software correlates strongly to the way architects design buildings. This first part I'd like to juxtapose with the idea that requirements don't exist as the way we know them. We can't know exactly how a software system is designed due to the constant changes of the stakeholders, and the fact that we might know that we want a house, but we might as well don't know what we want in our CRM.
He even mentions it in the book "You don’t start with all of these. Particular views arise as development work progresses. The main result of the initial architectural phase is the conceptual view, and that’s what we’re concentrating on here."[1] We have to have a conceptual view of the "building" we are trying to design.
If someone sees a blueprint, they have a good idea of what to expect in a building. Can we do something like that for software design? For me the best way to express it is having a video with some screens explaining the process. Even though they might be hand drawn, we can expect to get to a basic level of understanding. HELL even just sketching it in a UX designer and making it simple.
"A good architecture leaves space for maneuverability, extension, and modification. But it isn’t hopelessly general."[1]
Enough Said.
Let's start doing our code like that, compliant with modern standards, while thinking in the high level design of it.
I love the examples Pete Goodliffe gives of how different types of designs are equivalent to different types of pasta. Having lasagna and other frameworks as canned goods, certainly drives his point home, and makes this a wonderful read, including his triffle cake, that to those who don't know what a triffle cake is, go google that delicacy.
[1] “Software Architecture: Laying the Foundations of Software Design” form Pete Goodliffe’s book “Code Craft: The Practice of Writing Excellent Code.”.