What separates a useful agent from an expensive one
Most teams adopt an AI coding agent the same way they adopted autocomplete: open the tool, type a request, hope. That is the wrong mental model, and it is why so many developers quietly conclude the hype is overblown. An agent is not a faster keyboard. It is a junior teammate that works exactly as well as the brief, the context and the review process you give it. Get those three things right and the same model that felt gimmicky last quarter starts shipping real pull requests.
- Workflow beats model choice. The gap between a casual user and a deliberate one is far larger than the gap between two frontier models.
- Context is the input that matters. An agent cannot read your intentions — show it the code, the constraints and the known pitfalls before you ask for anything.
- Project memory is not optional. A CLAUDE.md or AGENTS.md file gives the agent persistent rules it cannot infer from the code alone.
- Supervision is the productivity multiplier. Plan-then-execute with a review at each step beats one-shot prompting on both quality and rework.
Before you ask an agent to write anything, ask it to read. A first message such as Read the auth module and the relevant tests, then summarise how sessions are validated forces the agent to load the right context and lets you catch a wrong assumption before it becomes a wrong diff.
The five workflow patterns
There is no single correct way to run a coding agent. There are five recognisable patterns, and good teams switch between them depending on the task. A solo developer in Bengaluru shipping a side project and a platform team in Manchester maintaining a payments service will lean on different ones — but everyone should know all five.
| Pattern | How it works | Best for |
|---|---|---|
| Sequential | You and the agent take turns — it proposes, you review, you correct, it continues. One conversation, tight loop. | Day-to-day feature work and bug fixes where you want to stay close to the code. |
| Operator | You stay hands-off at the keyboard and steer with instructions only; the agent drives the editor, terminal and tests. | Well-scoped chores — dependency bumps, lint fixes, mechanical migrations. |
| Split-and-merge | You break a large task into independent slices, run an agent on each, then review and merge the results yourself. | Cross-cutting changes such as renaming an API across many files or modules. |
| Agent teams | A lead agent delegates to specialised sub-agents — one searches, one writes tests, one reviews — each in its own context. | Complex tasks that need isolated focus and would otherwise overflow a single context. |
| Headless | The agent runs non-interactively from a script or CI pipeline, with no human in the loop during the run. | Repeatable automation — triaging issues, drafting changelogs, batch refactors overnight. |
Sequential and operator: the everyday two
The sequential pattern is where most builders should live. You ask for a small change, read the diff, push back, and the agent adjusts. It feels like pair programming, and it is the safest way to keep an agent honest because you catch drift after every step. The operator pattern is the same loop with a longer leash: you describe the outcome and let the agent run the terminal and tests itself. Use it for mechanical work where the right answer is unambiguous — a Django dependency bump for a startup in Pune, or a TypeScript strict-mode migration for a fintech in London.
Split-and-merge, agent teams and headless
Split-and-merge is how you parallelise. If you need to thread a new tracing header through forty files, give each agent a slice and review the merged result. Agent teams push that further — a lead agent coordinates specialised sub-agents, which is now a first-class feature in tools that support multi-session orchestration. Our walkthrough of Claude Code's agent view covers how one CLI runs many sessions at once. Headless is the production end of the spectrum: the agent runs from CI with no human present, so it demands the strongest guardrails — narrow scope, allow-listed tools and a tested rollback path.
Context and planning: the agent is only as good as its brief
The single biggest lever on output quality is the context you provide. A coding agent cannot see your architecture diagram, your incident history or the unwritten rule that the billing service must never block on a network call. If it matters, it has to be on screen. Before asking for execution, give the agent the relevant code, the docs that explain it, the constraints it must respect, the known pitfalls and your preferred approach.
The most reliable habit is to load a plan before you ask for code. Have the agent write a spec.md or plan.md — what the change is, which files it touches, the edge cases, the test strategy — and review that document first. Planning is cheap; tokens spent on a plan are far cheaper than tokens spent unwinding a confidently wrong implementation. Once the plan is right, the execution step becomes mechanical and the agent rarely surprises you. This plan-first discipline is the same one that separates the strong open-source agents we compared in OpenCode vs Aider vs Cline vs Continue from the ones that feel like a slot machine.
Do not paste your entire repository into the prompt and hope. Flooding the context with irrelevant files dilutes the agent's attention and raises cost without raising quality. Curate: show the two or three files that matter, name the constraints explicitly, and let the agent ask for more if it needs it.
Project memory: a config file the agent reads every session
Context you type by hand is gone the moment the session ends. Project memory fixes that. An agent-config file — CLAUDE.md in Anthropic's tooling, or the cross-tool AGENTS.md standard that a growing list of agents now read — is loaded automatically at the start of every session. It is where you put the durable knowledge the agent cannot infer from code alone.
Keep it short and practical. A good file lists the bash commands that build, test and lint the project; the code style rules a linter cannot express; the workflow conventions, such as branch naming or that every change needs a test; and the sharp edges, such as a service that must not be touched without a migration. A team in Hyderabad and a team in Bristol will write different files, but the structure is the same:
# AGENTS.md
## Commands
- Build: npm run build
- Test: npm test -- --watch=false
- Lint: npm run lint
## Code style
- TypeScript strict mode; no `any`.
- Prefer named exports over default exports.
## Workflow
- Branch from main; never commit to main directly.
- Every behaviour change needs a test in the same PR.
## Gotchas
- billing/ must not call the network synchronously.
- Run the migration script before touching the schema.
If you use more than one agent — and many teams do — write AGENTS.md as the source of truth and symlink CLAUDE.md to it, so every tool reads the same rules. Treat the file as living documentation: when an agent makes the same mistake twice, the fix is usually a new line in project memory, not a longer prompt.
Sub-agents: specialised assistants in their own context
A sub-agent is a focused assistant that runs in its own context window with its own allowed tools, invoked by a main agent for a specific job. The point is isolation. A task that reads fifty files to answer one question — “where is rate limiting enforced?” — would otherwise dump fifty files of noise into your main session. Hand it to a search sub-agent and you get back a two-line answer while the main context stays clean and focused on the work.
Sub-agents earn their keep on three kinds of task: wide reads across a large codebase, log or test-output analysis, and isolated review passes where you want a fresh perspective unbiased by the conversation that produced the code. You can also constrain their tools — a review sub-agent that can read files but not edit them cannot accidentally change anything. As the agent ecosystem standardises around shared protocols, this delegation model is becoming portable across tools; our look at the MCP 2026 roadmap covers how server cards and authentication are making specialised agents safer to wire into a real stack.
Human oversight: supervised, not autonomous
The fastest way to lose trust in an agent is to let it run unsupervised and then discover the mess in code review. Supervised use is the productive default: let the agent generate and run code, but review each step as it happens. The plan-then-execute pattern makes this natural — you approve the plan.md, then watch the execution against it, so a wrong turn is obvious within a step or two rather than buried in a 600-line diff.
One-shot prompting — a single big request, a single big answer — is the pattern to retire. It concentrates all the risk into one unreviewable jump. Break the work down, keep the loop tight, and reserve headless, unsupervised runs for tasks that are genuinely repeatable and well-guarded. A useful rule: if you would not let a new graduate hire merge it without review, do not let an agent either.
Want to discuss this with other verified Builders?
Every article on AI Tech Connect is written by a Verified Builder. Browse profiles, shortlist who you want to hire or collaborate with.
Browse Builders →What realistic productivity actually looks like
Per 2026 developer surveys, developers report saving roughly 30 to 60 percent of time on coding, testing and documentation when they use AI tools well. That is a meaningful edge — but the spread is the story. The difference between the bottom and the top of that range is not the model; it is whether the team integrated the agent into a workflow on purpose.
Teams that sit near 30 percent tend to use agents casually: ad-hoc prompts, no project-memory file, no plan step, output reviewed loosely or not at all. Teams near 60 percent have done the unglamorous work — a curated AGENTS.md, a habit of writing a spec before code, sub-agents for wide reads, and a tight review loop. The productivity is real, but it is earned through intentional workflow integration, not unlocked by buying a subscription. The encouraging part is that none of it requires a bigger model. It requires a few hours of setup and a change in habit.
Set this up today
You can put the whole system in place in an afternoon. Work through this checklist:
- Create an AGENTS.md. Add your build, test and lint commands, your code-style rules, your workflow conventions and your known gotchas. Symlink
CLAUDE.mdto it if you use multiple tools. - Adopt the plan step. For any non-trivial task, have the agent write
plan.mdfirst and review it before approving execution. - Pick the right pattern. Default to sequential for feature work, operator for chores, split-and-merge for cross-cutting changes, headless only where it is well-guarded.
- Use a sub-agent for wide reads. Next time a task means searching the whole codebase, delegate it and keep your main context clean.
- Keep a human in the loop. Review every step. Retire one-shot prompting for anything that ships.
- Feed the file back. When the agent repeats a mistake, add a line to AGENTS.md instead of re-typing the correction.
Do these six things and the agent stops feeling like a novelty and starts behaving like a teammate — one that gets a little better every time you update its memory.