By 2026, AI coding agents are an everyday tool for most engineers — used the way grep and IDEs were used in 2010. The hype cycle settled; the workflows clarified. This post is the working set.
What works well
- Boilerplate generation: schemas, CRUD, tests for happy paths.
- Refactors: rename across files, extract a function, shape changes.
- One-off scripts: data migrations, parsers, glue code.
- Test generation: especially for pure functions.
- Small features: well-specified, scoped.
What still needs humans
- Architecture decisions.
- Performance debugging with profiling.
- Cross-system integration with tribal knowledge.
- Open-ended product decisions (“what should this feature even do?”).
- Hard race conditions / concurrency bugs.
The agent does the typing; the engineer does the thinking.
Tool landscape
| Strengths | |
|---|---|
| Claude Code | Multi-file, terminal-native, repo-spanning |
| Cursor | IDE-integrated, fast, codebase indexing |
| Aider | Open-source CLI, git-aware |
| Codex / GPT | Mature, OpenAI-blessed |
| GitHub Copilot Workspace | GitHub-native PR generation |
| Continue | Open-source, multi-provider |
For most senior engineers: Cursor + Claude Code in tandem.
The session pattern
1. State goal explicitly. ("Add idempotency keys to /charge endpoint.")
2. Specify constraints. ("Use the existing IdempotencyKey table.")
3. Show acceptance. ("Returns existing response if key seen in last 24h.")
4. Let agent propose changes; review.
5. Iterate; or take over and finish.
Specificity beats wishing. Vague prompts get vague code.
Read first, then write
Bad: "Add OAuth login."
Good: "Read auth.py and routes/auth.py. We use FastAPI Users. Add Google OAuth alongside the existing password login. Don't change the password flow."
The agent benefits from context. Tell it what to read; it’ll write better.
Boundaries
Things I don’t let agents do:
- Migrations without manual review.
- DELETE / DROP SQL.
- Force-push / rebase on shared branches.
- Modify CI / deploy configs unsupervised.
- Touch the auth layer without my eyes on every line.
Define boundaries in your CLAUDE.md / .cursor/rules / CONTRIBUTING.md.
CLAUDE.md / agent rules
For Claude Code, a CLAUDE.md in the repo:
# Conventions
- Python: FastAPI, async-first, Pydantic v2, SQLAlchemy 2.0
- Tests: pytest + httpx async client
- Logging: structlog with JSON
# Don'ts
- Never edit files in alembic/versions/
- Never run destructive SQL
- Never force-push
The agent reads this on every session. Reduces drift.
Reviewing agent code
Same rigor as junior PRs:
- Does it match the existing patterns in the codebase?
- Are tests realistic or just happy-path?
- Error handling — covered?
- Edge cases — empty inputs, None, large inputs?
- Resources — connections / files closed?
- Security — input validation, SQL injection, secrets?
Agents are confidently wrong sometimes. Trust verify.
What changes for senior engineers
- More design, less typing. The bottleneck shifted.
- More reviewing. Code volume increases; discipline matters more.
- More integration testing. Agents write happy-path tests; you write the gnarly ones.
- More documentation. Agents work better with clear docs; force you to write them.
Productivity is up; standards must keep up.
What changes for juniors
The “type out the boilerplate” learning loop is broken. Juniors who let agents write everything don’t learn. Best junior workflow:
- Try first, then ask agent.
- Read every line the agent writes; understand it.
- Ask the agent to explain its choices.
- Practice writing solo regularly.
The agent is a tutor only if you treat it as one.
Where agents hurt
1. Yes-man problem
Agents tend to “just do it” instead of pushing back. You ask for a bad approach; they implement it. Override by asking for tradeoffs first.
2. Plausible-but-wrong
Code compiles, tests “pass,” looks reasonable, but the logic is off. Especially in domain-specific work the agent doesn’t understand. Read carefully.
3. Spec drift
Iterating with the agent, the implementation drifts from your initial intent. Stop periodically; restate the goal; verify alignment.
4. Context dilution
Long sessions accumulate context that confuses the agent. Start a fresh session for new tasks.
5. Magical thinking
“The agent will figure it out.” It often won’t. The hard parts still need your brain.
Cost economics
Cursor: ~$20/month per dev. Claude Code: pay-per-use; typical heavy user $50–200/month.
Compare to: 1 hour of a senior engineer’s time. The breakeven is trivial.
But: agents don’t replace engineers. They replace some of an engineer’s lower-skill hours.
The new skills
- Prompt clarity — saying what you want precisely.
- Code review at scale — agent volume = more reviewing.
- Specification thinking — defining “done” so the agent can verify.
- Architecture-first — agent fills in the blanks; you draw the blanks.
- Test design — what should the test cover, beyond happy path?
These were always senior skills. They’re more valuable now.
Common mistakes
1. Vibe coding
“Make it work somehow.” Agent ships something; you ship it; subtle bug ships too.
2. No PR review
Agent’s PR auto-merged. The bug is yours.
3. Letting agents own architecture
Agents flatten patterns. Resist; design intentionally.
4. Skipping tests because agents wrote them
Agent tests are happy-path baseline. You add the edge cases.
5. Over-trusting in domain-specific code
Domain knowledge encoded in the codebase isn’t always in the model. Watch.
What I’d ship today
For productive agentic coding:
- Cursor + Claude Code as the primary tools.
- CLAUDE.md / .cursor/rules with conventions.
- Mandatory PR review even for agent-written code.
- Integration tests I write myself.
- Boundary list of things agents don’t touch.
- Fresh sessions per task.
- Agents as collaborators, not replacements.
Read this next
- LLM Agent Frameworks 2026
- LLM Agent Error Recovery 2026
- Designing Tools for AI Agents 2026
- Prompt Engineering 2026
If you want my CLAUDE.md template + agent boundary checklist, it’s at rajpoot.dev .
Building something AI-, backend-, or data-heavy and want a second pair of eyes? I do consulting and freelance work — see my projects and ways to reach me at rajpoot.dev .