Write-up · Ways of working

Agent-assisted engineering, with guardrails

Most of my work now is deciding where an agent needs a guardrail rather than writing the code by hand. This is what that actually looks like in a production codebase, including the parts that don't work.

Why write this down

"Uses AI tooling" has become a line on everyone's CV and it means almost nothing. It covers someone who occasionally autocompletes a function and someone who has restructured how their team ships. The difference is not enthusiasm, it's what you've had to change about your engineering practice to make the output trustworthy — so that's what I want to describe.

Where agents run in my workflow

The principle: the value isn't the generated code

The generated code is the cheap part. What makes agent-assisted development actually faster is the layered checking that lets you accept that code quickly, and the honest answer is that a lot of teams have adopted the generation without adopting the checking. That's why it feels fast and then doesn't.

So the work migrates. Time I used to spend writing implementation now goes into: making the boundaries type-safe enough that a wrong assumption fails at compile time rather than at runtime; making the checks cheap enough to run constantly; and making failures legible enough that the agent can act on them without me translating.

Where I don't let them run

Anything where the failure mode is silent and expensive. In my case that's the paths that touch money, orders and manufacturing instructions — a wrong configuration doesn't throw an exception, it produces a physical object that is wrong and a customer who is unhappy. Agents assist there; they don't drive.

The other category is anything that requires knowing why a decision was made rather than what the code does. Agents are good at the codebase and bad at the politics, and a surprising amount of engineering is the second thing.

The hiring consequence

When we hired a front-end developer, I designed the take-home exercise with AI tooling explicitly permitted, and said so in the brief. Banning it would have tested whether a candidate could simulate 2021, which is not a skill I need. Permitting it moved the assessment onto the thing I actually wanted to know: can you tell when the output is wrong, and can you explain why you kept what you kept? I screened around 30 applicants and ran the interviews on that basis.

What I'd tell a team adopting this