How I use AI — and what it still can't do for me

I use AI heavily. More days than not, the first draft of a function came out of a model. The real question for me is not whether to use it. It is where to let it drive, where to put my hands back on the wheel, and what to keep doing by hand because the output I want is not code at all.

I write code with AI the way a senior engineer leads a smart junior: tell them what good looks like, let them propose, review everything, challenge the parts that don't feel right, and override without apology when they fall for a plausible-looking wrong answer. The output is mine. The accountability is mine. The model is a very fast colleague who sometimes makes things up.

On Onlycouplez I shipped a reflection generator that was architecturally dangerous — both partners' private intakes could end up in the same model context. The first implementation worked. The audit I ran on my own code found the leak. I rewrote it as a map-reduce — three separate calls, neither partner's raw words ever reaching the other's output — and I kept the broken version in the file, labelled deprecated, as a receipt. AI helped me write both versions quickly. It did not help me catch the leak.

The durable advantages are still human. Focus — closing twenty tabs and sitting with one problem until I understand its shape. Discipline — not merging a passing test if I can't explain why it passes. Adaptive learning — picking up a new library by reading its code, not just by asking a model to use it. Taste — knowing that the elegant answer the model generated solves a problem I don't actually have, and reaching for the ugly one that fits the real system.

AI is excellent at a first pass. Excellent at the mechanical layers between what I know and what I want. It is bad at knowing what I actually need. On FieldFlow AI I used models to draft the LangGraph nodes and the policy checks. The decision that nothing stateful could run until deterministic policy had decided it was allowed — that was not an output I could prompt out. That was a design principle I held, and the model served it.

On Ecou, a European agri-tech client's voice-first ordering platform, the model was never allowed to invent a product or a county. The grounded catalogue and the sanitize layer in front of dispatch are the guarantee, not the prompt. Grounding is a technique. The database check after it is the contract.

What I teach the juniors I mentor: use AI, use it a lot. Then review everything it hands you as if the smartest wrong-sometimes person you have ever worked with wrote it. Keep your focus and your discipline — those are the two things it cannot generate for you. And when you ship, you ship. The model does not take the blame.