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 CodeMulti-file, terminal-native, repo-spanning
CursorIDE-integrated, fast, codebase indexing
AiderOpen-source CLI, git-aware
Codex / GPTMature, OpenAI-blessed
GitHub Copilot WorkspaceGitHub-native PR generation
ContinueOpen-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

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 .