How I use AI to accelerate my development workflow
Where AI genuinely speeds up development — boilerplate, debugging, tests, docs, and deployment — and where you still need human judgment.

AI coding assistants are now part of my daily toolkit, but not as an author I blindly trust. I treat them as a very fast junior pair programmer: great at routine work, useful for brainstorming, and requiring review on anything that matters. Here's how I fold AI into each stage of development without letting it rot my understanding.
1. Boilerplate and scaffolding
The highest-value use is work I'd otherwise copy-paste anyway:
- Generate component skeletons, CRUD routes, and config files.
- Draft SQL migrations from a described schema.
- Write repetitive mappers and DTOs.
This frees mental energy for the parts that actually need thought.
2. Debugging and explanation
Paste an error and the surrounding code; ask for likely causes. I still verify, but it surfaces hypotheses faster than staring.
ts
// I ask: "why does this throw 'Cannot read properties of undefined'?"
const user = await getUser(id);
return user.profile.name; // user may be null
Often the act of writing a precise prompt reveals the bug to me.
3. Tests
AI is good at writing test cases once it understands the function:
- Edge cases I might forget (empty input, null, huge values).
- Table-driven tests from a spec.
- Mocks and fixtures for isolated units.
I review assertions to make sure they test intent, not just happy paths.
4. Documentation
- Turn a messy function into a clear docstring.
- Summarize a module for onboarding docs.
- Draft README sections from the code.
It's a first draft, not a final — I correct inaccuracies.
5. Deployment and ops
- Generate Dockerfiles and CI workflows from a template.
- Explain cryptic error logs from a container or cloud console.
- Suggest Terraform/infra snippets (then I read them carefully).
6. Where AI falls short (use your own brain)
- **Architecture decisions** — it optimizes for plausibility, not your constraints.
- **Security** — it happily writes insecure code that looks fine.
- **Novel domains** — it fills gaps with confident guesses.
- **Understanding** — accepting output you don't comprehend is how bugs ship.
My rules
1. Never merge AI output I don't understand. 2. Always run tests and type-checks on generated code. 3. Use it to explore, then write the final version myself when it matters. 4. Keep learning the fundamentals — the assistant is only as good as the reviewer.
Used this way, AI compresses the boring parts of development and lets me spend more time on design and judgment. It accelerates the work; it doesn't replace the thinking.