The Software GardenFrom Dark Factory to Software Garden ← Contents
The Software Garden · Chapter 0

From Dark Factory to Software Garden

The metaphor you use for agentic software development decides where you think humans belong.
We started with a factory with the lights out. We ended up with a garden.

Scroll ↓
The aspiration

A dark factory runs with the lights off.

The term comes from manufacturing. When robots do all the work, nobody on the floor needs to see, so you can turn the lights out. Production runs around the clock, unattended.

Applied to software, it's a compelling picture: issues go in, agents plan, implement, review and merge, and working software comes out. We started our own agentic dark factory at Camunda in July 2025, and it is still growing.

Agents work the line. A human is still on the floor.
Taking it seriously

Good in some ways. Triggering in others. Deficient in more.

The dark factory isn't a bad metaphor. It's an aspirational one, and it got a lot of people to take agentic development seriously. But it says three different things at once.

✔ Good: it sets the bar highAutonomy is the goal. Work flows without a human in every step, the system runs on process instead of heroics, and throughput isn't limited by how many people are awake.
⚠ Triggering: it leaves people in the darkLiterally. A space designed so that humans don't need to see in it reads, at a gut level, as a space where humans aren't wanted.
✖ Deficient: it describes the wrong kind of systemA factory stamps out copies of a fixed design. Software is never the same widget twice, and everything you ship stays behind and becomes the ground the next change is built on.
The psychology

“How am I supposed to see if all the lights are out?”

Show engineers a dark factory and some of them cheer. If your favourite Star Wars character is Darth Vader, it looks awesome.

Most people have a different reaction, even if they never say it: this looks hostile to me. Where do I fit into this? A metaphor that makes most of your engineers feel surplus to requirements is a bad way to bring them along.

🖤 20%
“Awesome”
80%: “Hang on a second…”

The metaphor answers “what do the machines do?” It doesn't answer “what do I do?”

Proportions are a rhetorical rule of thumb, not survey data.

The deficiency

A factory's output leaves. A codebase's output stays.

Factory thinking says that once the line is built, more robots means more output. In software, each change lands in the same codebase the next change has to live in.

Pour agents into an unstructured codebase and you don't get more product. You get an overgrown jungle that slows every agent down. Dark factories started at the same time as ours have stalled for exactly this reason.

FactorySoftware
ProductIdentical units of a fixed designEvery change is new
OutputShips and is goneAccumulates in the codebase
More workersMore throughputMore growth, and more entropy
DecayMachines wear outThe product wears out the structure
HumansRemoved from the floorNeeded, but in a different role
A better metaphor

In a garden, the plants grow by themselves.

You don't assemble a tomato by hand. You prepare the soil, plant, water, and it grows. In the agentic SDLC, code is the same: agents grow it.

What gardeners do is build and maintain structure: beds, trellises, irrigation, paths. That's the human job in an agentic codebase too: architecture, boundaries, conventions, CI quality gates, type systems.

And it's collaborative, not lights-out. Gardeners are in the garden. They can see.

In the gardenIn the codebase
🌱 PlantsCode, grown by agents
🪴 SoilContext: docs, conventions, examples
🪜 TrellisesArchitecture and module boundaries
📦 Planter boxesModules that keep growth separate
💧 IrrigationCI, quality gates, feedback loops
✂️ PruningRefactoring, removing half-finished work
🧑‍🌾 GardenerHuman: taste, judgement, structure
Why the garden fits

Growth causes entropy. That's the point of similarity that matters.

A trellis holds up a young vine. As the vine grows and fruits, the weight bends the trellis. Roots push through greenhouse walls. Nothing went wrong: growth itself wears down the structure.

Agents are local optimisers. Each change is reasonable on its own, and together they erode cohesion: duplicated logic, half-finished refactors, boundaries crossed one convenient import at a time.

The features are free. Sustained feature velocity is not. It comes from humans watching where the structure bends and fixing it.

🌱
Features grown
Structural strain
 
The answer the factory couldn't give

Agents tend the vines. Humans tend the garden.

The garden has a natural answer to “where do I fit?” Humans don't compete with the agents on growing code. They do the work growth can't do for itself.

That work needs engineering experience more than ever: it's taste and judgement about structure, applied at a speed no human could write code at.

🗺️
Lay out the bedsArchitecture, module boundaries, conventions written as rules.
🪜
Build the trellisesTypes, CI gates and checks that make the right way the easy way.
👀
Watch where it bendsDefect rates, escaped bugs, the same issue reported twice because it was built twice.
✂️
Prune and refactorWith agents: keep what works, take out what doesn't, move things into better places.
So

Keep the factory's ambition. Work like a gardener.

Aim for autonomy and agentic speed. But treat the codebase as a living garden that agents grow and humans structure, because growth always brings entropy. Too careless and the weeds win; too careful and the competition does. Balancing the two is the engineering part, and the rest of these chapters are the gardener's tools.