Let the AI cook | ivan.codes
I keep seeing posts where somebody walks through the elaborate workflow they figured out for getting AI to write production code, and the workflow gets way more credit than it deserves. The two things doing the work are the stack the model is writing into and whatever the developer has built up over their career: taste, pattern recognition, a feel for which way the code wants to go. Everything on top of those two is decoration.
What I hear from people trying to follow those workflows usually sounds something like this:
Spent an hour on this and Claude still couldn't get it right. I gave it the whole file, listed every edge case, told it exactly which function to touch, specified the naming convention. It still messed it up.
Prompt constraints<br>click to toggle
Specify the fileList every edge caseName the functionPin the approachDefine namingMatch this style
Solution space
0 of 6 constraints activeSolution space: 112 / 112
In cases like this the prompt itself is the problem, because each constraint added to it narrows what the model can do, and by the time you've stacked five or six the field of view is small enough that the model has to thread a needle through whatever assumptions you packed in along the way. Any time one of those assumptions is wrong, and at least one usually is, the output looks like a failure even though the model was doing exactly what you asked.
My version is usually two turns. The first one points the agent at context I already have locally, the second one says what to build:
Brownfield<br>GreenfieldWorking in an existing codebase.
01Spin up an agent to familiarize yourself with the context in [folder].
02Now fix the session expiry bug.
Both work because the priming step alone ticks a bunch of boxes the over-prompter is trying to hit one at a time. Once the agent has read the reference it naturally matches the conventions, the naming patterns, the way functions are structured, the way errors get handled, all the stuff people otherwise try to spell out constraint by constraint.
Once you accept the model can write the code, you're left with a choice about how to work with it. That's where most devs shoot themselves in the foot. Letting the model run feels like giving up control, while inventing a workflow feels like the responsible move, even when it produces worse work in more time.
The reason that feels like losing control runs deeper than the code itself. Devs have spent twenty years tying their sense of worth to what they produced, the cleverness of a solution, the abstraction nobody else saw, the late-night fix that worked on the second try, all of which was how the industry measured you and how you measured yourself. When a model arrives that can produce the artifact for you, often a better one, inventing a new layer of work it can't do yet is how you keep being at the center of things, but the layer keeps shrinking, and the people who can't let go end up spending more and more of their time on ceremony that exists so they can still feel essential.
What's left for the developer is the harder part of the job, which is picking the stack, having the taste, and catching the moment the output starts to drift, and the elaborate process layered around all of that is mostly busywork that lets you feel productive while you avoid the harder, vaguer thing.
Let the AI cook.