Building With AI Without Letting It Write Your Architecture
AI tools made me measurably faster — but only after I worked out which parts of the job to hand over and which parts to keep. Here is where the line sits.
I use AI assistance every working day. It has genuinely changed how fast I ship. It has also, on two occasions, cost me a full day because I trusted it with a decision it had no business making.
What AI Is Genuinely Excellent At
- Boilerplate — migrations, form scaffolding, resource controllers, seeders. Work that is tedious and completely deterministic.
- Translation — turning a SQL dump into migrations, or a REST endpoint into a typed client.
- First-draft tests — it will happily enumerate edge cases you would have skipped at 6pm on a Friday.
- Explaining unfamiliar code — dropping into a legacy codebase is dramatically faster with a good explainer.
What It Should Never Decide
Architecture. Data modelling. Anything involving a trade-off between two things it cannot measure — like how much complexity your client's team can maintain after you hand over.
AI optimises for a plausible answer. Architecture is about choosing which future pain you are willing to accept. Those are not the same problem.
The Workflow That Actually Works
- I design the data model by hand. Tables, relationships, constraints. On paper first.
- I describe the boundary, AI fills the inside. "Write a service that takes this input and returns this shape" — with the input and output already decided by me.
- I read every line before it is committed. Not skim — read. If I cannot explain what a block does, it does not go in.
- I test the seams. AI-written code is usually locally correct and globally naive. Bugs live where two pieces meet.
The Trap: Confidently Wrong Code
The failure mode is not code that crashes — you catch that instantly. It is code that runs, looks right, and is subtly wrong: an off-by-one in a date range, a missing where on a soft-deleted scope, an N+1 query that only hurts at scale. Those cost real money to find in production.
What Changed for My Clients
Delivery times dropped, but the bigger change was in scope. Work I would previously have quoted as "too much for the budget" — admin panels, thorough test suites, documentation — now fits. That is the real gain: not writing the same code faster, but shipping the things that used to get cut.