Simon Willison: Engineering practices that make coding agents work

2026-05-18 · source · source ↗ · raw capture · wiki page

Summary

Simon Willison's talk at Gergely Orosz's inaugural Pragmatic Summit (February 11, 2026, San Francisco). Co-presented with Marcos Arribas (VP Engineering, Statsig). Willison walks through his personal engineering practices for working with coding agents — what he's learned from shipping hundreds of projects, and where the boundaries of responsible agent use currently sit.

Key Points

  1. The adoption ladder has a new rung: don't read the code. Programmers progress from asking chatbots questions to letting agents write snippets, to agents writing more code than humans, to writing no code at all. The newest stage — arriving only weeks before this talk — involves not reading the code the agent produces. Willison calls this "clear insanity" but says it's possible if you shift energy into making the agent prove the code works.

  2. Trust arrived in November 2024, and again last week. The key models are Claude Opus 4.5 / GPT-5.01 (November) and later Opus 4.6 / Codex 5.3. Before November, agent-written code was "janky" and needed fixing. Now, for well-understood problem classes, code is predictably correct. Willison reports "one-shotting basically everything" and no longer needing to ask whether it will work.

  3. Test-driven development is the unlock, and tests are now free. Willison hated TDD for himself but finds it perfect for agents. Telling an agent "use red-green TDD" (five tokens) dramatically raises the chance of working code. Because agents do the work, the old excuse that tests are extra effort evaporates. "Tests are no longer even remotely optional."

  4. Manual testing by the agent catches what automated tests miss. Willison instructs agents to start the server and exercise the API with curl, which often surfaces bugs the test suite didn't cover. He built a tool called Showboat that produces a markdown log of the manual test session.

  5. Conformance-driven development: let a test suite be the spec. When a language-agnostic conformance suite exists (e.g., WebAssembly's spec tests), you can give it to an agent and say "write code until this passes." Willison also reverse-engineers a standard by having an agent build a test suite that passes against six existing implementations, then using that suite to drive a new implementation.

  6. Code quality is a choice you make — or don't. For throwaway "vibe-coded" tools, spaghetti is fine. For maintained projects, you can feed refactoring instructions back to the agent and end up with code better than you'd write by hand, because the agent does the tedious cleanup you'd skip.

  7. Templates and existing patterns act as a straitjacket for the agent. Starting from a cookie-cutter template that sets up tests, CI, and a README means the agent will follow those patterns. Keeping your codebase high-quality ensures the agent adds to it in a high-quality way — exactly like a human team that copies the first Redis usage.

  8. Prompt injection is the lethal trifecta, and sandboxing is the only real defense. The three legs: a model with access to private data, exposed to malicious instructions, and possessing an exfiltration vector. The only guaranteed fix is to cut off one leg — usually the exfiltration channel. Sandboxing (containers, remote VMs) limits damage. Willison runs Claude with dangerously skipped permissions on his Mac despite being "the world's foremost expert on why you shouldn't do that," but defaults to Anthropic's hosted containers on his phone.

  9. Managing agents is mentally exhausting, and that might save our careers. Keeping three or four agents busy in parallel requires operating at full throttle. After a couple of hours, Willison is "done for the day." The limit isn't the AI; it's the human's cognitive stamina. That, he suggests, is why one engineer won't replace a thousand.

  10. The models' capabilities are a moving target we haven't begun to map. Willison refuses to predict more than a week ahead. He believes it will take six months just to explore what Opus 4.6 can do. His advice: every time a model fails at something, tuck it away and retry in six months — you might be the first to discover a new capability.

  11. Open source is being reshaped in uncomfortable ways. Why use a date-picker library when you can vibe-code the exact widget you want? The market for paid component libraries is collapsing. Meanwhile, maintainers are drowning in junk AI-generated pull requests, to the point that some want GitHub to disable pull requests entirely.

Notable Quotes

Tools and Practices

Gaps and Unanswered Questions


Full transcript available at the source gist. This summary condenses a 28-minute talk.