David Brandt · trains of thought

Working with AI

Programming was my art

A four-year retreat up the food chain

Seeded May 2026 Written October 2026

Back in ye olde times, I was a pretty productive developer, if I say so myself. I was fast, my output was vast, and it covered some genuinely complex domains.

The work I did for EVE Online in its early days is still the most visible highlight of my career. Most of what I've done since pales by comparison, but only from the outside. There are many factors that affect what fast looks like. Replacing ancient mission-critical code in national critical infrastructure takes effort and precision. So does removing the architectural scalability bottleneck of a running SaaS solution with zero downtime, while millions of concurrent users carry on regardless. Next to traditional website development, projects like that don't look fast at all. When they go well, they look suspiciously like nothing happened.

After EVE Frontier, I took a career break for the sake of my health. When I came back, I was pretty happy to join a nuts-and-bolts organization with a long-lived, stable business model, wonderful coworkers, no stress (compared to what I'm used to), and a business domain that touches the lives of all of society, every day. It was a comfortable, family-friendly, health-first place to work for the remainder of my career. It even had a 36-hour work week. I've always had a work ethic that is too strong for my own good, and I'm used to 50-plus hours during the ebbs and 70-ish during the flows.

I had, more or less, solved my career.

Then came AI.


It had actually been coming for a while. I just hadn't taken it seriously. At first it was a novelty, but the novelty was doing real work, and it attacked first where everyone had assumed it would arrive last: art.

In the spring of 2022, Midjourney arrived. Within a year, concept artists and illustrators were losing their jobs to it. A creative director could command an AI to produce hundreds of pieces of work from a prompt and some reference material, pick the best of them, process those further, and finally hand the results to humans. Artists at the lower levels of the food chain were being eaten by the machines.

Interesting, I thought. Fortunately, I'm a programmer.

In late 2022, ChatGPT 3.5 made its debut.

People quickly noticed that ChatGPT outperformed Google. Knowledge workers no longer had to spend hours sifting through dozens of articles, most of them unrelated to what they actually needed to know, just to piece together a vague picture of a puzzle whose missing pieces might be hiding in some dark corner of the internet their searches never reached.

People also quickly learned to stop taking everything ChatGPT said on faith. AI lied and fabricated as it saw fit to tell people what they wanted to hear. Kind of like social media and search engines, actually, but more obviously so.

But taken with a generously heaped spoonful of salt and distrust, ChatGPT could give a knowledge worker a far more accurate picture in a minute or so than hours of searching ever had. And they were entirely free to work, or not, on something else while it distilled the combined knowledge of humanity into the answer they needed.

Many people seized on the hallucinations anyway, as an opportunity to mock AI and as proof of human superiority. Their jobs were safe.

Except, of course, when they were talking about artists. That tale of Midjourney "secretly" winning an art competition, which got more secret with every retelling, was obvious proof to many of those same people that other people's professions could be replaced by machines.

ChatGPT evolved, as did its lesser-known competitors. Every single reader of this article will have seen it firsthand. Or they're too young to remember the world before AI.

By the spring of 2023, AI was coding.

Like so many developers at the time, I viewed it with disdain. It was by no means competitive in my eyes. My job was safe. Besides, I had migrated into management, so I was out of touch with the code anyway, and therefore doubly safe. Or so I thought.

I was also on a career break at the time, and what little coding I did was purely for my own enjoyment. It's hard to lose a job you don't have.

In the fall of 2024, I was getting back into the workforce. By then, ChatGPT had become a serious asset for my hobbyist writing. I had used it to write the full language and standard library reference for my aspirational "perfect programming language", a hobby I'd dabbled in since about 2001. As a coding assistant, though, it still wasn't much good. People were lauding Claude on Reddit, but to me that sounded like yet another religious war in our industry. Java versus the world, now with chatbots.

By the spring of 2025, AI was starting to become a useful coding assistant. Most people I knew still ridiculed it and rejected it. I laughed a little less than they did, but I wasn't worried.

Fall 2025. Codex changed the way I worked. It still wasn't great, but I could command it to do countless things for me in parallel, in the cloud, working directly on the code I was writing, while I focused on something else. The review burden was heavy because, well, it still lied and fabricated like it was running for office. But it was definitely a force multiplier. A low one, but a multiplier all the same.

If anything, my job had just improved. I had interns now.

November 2025. Claude Opus 4.5 came into my life as a shock. I had to admit that Claude, at maximum effort, was basically my equal. Only faster (token budget allowing), and at a fraction of my salary.

Reddit had been right. I hate it when Reddit is right.

For the first time in my career, my job was under review.

May 2026. Claude Opus 4.8, under my supervision, was not only far faster and far cheaper than me. It was also far better than me.

The title of my first cover letter was "Programming is my Art".

I had just lost to an AI in an art competition. By a landslide.


For my whole career, the limit on my output had been hours: 70-ish in the flows, 50-plus in the ebbs, and lately a civilized 36. Now the limit was tokens.

You have work queued up. You know exactly what needs doing, and you have a perfectly capable workforce standing by to do it. Then a session limit kicks in, or the weekly budget runs dry, and the entire workforce goes on unpaid leave at once. That's a token famine, and it's a trauma most programmers who are still on top of the game know far too well.

If you're employed, you have one alternative to waiting, and it isn't a dignified one. You can go to whoever controls the company's AI budget, bowl in hand, and beg for a reset.

"Please, sir, I want some more."

Tokens for the poor.

During one particularly bad famine, with no reset forthcoming, I had a troubled conversation with ChatGPT, which runs on a different budget and was therefore still speaking to me. I asked it: "In the era of AI-assisted software development, what can I do that is more valuable than waiting until my token budget renews?"

It answered. It lied. Eight of its ten suggestions were things I already delegated to Claude or Codex, depending on the token balance of the day. The other two were the equivalent of fetching a fresh cup of coffee. Actually, one of them literally was fetching a fresh cup of coffee.

So I fetched a fresh cup of coffee.

Then I re-reviewed a pull request I hadn't merged yet. Opus 4.8 had built it with TDD earlier that morning, at 99% branch coverage. Copilot had reviewed it. Codex had reviewed it. Their review comments, mostly nitpicks, had already been addressed. It was nigh-flawless, and it had been waiting all morning on the slowest participant in the whole process.

Me.

I looked at my "perfect programming language" with fresh eyes. I'd been tinkering with it, on and off, for a quarter of a century, through a couple of names and more rewrites than I care to admit. The question behind it had always been the same: how should humans tell computers what to do?

Suddenly I couldn't answer a much simpler one. Who was it for?

Humans? Why?

I parked it. There was no longer any point. Humans have no business writing code any more.

That still left the famines to fill. I found two good uses for them, and both of them involved ChatGPT.

The first was writing. Publishing an article is a perfectly productive use of a token famine, because a normal, free ChatGPT session can help with every step of it without touching the tokens my agents run on. A stronger model would do a better job, of course. But when you're too poor to program, you can still afford to publish.

I'll let you draw your own conclusions about the article you're reading.

The second was reading. I finally had time for all the things I'd never been able to study at the depth I wanted, and ChatGPT turned out to be a tireless tutor. I could keep asking for the derivation, and then for the assumption underneath it, until the only limit left was how fast I could keep up. Some of that reading turned into a new hobby: amateur physics. I had been a physics and maths major back in ye olde times, before I switched to computer science. And contemporary AI could hardly scratch the surface of science, could it?

Surely, this time, I had climbed far enough up the food chain.


I'm writing this in October 2026.

My daily routine is to direct a fleet of agents as they do my bidding, until the session limits kick in or the tokens run out. My fleet, in turn, orchestrates fleets of its own.

They build. They test. They review each other's work. They collaborate. They write the plans and the design documents, and keep the project's status and tasks up to date in Asana. They work on so many things in parallel that the merge conflicts are beyond anything a human could untangle, which is why they perform semantic merges of each other's work instead. They evaluate whether clients and servers are compatible, add compatibility measures where they're needed, and cherry-pick the changes into production.

They monitor my production systems. They tell me about deviations and bugs I wasn't even aware of, and then they fix them. They migrate my development and staging servers and run nearly end-to-end tests against them.

To make all of that possible, I've introduced simulators for every relevant system boundary, giving the agents control over the environment they test in. Well, obviously I didn't introduce them. I asked Claude to.

I've even introduced "human simulators" (same caveat), so the agents can perform the tasks of users. Next, I plan to introduce Mechanical Turks, to let them orchestrate real users as well.

After that, I suppose, the obvious next step is to ask Claude Code to wire-and-fire up an MCP server that hires temp workers directly from Upwork. When it farms out work to other agents, I usually tell it to use "the cheapest model and effort level that is certainly overkill for the job". That same prompt could work just as well for humans. When a real human turns out to be the cheapest option that is certainly overkill for the job, the machines will simply hire one.

I've moved from AI-assisted development to human-assisted development.

In AI-assisted development, the human does the work and the AI helps. In human-assisted development, the machines do the work, and the human supplies what they can't: intent, judgment, constraints, architecture, taste, priorities, skepticism, and the occasional "what the fuck did you do here?" My job is to decide what reality should look like, and to notice when the agents have built a different one.

So when I say "I built this" these days, what I mean is: I asked Claude to.

And the language? I've started designing it again, for today's programmers, which are AIs, not humans. I stand by what I said: humans have no business writing code any more. But AIs have an entirely different skill set and entirely different needs. They never tire of typing, and ceremony costs them pennies. They've read more code than any of us ever will, which means the syntax should be boring and the novelty should go where it pays: into what the compiler can check. Tell an AI "no", and it will cheerfully find a way around the rule, up to and including deleting the test that said no, so every error message has to tell it what to do instead. And they still lie like they're running for office, only less often. Nothing they claim about their code can be taken on faith.

So who is it for? Abelson and Sussman told a whole generation of computer science students that programs must be written for people to read, and only incidentally for machines to execute. They never said who would do the writing. Mine is a language for machines to write and people to read.

Quite frankly, I have no idea what the upper limit is for a capable engineer practicing human-assisted development with a half-decent token budget. I'm fairly sure it isn't linear. One engineer with ten agents is not eleven workers, because agents delegate to agents. They review each other, test each other, and build the tools and environments that let the next generation of agents take on more. Every improvement to the environment pushes more of the work further down the tree.

With all the rigor you'd expect from someone who abandoned physics for computer science, here is my current estimate:

O(human judgment × (number of agents)recursive delegation × quality of environment/tooling)

Big-O notation conveniently ignores constant factors, which is how I've managed to leave out the token budget.

The exponent doesn't come free. You can only delegate what you can decompose, and you can only decompose what you understand, so how deep the tree goes is bounded by how deeply the human understands the problem. Expertise hasn't stopped mattering. It has become the exponent.

Back in 2022, I watched creative directors command an AI to produce hundreds of pieces of art, keep the best, and hand the results to whichever humans were left. Fortunately, I thought, I'm a programmer.

I'm the creative director now.

David Brandt is a computer scientist, systems architect and independent scholar based in Reykjavík.