{
  "$type": "site.standard.document",
  "content": "---\ntitle: \"Coding agents and the plasticity of code\"\ndescription: \"Code has always felt brittle---most changes break it. Coding agents change\n  that dynamic, absorbing the cognitive load of big refactors and making code\n  feel plastic rather than rigid.\"\ntags: [ai, dev]\n---\n\nCode has always felt rigid to me. Brittle, even. Most of the ways you poke,\nprod, or change it will break it. And even when you know what you're doing and\nwhen you're making a change that's unambiguously a good one you often need to\nbreak it in one place and then manually fix it up in a dozen others to\ncompensate.\n\nThat's not a bad thing; rigid things can be super strong. But in the 20+ years\nI've been writing code as a CS academic and\n[maker of software things](https://github.com/benswift), it's always felt like\njust code's deal. It's precise, so it's fragile.\n\n[Like](https://lucumr.pocoo.org/2025/12/22/a-year-of-vibes/) [many](https://steveklabnik.com/writing/thirteen-years-of-rust-and-the-birth-of-rue/) [others](https://fly.io/blog/youre-all-nuts/)\nin 2025, though, I've been messing around with Claude Code and other coding\nagents. It feels different. I talk to the codebase in natural language, and it\n_deforms_ but ends up still working (most of the time). There are still plenty\nof intermediate steps where the agent runs the change-observe-fix loop, but\nthose usually don't require my intervention. The overall feeling is of code\nthat bends rather than breaks, and that's much more plastic than before.\n\nSome folks have been thinking about\n[malleable software](https://www.inkandswitch.com/essay/malleable-software/) for\na while now. Their framing:\n\n> The original promise of personal computing was a new kind of clay. Instead, we\n> got appliances.\n\nGeoffrey Litt's essay\n[Malleable software in the age of LLMs](https://www.geoffreylitt.com/2023/03/25/llm-end-user-programming.html)\nexplores how LLMs might finally deliver on that promise, enabling end-users to\nreshape their tools without learning to program.\n\nBut I'm coming at this from a different angle (indeed, it's why I used \"plastic\"\nin this post rather than the term malleable, which would otherwise be a good\nsynonym). I already know how to program. The brittleness I'm describing is\nabout the sheer effort required to hold all the pieces in your head while you\nmodify code: the \"activation energy\" required to take a bite out of a big\nrefactoring task where you know lots of changes have to be made all through\nthe codebase and the thing won't work until they're all done. The agent\nabsorbs that cognitive load. It remembers which files need updating, runs the\ntests, fixes the knock-on errors.\n\nI wouldn't call what I'm doing vibecoding. I'm at least looking at (and\nsometimes tweaking) every diff. Or maybe that is vibecoding; I don't really\ncare. I often watch the agent do its thing, and interrupt it when I can see that\nit's doing something dumb. That happens less than it did even six months ago,\nbut it still happens. But more and more I find myself nudging the agent with\nlanguage to do stuff that I know how to do in code.\n\nParadoxically, the things that help the writing-code-with-an-agent process feel\nmore plastic are the things that (in another sense) make it more brittle: adding\ntests and using types (even in languages where they're optional). They give the\nagent a signal that the thing you changed here means you broke something over\nthere, and the agent is really good at responding to that signal. I'm freed up\nto make changes and then see their endpoints, where things \"work\" for a shallow\ndefinition of that term, and I get to do the deeper reflecting on whether the\nchange is any good.\n\nI really do think I've been more productive this year. It's true that I'm in a\nbit of a goldilocks zone for these tools: I've already been doing this for 20\nyears and have lots of experience, I'm a wide but (in some cases) shallow\nsoftware development dilettante so I know approximately what tool to reach for\nin lots of situations even when I'm fuzzy on the details, and I also have a job\nthat involves a _lot_ of writing experimental/research prototypes to explore\ninteresting ideas, but no-one dies if my software has bugs in it.\n\nBut as I reflect on the year that was, it's this feeling of software plasticity\nthat I think is the main change that coding agents have given me. And I quite\nlike it, and I'm excited to see what happens as they get better.\n\n:::info[Plug for LLMs Unplugged]\n\nIt's not about the plasticity stuff, but as well as using these models a lot\nthis year I've also been thinking a lot about how we teach students (and the\nwider public) about what LLMs are, what they aren't and how they work. The\nfruits of that labour are now online at\n[llmsunplugged.org](https://www.llmsunplugged.org) and if you check them out and\nfind them useful I'd [love to hear your feedback](mailto:ben@benswift.me).\n\n:::\n",
  "createdAt": "2026-05-13T23:14:41.484Z",
  "description": "Code has always felt brittle---most changes break it. Coding agents change that dynamic, absorbing the cognitive load of big refactors and making code feel plastic rather than rigid.",
  "path": "/blog/2025/12/23/coding-agents-and-the-plasticity-of-code",
  "publishedAt": "2025-12-23T00:00:00.000Z",
  "site": "at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.publication/self",
  "tags": [
    "ai",
    "dev"
  ],
  "textContent": "Code has always felt brittle---most changes break it. Coding agents change that dynamic, absorbing the cognitive load of big refactors and making code feel plastic rather than rigid.",
  "title": "Coding agents and the plasticity of code"
}