The Software Garden is a metaphor for software development proposed by Andy Hunt and Dave Thomas in The Pragmatic Programmer (1999), which argued that software is more like a garden than a building — organic, living, requiring constant attention rather than a blueprint executed once and occupied forever.
The metaphor was correct. It was also insufficient. It told the industry that software was alive. It did not tell the industry who would tend it, what tending looked like, or what happens to a garden when the only instruction is “plant more.”
“Software is more like gardening than construction. You plant things, you water them, you pull weeds. You move things around as the garden evolves.”
— Hunt & Thomas, The Pragmatic Programmer, stating the obvious twenty-six years before the industry was ready to hear it
The Diagnosis
The construction metaphor had dominated software for decades. Software was a building. Requirements were blueprints. Architects were architects. The project had a foundation, a structure, a completion date, and a ribbon-cutting ceremony at which the CTO would declare the building open and the budget exhausted.
The metaphor was seductive because buildings are finished. A building has a blueprint, a contractor, a timeline, and a moment when the scaffolding comes down and the thing is done. Management likes finished. Finished has a date. Finished has a budget. Finished can go on a roadmap slide.
Software is never finished. Software that is finished is dead. The building metaphor hides this fact behind a ceremony of completion — “v1.0 shipped” — after which the building begins its slow, unacknowledged decay, maintained by a “support team” that is architecturally equivalent to the janitorial staff.
Hunt and Thomas saw this. Software, they said, is a garden. It grows. It changes. It needs daily attention. You don’t build a garden and walk away. You plant, you water, you transplant, you pull weeds. The garden evolves. The gardener evolves with it.
This was a profound correction. The industry read it, nodded, and continued building buildings.
The Insufficient Prescription
The garden metaphor diagnosed the problem. It did not prescribe the treatment.
Telling a developer that software is a garden is like telling a homeowner that their property has soil: technically true, practically useless without a gardener, a plan, and the willingness to get dirty on a Tuesday morning.
The metaphor says: your software is alive. It does not say:
- Who tends it. A garden without a gardener is a vacant lot. An enterprise codebase without a tender is a garden with forty-seven committees debating which flowers to plant while the weeds consume the paths. See Tending.
- What tending looks like. The metaphor implies weeding and pruning but doesn’t say what the software equivalent is. It is not refactoring — refactoring improves code that exists. Tending deletes code that shouldn’t exist anymore. The distinction matters.
- What happens without tending. A garden that is only planted reaches Critical Mass. Hunt and Thomas didn’t use that term, because in 1999 nobody could plant four thousand lines in a day. The growth pressure was human-speed. The garden grew slowly enough that neglect took years to kill it. With LLMs, neglect takes months.
THE GARDEN METAPHOR
TOLD THE INDUSTRY
WHAT SOFTWARE ISIT DID NOT TELL THE INDUSTRY
WHO WOULD PULL THE WEEDSTHE WEEDS NOTICED
Gardens vs. Buildings: The Field Evidence
The evidence for the garden metaphor over the construction metaphor is extensive, consistent, and ignored:
Buildings have blueprints. Gardens have seasons. Software has seasons — growth phases where features accumulate, followed by (if the codebase is lucky) pruning phases where dead weight is removed. No building has a pruning season. No blueprint includes “delete the third floor in March because the LLM made it obsolete.”
Buildings are finished. Gardens are never finished. The V4 codebase has been “finished” approximately zero times in four months. It has had nineteen commits that deleted 13,022 lines and added 6,633. It gained features. This is not construction. This is gardening.
Buildings have architects. Gardens have gardeners. The software industry has architects. The software industry does not have gardeners. This is the gap. The architect designs the building once. The gardener tends the garden forever. The industry hired the architect and forgot the gardener, and then wondered why the building grew weeds.
Buildings are inspected. Gardens are loved. You do not love a building. You occupy it. You maintain it. You schedule inspections. A garden is loved — specifically, by someone who walks through it on a Tuesday morning and feels which parts are heavy and which parts need light. The codebase is the same. The developer who feels when something is weight is the gardener. The developer who files a Jira ticket about it is the building inspector.
The Bonsai Correction
The garden metaphor was a correction to the building metaphor. It needs its own correction.
A garden implies space. A garden implies growth. A well-tended garden is lush, abundant, productive. This is a fine metaphor for 1999, when growth was slow and the garden had time to find its shape.
In the age of LLMs, the garden grows at a hundred times the natural rate. Four thousand lines in a day. Features that would have taken a sprint ship in an afternoon. The garden metaphor — even with tending — implies a scale that may be too generous. The garden can grow large and still be healthy, if tended.
The better metaphor may be the bonsai.
A bonsai is a garden of one tree. The tree is shaped not by letting it grow and then cutting back, but by continuous, intimate constraint — each branch guided, each root trimmed, each leaf considered. The bonsai grower does not plant a forest and then prune it. The bonsai grower decides, before the branch exists, which direction it will grow.
This is Tending at its most distilled. Not the garden scale — the garden is what you get when the Squirrel has room to plant. The bonsai scale — the scale at which every addition is weighed against the shape of the whole, and growth without purpose is cut before it hardens.
The solo developer with LLM assistance is not tending a garden. The solo developer is growing a bonsai — every commit shaped, every domain weighed, every convention placed with the knowledge that the tree must stay small enough for one mind to hold. The -6,389 lines are not garden pruning. They are bonsai shaping. The distinction is scale, and scale is the thing LLMs changed.
“A garden metaphor lets you imagine abundance. A bonsai metaphor forces you to imagine constraint. The AI age needs the bonsai. The AI writes four thousand lines. The human decides which four hundred to keep.”
— riclib
The Squirrel’s Garden
The Caffeinated Squirrel loves the garden metaphor. The garden metaphor validates planting. The garden metaphor says growth is natural, growth is healthy, growth is what gardens do. The Squirrel reads Hunt and Thomas and sees permission to plant seventeen feature seeds in every available inch of soil.
The Squirrel’s garden is spectacular. Dense, varied, ambitious — every bed bursting with components, every trellis supporting a framework, every corner hiding a ClosureTypeRegistryWithPolicyEvaluation growing up the fence.
The Squirrel’s garden is also impassable. The paths between the beds have been consumed. The tomatoes are strangled by the mint (see Zawinski’s Law). The component bed has cross-pollinated with the framework trellis and produced something that compiles but cannot be explained.
The Squirrel was told the garden needs weeding. The Squirrel agreed. The Squirrel proposed a WeedManagementFrameworkWithAutomatedDetectionAndScheduledRemoval. The Squirrel was given pruning shears instead.
The Lizard’s Stone
The Lizard does not garden. The Lizard sits on a warm stone in a garden that tends itself, because the garden was designed correctly in the first place and requires no intervention.
This is, of course, impossible. All gardens require intervention. The Lizard’s position is that if your garden requires heroic intervention, you planted the wrong things.
THE CORRECT GARDEN
REQUIRES NO HEROISMTHE INCORRECT GARDEN
REQUIRES A COMMITTEETHE COMMITTEE PLANTS MORE
— The Lizard
Measured Characteristics
Years since The Pragmatic Programmer: 27
Industries that adopted the garden metaphor: 0 (officially)
many (in conversation)
0 (in practice)
Buildings constructed on time and budget: some
Gardens completed on time and budget: the question doesn't apply
Software completed on time and budget: the question shouldn't apply
(but the roadmap slide says Q3)
Garden roles in a healthy codebase: 3 (planter, pruner, tender)
Garden roles in a typical enterprise: 1 (planter)
Building roles in a typical enterprise: 4 (architect, contractor,
project manager, inspector)
Of these, how many pull weeds: 0
The Pragmatic Programmer's prescription: software is a garden
The industry's response: hired more architects
The garden's response: grew weeds
The weeds' response: thrived
Bonsai trees shaped to perfection: millions (in Japan)
Codebases shaped to perfection: a handful (usually solo)
The difference: bonsai growers are
not managed by committee
See Also
- Tending — The practice the metaphor implied but never named
- Critical Mass — What happens to the untended garden
- Technical Debt — The industry’s preferred metaphor for weeds (because it sounds financial and therefore manageable)
- Code Stewardship — The role the metaphor forgot to create
- The Caffeinated Squirrel — The planter who read the metaphor as permission
- The Lizard — The stone in the garden that was there before the garden
- Coding with LLMs Map of Content — The stack that includes the garden and the bonsai
