The Three Types of People Building With Agents

25 Jul 20266 minutes
Tony Chang

Tony Chang

CTO & Co-Founder

Everyone building software today is using agents. Almost nobody is using them the same way.

After watching how people actually ship with AI coding agents, the differences stop looking like tooling preferences and start looking like beliefs. What separates them is not which agent they run. It is what they think an agent is fundamentally capable of.

There are three types.

TL;DR

There are three types of people building with agents: those who ship what agents give them, those who keep humans as the safety layer, and those who treat agent failure as missing context to be engineered away.

The first group builds fast and cannot reach production.

The second group reaches production by keeping an experienced engineer in the loop, because they believe agent output does not scale on its own.

The third group believes agents can build scalable systems, and treats every failure as a context problem rather than an intelligence problem.

The intelligence is already there. What is missing is context.

The 3 main points

1. Type one ships what the agent gives them

The first group are bad coders with good tools. They use agents to build whatever they want, and they believe what comes out is production software.

It is not.

The frontend looks complete. The demo works. Then it meets real users, real data, and real load, and the parts nobody inspected are the parts that fail: the schema, the auth flow, the permissions, the migration that was never run.

This is the group that gives vibe coding its reputation. They are not wrong that agents can build things quickly. They are wrong about what "done" means, because nothing in their process ever checks.

2. Type two keeps the human as the safety layer

The second group uses AI heavily but still wants to own the infrastructure themselves.

They have watched type one fail, and they drew a hard conclusion from it: vibe coding is worthless and it cannot scale. Agents are useful for generating code, but somebody who actually understands the system has to own what reaches production.

So the agent writes, and the engineer reviews, approves, and owns.

This works. It is a genuine improvement over type one, and most serious teams shipping AI-assisted software today are here.

But notice what it assumes. It treats the ceiling on agent output as fixed — a property of agents themselves, permanently below the bar production requires. The human is not a temporary scaffold in this model. The human is the design.

3. Type three treats failure as missing context

The third group are engineers who believe agents can be used correctly, and that used correctly, agents create scalable systems.

They hit the same failures as everyone else. What differs is the diagnosis.

When an agent produces something broken, type two concludes the agent was not good enough and adds more human review. Type three asks a different question: what did the agent not know?

Because when something blocks them, the response is not to take the work back. It is to prompt more precisely, to run more agents, and above all to give the agent the right context.

The agent's intelligence was never the bottleneck. Its context was.

Why context, and not intelligence

This is the claim the whole model rests on, so it is worth stating plainly.

Modern coding agents are not failing because they cannot reason. They are failing because they are reasoning about a system they cannot see.

An agent that does not know what tables exist will invent them. An agent that cannot read the auth configuration will guess at it. An agent with no view of what migrations already ran will write one that conflicts. None of that is a reasoning failure. Every one of those is an agent doing competent work on top of missing information.

Give it the schema, the auth config, the bucket contents, the deployed functions, the runtime logs, and the same model produces something entirely different.

That is why the fix for a bad agent output is so rarely a better prompt alone, and so often a better view of the system.

Every mistake has a decision behind it

Here is the practice that actually separates type three, and it is the part most teams skip.

Every single mistake, whether a human makes it or an agent makes it, has a decision behind it.

A bug is not a random event. It is the visible end of a choice somebody made — a schema shaped a particular way, a permission left open, an assumption about what a field contained. The bug is the symptom. The decision is the cause.

So when an agent produces a bug, the work is not to patch the output and move on. It is three steps: trace it back, find the owner, re-enhance.

Trace it back. Follow the bug to the point where the agent committed to something. Not where the error surfaced — where the choice was made.

Find the owner. Every decision has one. Sometimes it is the agent, acting on a belief about the system that was wrong. Sometimes it is a human, in a schema or a config or a convention written months ago that the agent read and faithfully obeyed. The owner is not who to blame. It is where the correction has to land, because fixing the symptom while the owning decision stands unchanged guarantees the bug comes back wearing different clothes.

Re-enhance. Write the correction back as context the agent carries forward — so the belief that produced the bug is not available to produce it again.

The questions that drive it are simple:

  • What did the agent decide, and at what point?
  • What did it believe about the system when it decided that?
  • Where did that belief come from, or what was missing that let it form?
  • What has to change so the belief is correct next time?

Do that consistently and every bug stops being a cost. Each one gets exploited to its full value, because each one permanently removes a category of future failure. The system gets harder to break in that specific way, forever.

This is the inversion. Type two treats a bug as work to absorb. Type three treats a bug as the highest-signal input available for improving the system that produced it.

One shot was never the goal

There is an assumption buried in how most people evaluate agents: that a good agent gets it right the first time.

Type three does not accept that framing.

Agents will not do the right thing on the first shot. That was never the bar.

What matters is whether the system converges. A single agent, prompted once, judged on its first output, is the weakest possible configuration — and it is the one nearly every skeptical evaluation uses.

Multi-agent orchestration changes the shape of the problem. Agents that plan, implement, review, and verify as separate roles will catch each other's errors. Agents that accumulate memory across attempts stop repeating the mistakes already traced. Agents given the right context at the right step guess less at every step.

The output of that system is not one model's first draft. It is the product of many passes, each carrying what the previous ones learned.

That is how agents reach scalable systems: not by being right immediately, but by being corrected in a way that persists.

What this means for your backend

If context is the bottleneck, then the infrastructure your agent builds against is not a neutral detail. It is the thing that determines whether the agent can see.

A backend built for humans exposes dashboards and documentation, and assumes a person will read them and hold the state in their head. An agent cannot do that. It gets whatever the platform makes legible, and it guesses about the rest.

This is what InsForge is built for. Coding agents connect through an MCP server or through the CLI and Skills, and both interfaces exist to let an agent operate the backend the way a backend engineer would: pull documentation, schemas, and metadata for deployed functions, bucket contents, and auth config; read runtime logs to verify what it built and debug what broke; run migrations, deploy edge functions, create buckets, and configure auth providers directly.

The point is not that the agent can call more tools. It is that the agent can look before it decides — and when it still gets something wrong, there is a real trail back to the decision that caused it.

Where this is going

Type one is not going to be right. Shipping unreviewed agent output to production does not start working at some future model size.

But type two is a transitional position, not a permanent one. It treats human review as architecture rather than as scaffolding, and that assumption gets weaker every time context and memory and orchestration improve.

Type three is a bet that the ceiling people keep attributing to agents is really a ceiling on what we have given them to work with.

Stop asking whether the agent is smart enough. Start asking what it did not know, and why nothing told it.