The Workshop Has Changed | Josh Lospinoso Skip to content Sunday Field Notes | May 24, 2026<br>The Workshop Has Changed<br>Returning to software after building an institution, and finding that AI has made the old craft faster, stranger, and more dependent on judgment.<br>“<br>Well, I know what I like and what I don't like.
Rick Rubin, in conversation with Anderson Cooper for 60 Minutes<br>The AGENTS.md file was open in one pane of the IDE. The test runner was in another, red but not catastrophically red. A planning note sat beside both of them, plain and procedural: inspect the boundary, write the missing test, keep the public interface stable, do not touch the data loader unless the failure proves the loader owns the bug. The instruction file was plainer still: “Discover current repo facts before editing. Prefer inspecting files, commands, and tests over guessing.” The repo had enough shape to resist casual edits. The assistant had enough context to be useful. I had enough history to distrust both of us.
This was supposed to be familiar ground, and in some ways it was.
For much of my adult life, software was the workshop. I spent two decades learning the craft: how to hold a system in my head, how to distinguish a local fix from an architectural lie, how to hear when an abstraction had become a self-esteem project. I read Uncle Bob Martin and Kent Beck with the appetite of a convert, got massively into test-driven development, and wandered from Perl to Java to C# to R in graduate school to C, C++, assembly, and Python for Army cyber work. Eventually I arrived at the only enlightened position language wars have produced: different tools are good for different jobs. I wrote C++ Crash Course because I loved the precision and danger of the work. The compiler had a moral quality. Tests did not care what I intended. Good documentation was a form of mercy for the future.
Then I spent years building an institution.
Building an institution expands the surface area of a day until the surface area is the job. Being CEO sits next to confrontation, disappointment, emotion, risk, and other people’s fear. For the emotionally attuned, that adjacency is weather. After hiring a CEO for Shift5, I came back to software with the strange relief of a person returning from war to a house that is still standing. The bench shrank the world. I needed that.
The bench was there. The tools were there. The rituals were there: read the docs, make the change, run the tests, review the diff, merge only what you understand. Some of the old hardships were gone, or at least diminished. Some of the tools were better. Some were so much better that they were disorienting. You reach for the familiar chisel and discover that someone has installed warp drive in the drawer.
The first time I felt this in a serious way was at a hackweek. I was building a seq2seq model for simulation and going back and forth with a major foundation model in what now feels like an earlier posture. The product problem underneath it was concrete. We often needed to help customers make better decisions from noisy operating environments: find clear signal in telemetry, infer failure modes, and move faster with more precision. But the scientific method needs data. Sometimes a customer has operating data; sometimes only a proxy; sometimes the product slice has to be demonstrated before the real environment is available.
The aspiration was to simulate close-enough-looking time-series data: patch plausible failure modes into traces, revise covariates so the result resembled operational reality, and create enough of a slice to unblock demos, early modeling, and product integration. Heuristics were too brittle. Classical statistical models were often the wrong tool. We wanted generative models because the bottleneck was making plausible worlds in which the product could begin to learn.
In that setting, the model was extremely useful. Not omniscient. Not magical. Just practically useful. I would ask for a snippet, a module explanation, a tensor-shape sanity check, or a pointer into documentation. It generated boilerplate I did not want to type. It read module docs without getting bored. It reminded me of idioms I knew but did not have loaded in memory. It did not replace judgment. It reduced the tax on mechanics.
The interaction changed when the assistants moved into the IDE. I was no longer consulting a model from outside the work. I was talking about what I wanted to build while staying inside the workshop. The repo, tests, and instructions were present. The assistant could read context, propose changes, ask for permission, discover that my request was underspecified, and wait with unnatural patience while I figured out what I actually meant.
That was when I noticed something unpleasant: I was often the bottleneck.
The system still made mistakes. Sometimes it was confidently wrong in the old familiar way, where fluency impersonates understanding. Sometimes it wanted to touch...