The Gardener's Paradox
AI swarms, the death of coding, and the new shape of work
It’s Friday night. The kids are in bed. My wife is out with friends. I am alone in my office, engrossed in my new favorite hobby: software development.
There’s no better dopamine than productivity dopamine
Over the holidays, I noticed that chatter about vibe coding tools ticked up. I saw, first at the fringes of my feeds, then front-and-center, a consensus rising: there’s been a massive leap forward in writing code, and it happened almost overnight.
A step change. A vibe shift, if you will.
Sure sure, I thought, there’s always something big and new. Several years into dedicating my career and sanity to AI, I’ve learned to temper my expectations. See through the hype, find the truth, build on it. Besides, as a dad of two cherubic gremlins, I was more concerned with picking up every scrap of wrapping paper and making sure I had just the right amount of bourbon in my eggnog.
Then I came across this tweet from Andrej Karpathy (the inventor of “vibe coding” who once said it’ll be a decade until AI agents work properly):
Still, I wasn’t moved. My experience with AI coding tools had been mixed. I appreciated that it could autocomplete docstrings, add type hints, suggest small optimizations. These tools were excellent at the necessary tedium, but whenever I tried to make major changes with AI it usually failed, albeit convincingly.
What finally caught my attention was a piece by Casey Newton, “The project that turned me into a Claude Code believer.” In it, he writes about using Claude Code to remake his website quickly and canceling his Squarespace account.
Hey, I use Squarespace, I thought.
10 minutes later, I canceled my Squarespace account too.
My typical workflow for personal coding projects looked like this:
These days, I am developing ambiently:
I used to be limited by whether my free time, energy, and inspiration coincided. Now I have an idea and minutes later I have a working prototype.
After revamping my website, I made a utility that organizes my Downloads and Documents folders. The next day, I built a bookmark manager with an AI assistant to replace Raindrop. After that, a web app for my book club to vote on our next pick. Then an agent network to search news and fact-check claims against sources I trust.
More. I can do more.
Is that all you got?
Spend enough time with Claude Code and you go through a roller coaster of sorts. At first, you’re partners. Buddies. You’re collaborating, sketching out the approach together, riffing on ideas. Let’s build a tool that turns voice memos into professional emails. Maybe controls to tune length and tone, validate against my personal history. Why not, the night is young? Claude codes while you swirl your drink. This is what living your best life surely means.
Alas, honeymoons end. A deploy fails. The frontend drifts from the backend. You find you’re explaining yourself more. Suddenly you’re not a partner, you’re a babysitter.
Naturally, daring folks are already trying to evolve beyond this pattern.
One fun example is Ralph. The idea is beautifully simple: instead of babysitting Claude, you give an agent a list of well-defined tasks and let it run autonomously. When a task is done, it moves on to the next one.
Meanwhile, you stand up, stretch, walk away, make a coffee, read a book, maybe reconnect with loved ones (assign another Ralph another task). Check back in an hour and there are twelve commits, a working feature, and notes about what Ralph learned along the way.
Last week, an engineer on my team was refactoring a legacy app. After pair coding with Claude Code, he realized the project would take a while, so he pivoted. He created a Ralph-like agentic pattern, with finer controls and checkpoints for feedback (call it “Ralph with better parenting”). On a Friday, he gave helpful instructions to an agent and kickstarted the loop. The refactor finished successfully over the weekend. Weeks of progress made before Monday morning standup.
The death of coding is the future of work
We are in the early days of a future that looks very different from our past.
Building the wrong thing used to be expensive. Thirty years ago, software companies tried to derisk by writing detailed requirements that anticipated every possible need. Success was not only measurable, it could be planned. But markets evolved while the spec stayed the same, and products launched for customers who no longer existed.
Eventually, people began to notice that the projects that succeeded did so messily: code was written, tested, demoed, revised, and rewritten. Iterations mattered more than being right the first time. These people had wonderful and terrible ideas, and these ideas were given a name — agile — and a manifesto: software, like people, changes. Building software should honor and respect change.1 As software went on to eat the world, a cornucopia of agile frameworks multiplied and were plenty.
The rituals of old were designed to manage scarcity. Scarcity of time, attention, resources. But code is cheap now. The new constraints are creativity, insight, taste.
If the new shape of work looks like yesterday’s but faster, then it will be a tragedy. This new world demands jetpacks, not faster horses.
How does one build a jetpack?
Some contours of the future feel clear to me.
The promise of every development process is the same: ship better products faster. Teams assume process organically leads to good outcomes, but when process inevitably fails people tend to pile on more process. And process can distract teams from what matters most.
When agents write code, you need to focus less on process and coordination and more on making better decisions faster. If your coder is an agent, a requirement document isn’t a communication tool, it’s a prompt. It needs to be precise, testable, and unambiguous. Telemetry to estimate cost and time for a project is weak today, so the plan needs a well-defined first loop to estimate the full build.
Automated evaluation is more critical now. Tests are no longer a safety net, they’re the contract between you and your agents. If you can’t define success in a way a machine can verify automatically, you quickly go back to inspecting code.
As I write this, deployment is still a bottleneck. But agents writing and deploying code autonomously need systems that are secure by default, with CI/CD pipelines, permissions, sandboxing, rollback. This will get solved soon.
Standup is dead, it’s replaced by an AI sending you bullet points in an email. Sprints compress into days, then hours, then minutes. What even is a sprint when the backlog is a JSON file shared between models?
By 2027, a single prompt will get you a fully functional application in production. Not a prototype. A real product, deployed and serving users.
At that point, software development will be unrecognizable. The most successful developers won't be the best coders. They'll be the ones who know what's worth building.
We must cultivate our garden
In February 2020, I got a text from a friend at the CDC: “Things are pretty bad. Make sure you’re ready.”
My wife was 7 months pregnant with our first kid. I didn’t know what “ready” meant exactly, so I hurried to the grocery store after work. I left an hour early, imagining a backlog of cars outside the parking lot, an angry crowd huddled around empty shelves inside.
Yet there was no line and no crowd. I walked in and quietly loaded my cart with rice, beans, things I knew would last. I looked around and realized no one was panicked or even mildly concerned. An elderly man asked me to grab a bag of flour he couldn’t reach. I met his broad smile with a nervous one.
Was I overreacting?
The next day, I decided to work from home until the baby was born.
In those days, one of my small pleasures was the hydroponic herb garden we kept in our dining room. I made a lot of pasta, so I kept the basil full. I loved that garden. I only needed to set it up just right, check in on the water and sunlight. The basil was so tall and so green. At a time when things felt very uncertain, I at least had that.
I didn't have language for this feeling, but someone else did.
Masanobu Fukuoka was an agricultural scientist in Yokohama when he got pneumonia and nearly died.2 Lying in a hospital bed, alone, he spiraled into an existential crisis which held onto him even as he recovered. One night while wandering, he heard a heron cry. “All the concepts to which I had been clinging, the very notion of existence itself, were empty fabrications,” he realized. He quit his job the next day and went back to his family’s farm. He wanted to know whether he could grow crops by doing less, not more. The more we intervene, he believed, the more intervention becomes necessary. Every technique creates a new problem requiring another technique. Fukuoka called his philosophy “do-nothing farming” and went on to have some of the highest rice yields in Japan. He saw his role clearly: not to grow crops but to set the right conditions and get out of the way. “Crops grow themselves.” When I tend to my agents, will it feel the same?
The gardener’s paradox is the tension between control and cultivation. The better the conditions, the more the outcome depends on the system, not the gardener. Letting go is hard. But the crops might grow taller without us. Perhaps we’re all gardeners now.
Octavia Butler’s Parable of the Sower was written around the same time as agile was created. Coincidence? Almost probably.











