Treat agents like a software factory

Chat loops are too small. The useful unit is an AI developer workflow: prompt in, isolated agents and checks in the middle, reviewed code out.

For a while I thought “agentic coding” meant getting better at the chat loop. Write a prompt, review the diff, nudge, repeat. That loop still matters. It is just too small a frame for how I actually want to ship.

What clicked for me was treating the work like a software factory. Prompt goes in. A workflow of agents, scripts, and checks runs in the middle. Reviewed code comes out. IndyDevDan calls these AI developer workflows, or ADWs. Once I started using that name, a lot of messy experiments sorted themselves into one idea: make the workflow the product, not the single reply.

Inside that factory there are three actors: engineers, agents, and code. Code is the underrated one. It is fast, reliable, and costs zero tokens. Lint, types, tests, generators, small CLIs. Agents are flexible and expensive. Engineers are slow in keystrokes and expensive in attention, but they still own taste, risk, and the call on whether something should ship. The skill is knowing which actor should move next.

A simple ADW starts as engineer to agent to engineer review. That is fine for a small change. Scale comes from inserting deterministic checks before you burn another human pass: lint, typecheck, unit tests, whatever this repo already trusts. Then add a test agent that tries to break the change before I see it. I stay at the plan at the start and the review at the end. The middle gets denser without me living in the middle.

Isolation is what makes parallelism feel safe. I use git worktrees so each ADW gets its own checkout instead of fighting over one dirty tree. One worktree can plan, another can build, another can run tests, and the diffs stay readable. Sandboxes are the upgrade path when you want stronger walls than a worktree, but worktrees are the practical first step on most of my machines.

Once you have isolation, a kanban board stops being theater. A ticket becomes an ADW: planner agent, build agent, test agent, then engineer review. Specialized agents beat one mega-agent that pretends to do everything. The advanced version is a factory router that reads the ticket and picks the right ADW template. I am not fully there yet. I am close enough that the shape is obvious.

The meta move is the part that feels opposite of vibe coding. Vibe coding asks the model to invent the next file. Factory work asks you to build the system that builds the system: templates, hooks, review checklists, worktree scripts, and the boring glue that makes the next ticket cheaper than the last one. Anthropic’s writing on the “long-running agent” loop points the same direction. Stay in the loop long enough to leave machinery behind, not just a chat transcript.

So my bar for “using agents well” is no longer how clever the prompt sounded. It is whether I can point at an ADW, run it in a worktree, trust the checks, and still keep product judgment at the edges. Prompt in. Workflow in the middle. Results out. That is the factory I want to keep improving.

← All posts