Note
This is the first article in a series of articles I intend to write that describe my interpretation and understanding of the practice of architecture in large software projects.
I intend to write about the following topics in this series:
Architects are Gardeners. (This article)
What, more specifically IS software architecture? What do Architects or architects do?
How can we build sustainable practices of architecture that in turn build sustainable architectures?
What are the principles, tactics, processes and procedures we can use to design and document systems (both human and computer)?
The way we structure our communications with one another is the single biggest determinant of what our architecture will look like when it’s done.
You design a system that looks different to the way you structure your communications. Over time, without great effort, that design will slowly be subsumed into one that more organically maps the teams and business units that made it.
We have two choices open to us then:
- Plan, account for it and attempt to design around it
- Let it happen
It’s not clear to me that either of these approaches are inherently wrong.
Expanding, our choice is whether we fight the change those communication pathways bring or whether we guide that same flow, co-opting its’ force and nudging it left or right towards where we wish it. This philosophical question is not unlike a question many gardeners have faced over the years. Gardening is an excellent metaphor for the activity of architecture.
Architects are gardeners that cultivate renewable systems (both human and computer)
It is powerful and freeing to consider that we are all gardeners of systems that will outlast us. Years before publishing his book, The Software Architect Elevator, Gregor Hohpe describes large socio-technical systems as gardens:
Large-scale IT is much like a garden: things evolve and grow on their own. Weeds tend to grow the fastest. The role of the gardener is to trim and prune what does not fit and to establish an overall balance and harmony in the garden, keeping in mind plants’ needs, for example by planting shade-loving plants near large trees or bushes. A good gardener is no dictatorial master planner and certainly does not make all the detailed decisions about which direction a strain of grass should grow – Japanese gardens being a possible exception. Rather, the gardener sees him or herself as the care taker of a living ecosystem.
The gardener is an actor within that system who tends to its’ health. Pruning, planting and maintaining from within the system itself.
This philosophy contrasts sharply with the French notion of gardeners as kings and gods outside of the garden they curate. We’ll explore the French approach and compare it to a traditional Japanese Zen garden where the mindset of that Zen gardener is closer to the culture and approach architects should employ.
By acting as gardeners rather than emperor-kings, architects can guide large projects and embrace the flow of the project rather than fighting the chaos inherent in the group hallucination these projects inevitably are.
The Garden at Diago-ji, Kyoto
Consider the garden at Diago-ji in Kyoto, pictured below. What do you notice about it?
How is it assembled? What structural elements can you identify and how do they come together to form the garden?
Do you find the garden aesthetically pleasing? Do you find it calming or exciting?
What level of effort do you imagine it took to plan the garden? To plant and to grow, and to maintain it?
![Photo by David Emrich on Unsplash](/img/in-post/japanese-garden.jpg#center)
Photo by David Emrich on Unsplash
Fix those answers in your mind and then consider the garden constructed at The Palace of Versailles.
Consider the same questions about the effort taken to plan, plant, grow and maintain.
Consider the aesthetics. Consider the “mouth-feel” of both gardens. Where do they do the same things? Where are they different?
![Photo by Hugo Herrera on Unsplash](/img/in-post/french-imperial-garden.jpg#center)
Photo by Hugo Herrera on Unsplash
This is an entirely different construct to the garden at Diago-ji yet they are both gardens, maintained by gardeners. Both have plants and engineered constructions. Both are beautiful and satisfying to view, and yet outside, they are almost entirely different!
Why? What can we learn about the gardeners through viewing and considering each choice made in these gardens?
Sailee Khurjekar at philosophynow.org can help us here.
They describe that
Garden design in the Japanese tradition presents an alternative approach to the English tradition. The properties of the natural objects are not altered to suit an aesthetic design, as an ‘English garden’ designer might cut down a shrub so that it is neat and symmetrical, with the sole aim of pleasing the observer. Instead, in a Japanese garden the organic properties are manipulated to enhance the naturalness of the objects in the garden.
Note
Note that for this purpose, English gardens are largely interchangeable with French ones - The Normans, victorious at the Battle of Hastings in 1066 are close enough to King Louis XIV who would come 600 years later stylistically that the comparison stands.
Where a Japanese garden initially presents as wild and untamed, a natural expression of nature run wild, nothing could be further from the truth as Hohpe identifies.
It’s clear to Khurjekar that a Japanese garden accentuates the natural state of the elements in that garden and in doing so, imparts meaning into those elements as they are. This concept very in keeping with the Zen philosophy of the gardeners. The concept of accentuating the natural state and imparting meaning is known as the art of reduction.
What would an architecture aligned to this concept look like?
Flow Architecture embodies many of the same ideas found in the Zen garden. (For more on Flow architecture see the excellent article and book by James Urquhart)
Flow architecture advocates we represent our system as a series of nodes in a graph (rather than a stack), where each node contains its’ own context and properties separate from the whole. A node is designed (manipulated) to enhance the natural properties of both that node and the nodes connected to it.
The explicit design goal of a Japanese garden is to enable the viewer to observe all of the elements of the garden at once. If the individual elements are too big or too small they force the observer out of the scene entirely or make the observer zoom in so far that they lose sight of the broader picture.
Have you ever had a feeling when viewing an architecture diagram or document, that the level of abstraction is wrong?
How did that make you feel?
The Gardens of the Palace of Versailles
At the Palace of Versailles we see that nature has been reshaped in distinctly un-natural ways, that is to say, ways that are the opposite of what you might expect to see in nature. When I go hiking, I rarely see shrubs on the trail formed into perfect geometric shapes. Looking at the palace garden we see that nature is formed into shapes pleasing to the eye - aesthetics are still very important here, but instead of focusing on the natural qualities of the element, the element is shaped into a way that accentuates the un-natural construction of the garden.
To re-emphasise Khurjekars’ assertion:
Garden design in the Japanese tradition presents an alternative approach to the English tradition. The properties of the natural objects are not altered to suit an aesthetic design, as an ‘English garden’ designer might cut down a shrub so that it is neat and symmetrical, with the sole aim of pleasing the observer.
Robert Schwartz defines the French approach as “Order over Nature”.
Schwartz states that
Gardens are reflections of the people who create them. By shaping nature, men can exert control over their surroundings and create small paradises modeled after their own ideal of beauty.
Systems too are reflections of their creators and maintainers! Schwartz describes the gardens at Versailles as
The best representation of human will imposing itself on a natural landscape
And ties that into the nature of the designer of that garden, King Louis XIV
Louis XIV became an orchestrator, not only of nature but also of how visitors viewed this landscape. Even in the King’s absence, visitors would follow a specific path through the gardens, seeing them as he wished them to be seen. … As the Sun King, he imposed absolute control over nature, subjugating wilderness to his own ideal of beauty.
Bringing the French philosophy back to Architecture and applying this philosophy to the design of human and computer systems, the French approach is the approach the industry have broadly taken from the birth of the industry through to perhaps the mid 2000s.
The prevailing system design philosophy was one of control. Of planning. The Waterfall way of working emphasises clear boundaries between activity and a breakdown of process by function in an attempt to tame the chaos inherent in the large group hallucinations that software is.
This philosophical approach is that of The Architect of the Matrix, which Gregor Hohpe describes as
the ultimate authority: he designed the Matrix (a computer program to simulate reality to humans being farmed by machines as an energy source) and knows and controls everything. Enterprise architects are sometimes seen as such a person - the all-knowing decision maker. Some even wish themselves into such a role, partly because it is neat to be all-knowing and partly because it gets you a lot of respect.
Hohpe also warns of the master planned approach,
Even if the architect is a super smart person, he or she can base decisions only on those facts that are known to them. In large companies, this inevitably means relying on PowerPoint slides or statements from middle management as it is impossible to be in touch with all technology that is in place. Such an information channel to the supreme decision maker tends to be heavily guarded by people who understand its value as an influencing vehicle, which results in the architect being fed indirect, often biased information, as opposed to reality. Making decisions based on such a model is dangerous.
What can system designers learn from French and Japanese gardens?
When the Agile Manifesto took off, the change in how software projects are run became less about controlling the chaos and more about embracing it and redirecting it in the direction you choose - co-opting nature rather than fighting it, yet the root philosophy is still one of control.
Team Topologies seeks to organise teams and communication pathways such that they mirror the flow of value through the business - in other words seek the true value in what you’re doing and align around that rather than creating functional business areas that then struggle to work out how to pass parts of that value between each other.
In taking this bottom up rather than top down approach to system design, Team Topologies is closer to Zen then it is to Master-Planned.
In other words, rather then taming the nature of software development and imposing control over that nature, we now try to follow a more philosophically Japanese approach where we manipulate the organic properties of software development to enhance the naturalness of it.
Wardley Mapping also trends towards Zen in that it helps us identify the weeds in our system (those parts of the system that have already commoditized) Hohpe described earlier as well as Hohpe’s shade loving plants (perhaps accelerators towards value).
If the ways in which teams interact (Kanban, Agile, lowercase a-agile) slowly become more Zen-like in nature and less like we are all very small Sun Kings, the practice of architecture too must become more Zen-like. I see that change finally coming with concepts like Team Topologies, Flow Architectures and Wardley Mapping.
Software development as a group hallucination is best when it is creative, experimental, iterative and guided. Software development is inherently unconstrained in a way that e.g. hardware development is not. Our processes should manipulate that unbounded-ness and direct it in ways that enhance that natural beauty rather than trying to subjugate it.
In order for a system designer to build sustainable systems that work, we have to understand how value flows through businesses and how we should best structure the communication of that value. Having structured that communication we can design concepts around those flows and gently prune away the things that confuse or distort that communication.
We must act and design in ways that enhance the innate qualities of the elements of our organisations and systems. Doing so grants us the ability to place observers into those systems (customers, builders, managers, executives) who can see the system for what it is without parts of the system overwhelming others in that view.
That is why architects are gardeners and not master planners.
References and further reading
[1] The Software Architect Elevator Book by Gregor Hohpe
[2] enterpriseintegrationpatterns.com - Hohpes’ article on movie star architects that precede his book
[3] Gregor Hohpe - Gregor Hohpes’ website
[4] Japanese Garden Imagery by David Emrich - David Emrich on Unsplash
[5] French Imperial Garden Imagery by Hugo Ferrera - AXP Photography on Unsplash
[6] Formal Gardens - France in the Age of Les Miserables, Robert Schwartz
[7] Agile Manifesto - Agile Manifesto for Software Development
[8] Why is Flow Important - James Urquhart
[9] Flow Architectures - James Urquhart