Agent-assisted development: where it helps and where it doesn't
Six months of using Claude Code for daily development tasks. What works, what doesn't, and what I've changed about how I work.
The short version
Agent-assisted development is genuinely useful for a narrow class of tasks and genuinely bad for another. The error is applying it uniformly to everything.
Where it actually helps
Mechanical transformations at scale. Renaming a field across 40 files, converting a pattern from one convention to another, adding a consistent null-check to every call site. This is tedious by hand, easy to describe precisely, and easy to verify afterward.
First draft of boilerplate. Setting up a new project structure, writing a test harness, scaffolding an API client. The output needs review but it beats starting from a blank file.
Explaining unfamiliar code. “What does this query do and why does it use this join order?” is often faster than reading it cold, especially in someone else’s codebase.
Generating test cases. Describing a function’s contract and asking for edge cases surfaces things I’d have missed. I don’t accept them uncritically, but the list is a useful checklist.
Where it doesn’t help
Logic that requires understanding the system. An agent can’t know that the ProcessedDate column is updated by a trigger that runs after a flag is set in a different table. It’ll generate plausible-looking code that’s wrong in ways that won’t fail until the wrong moment.
Performance work. The agent doesn’t know your index structure, your query plan, your data distribution. It’ll suggest generic optimizations that may or may not apply.
Anything where the specification lives in your head. If I can’t describe what I want precisely enough that I could hand it to a junior developer, I can’t hand it to an agent.
What I changed about how I work
I stopped trying to use agents for everything and started treating them like a fast, tireless pair-programmer who has no business context. They need explicit constraints, concrete examples, and verification steps. They work best when the task is well-specified, bounded, and mechanically verifiable.
The other change: I write CLAUDE.md files now. Capturing project conventions and constraints upfront saves a lot of re-explanation across sessions.