Technical
I Thought I Needed Better AI. I Needed a Better Way to Work With It.
When AI agents can generate code faster than humans can review it, the engineering bottleneck shifts from implementation to direction.
There is a strange moment that happens when an AI agent becomes good enough to do most of the work.
At first, it feels like magic. You give it a problem, and it starts building. It creates files, writes code, runs tests, updates documentation, notices things you didn’t think to mention, and makes decisions on its own. Sometimes, it even creates the working context it needs to keep going.
Then, somewhere along the way, something unexpected happens: you stop knowing what is going on.
That happened to me — and it points to a fundamental shift in how we collaborate with autonomous systems.
The Problem Wasn’t the Agent
I was working on a small experiment around Context System Design. The idea was straightforward: create a controlled environment, feed an AI system different forms of context, and observe how that impacted its execution.
I expected the core engineering challenge to be the architecture itself. It wasn’t.
The agents were perfectly capable of implementing the system. In fact, they were sometimes too capable. They generated documentation, created tasks, maintained handoffs, reorganized the repository, wrote tests, updated references, and moved through milestones with almost no manual intervention.
From an engineering perspective, that sounds ideal. But from the perspective of the human trying to maintain situational awareness, it was overwhelming.
There was simply too much output.
The Cost of Delegation
When an agent writes ten lines of code, it’s easy to review. When an agent changes twenty files, creates three new artifacts, updates a convention, runs a test suite, and moves on to the next milestone, the human-system dynamic changes.
You can still inspect every line, but should you?
I found myself trying to parse implementation details I didn’t actually need to understand. I wasn’t making the granular decisions — the agent was. Yet, I was still trying to follow along as if I were the developer manually writing the functions.
Eventually, cognitive fatigue set in, followed by something far more critical: I lost the thread of the project.
The Human as the Bottleneck
AI agents are improving at an extraordinary rate. They can produce more code, documentation, analysis, and supporting artifacts than one person can comfortably evaluate in real time.
This creates an unusual asymmetry: the machine’s ability to produce work exceeds the human’s capacity to consume and verify it.
For decades, software development had the opposite problem. Humans were the primary bottleneck:
- We had to write every line of code.
- We had to learn and parse the APIs.
- We had to debug the implementation details.
- We had to manually maintain state across the system.
Now, that balance is inverted. The agent can implement faster than the human can supervise. Making the models incrementally faster or smarter doesn’t resolve this friction — because the human-agent interface is the new bottleneck.
Moving Upstream: From Developer to Architect
This realization fundamentally changes how human developers interact with autonomous tools.
I don’t want to watch an agent write functions in real time, review every individual pull request, or manually verify calculations the system can perform instantly. Nor do I want to pretend I can maintain absolute context across hundreds of implementation details.
That doesn’t mean stepping away from understanding the system — it means shifting to a higher level of abstraction.
Instead of asking, “What does this function do?” — which the agent can easily explain — the human operator needs to focus on upstream architectural questions:
- What are we actually building, and why?
- Does the architecture still hold together under new constraints?
- What implicit tradeoffs or assumptions did the agent make?
- Did execution stay within the original system boundaries?
- What strategic decision needs to be made next?
If implementation becomes increasingly automated, the valuable human role moves upstream.
[ Human Role ] ---> Define Problem & Boundaries ---> Evaluate Architecture & Tradeoffs
|
[ Agent Role ] ---> Explore Implementation Space ---> Write Code & Maintain State
The human defines the problem, sets the guardrails, and evaluates outcomes. The agent executes, tests, and maintains state. Engineering isn’t disappearing — it’s changing where human judgment is applied.
The Collaboration Interface
Consider a simple analogy: when using a calculator, you don’t perform the underlying arithmetic yourself. Your job is to define the problem correctly, feed the system the proper inputs, and evaluate whether the output makes sense. You don’t want to be the calculator; you want to utilize the answer.
AI-assisted software engineering is converging on the exact same pattern. But for this to work over long horizons, we need a robust collaboration interface — not just a UI, but an explicit protocol for intent and state tracking.
A well-structured collaboration interface requires:
- Clear Problem Statements: Explicit success criteria and defined boundaries.
- Architectural Checkpoints: Defined moments where human evaluation is required.
- Concise Progress Summaries: High-level diffs rather than wall-of-text logs.
- Explicit Decision Logs: Clear records of assumptions made by the agent during execution.
The implementation details can remain largely internal to the agent, while only high-leverage data crosses the boundary to the human operator.
From Context Generation to Intent Direction
My earlier work focused on a central question:
“How do we give AI better context?”
The question I’m asking now is:
“How do humans effectively direct AI systems that can generate more work than they can reasonably supervise?”
The first is an AI system design problem; the second is a human-AI collaboration problem.
The better agents become at managing their own working environments, the less humans need to manually format context for them. But as agent autonomy grows, the necessity for human alignment becomes absolute.
The limiting factor is no longer whether the agent can execute the task. It’s whether the human can remain aligned with what the agent is building — without getting buried in the noise.
