How I use AI coding assistants without shipping their mistakes
By Daniel Chen · · 3 min read
I use AI coding assistants every day, mostly Claude Code and Codex: to explore an unfamiliar codebase, draft boilerplate, write tests and review my own changes. They make me faster. They are also confidently wrong often enough that I treat everything they produce as a claim, not a fact.
Start from the ticket, not the prompt
Before asking an assistant anything, I write down what done means: the expected result in the ticket. Every suggestion is then checked against that. Assistants love helpful extras, such as validation nobody asked for or a refactor of a shared helper. Extras are scope creep with a friendly face.
Evidence comes from the running system
An assistant can narrate a perfect end-to-end test that never happened. Real evidence is a response from the actual endpoint, the row in the database, the message on the queue, the log line found by correlation id. If I cannot show one of those, I have not verified anything.
Check the blast radius yourself
Assistants see the files you give them. They rarely know who else calls the function they just changed, which other repository consumes the message, or that the code runs on every trade. Before accepting a change I search for every caller and ask two questions: what happens to them, and what does this cost on the hot path?
Keep the change small
The smallest change in the right layer is easier to review, easier to explain and easier to revert. When an assistant proposes something big, I ask for the minimal version or write it myself.
Own the explanation
If I cannot explain a line in review, it does not ship, no matter who wrote it. That rule is what makes AI assistance safe. Used this way, assistants are a real multiplier: more time on design and verification, less on typing.
- AI
- Claude Code
- Code review
- Engineering practice