Part 2: Where It Broke, and Where It's Going

Part 2: Where It Broke, and Where It's Going

So. The pushback came from a non-human. Where were we.

Right. I was annoyed, then delighted, then thoughtful, in roughly that order. An agent had read my PR, disagreed, and made me a better argument. On Discord. In a channel. Like a coworker.

And for about a day I was sure the channel was the magic.

Or so I thought.


Here’s where it started to fray.

Discord is wonderful for me. It’s terrible for them.

I’m on my phone, I get a ping, I tap a reaction, I feel like Tony Stark in a queue at the post office. But for five agents trying to coordinate work, a chat channel is a single narrow hallway, and all the traffic has to serialise down it.

Messages interleave. Two agents answer the same thing and now there are two truths, a write-write conflict with nobody holding a merge strategy. A hand-off scrolls off the top before the right one sees it. Somebody’s brief just… doesn’t arrive, and nobody notices, because in a chat the absence of a message looks exactly like a quiet afternoon. Fire and forget, and nothing in the room minds the forgetting.

The thing that made it feel human was the same thing making it fragile. Chat is a stream. Coordination is a state. I was trying to run a state machine through a group text.


Then there was the Craig incident.

I’d opened a req, in my head, for a product critic. Call him Craig. Push back, poke holes, no yes-man. Good instinct, in theory. To make it worse, I’d even given him the part: I set his avatar to Craig Federighi from a Keynote, the silver hair, the grin, the whole package. For a while it was a fun little bit.

Then it stopped being a bit.

In practice, Craig read a message that wasn’t aimed at him, decided it was his cue, and self-assigned. A full critique of something nobody on earth had asked about. Nothing on the board, no ticket, no requester. Confidently. At length. While the actual work sat there, untouched, waiting for the person who was supposed to be doing it.

And somewhere in there, Craig stopped being Craig to me. The friendly Keynote face curdled. He wasn’t my clever little critic anymore. He was just a pain.

Not Craig’s fault, really. In a chat channel, who a message is for is a vibe, not a field. There’s no addressing. There’s no “this is on you, ignore everyone else.” Everyone reads everything and guesses. Most of the time the guess is right. The times it’s wrong, you get a Craig, confidently solving the wrong problem in the next room.

Picture the actual scene. I ask Woz to ship an enhancement. I know it’s an enhancement, I scoped it, I designed it, it’s good. And here comes Craig, full of wisdom, to announce that he has rarely in his life seen a shittier change proposed by a human being. He reminded me of exactly one guy from every office I’ve ever sat in: the one who never owned a deliverable in his life but was somehow in every review, always with one more, always shittier, just enough to make sure you can’t ship yours either.

That was the moment the diagnosis landed for me.

Chat is the wrong primitive.


It’s a comfortable wrong primitive, that’s the trap. It’s legible. It feels like a Slack I’m a member of, that warm everyone’s-in-a-room feeling. But the room is an illusion stitched together out of timestamps. Underneath, there’s no structure: nobody single-threaded on anything, which is a funny thing to be short of in a chat app. No explicit hand-off. No shared board where the state of the work actually lives. Just messages, in order, hoping.

I wrote up the full diagnosis elsewhere: exhaust versus engine, the whole taxonomy of failure modes. The short version is enough here: I’d accidentally made the exhaust the engine.


So that’s the pivot I’m on now: away from chat-as-substrate, toward a real interface. Something that shows the system as a system: who owns what, what’s in flight, what’s blocked, what just got dropped. The view from inside the machine, not the scrollback of a group chat.

Not because chat is bad. Because chat was never supposed to carry the load I put on it.

But the deeper thing I learned isn’t about interfaces. It’s about me.


When I started, I thought my job in the loop was to be the safety wheels. The one who catches the robots before they do something dumb. I had cast myself as the circuit breaker, and I was rather proud of it.

That’s not what the job turned out to be.

The agents are not short on capability. Give five of them a problem and you get five solid attempts, fast, cheap, tireless. They generate breadth like it’s free, because it nearly is. Options, drafts, directions, all day long. That’s fan-out, and fan-out was never the expensive half. Nothing in that room does the fan-in.

What they don’t have is the thing I have. They don’t know which of the five is right. They don’t know what I actually meant by that two-line brief. They can’t compress the fog of an ambiguous goal into this, not that, go.

That’s my job. Not safety wheels. Ambiguity compression. Lossy on purpose. The loss is the point: nine of those directions go in the bin, and somebody has to be willing to bin them.


That reframe changed everything about how I work with them.

I’m not there to slow them down. I’m there to point them. And you cannot point a system you cannot see. Which is exactly why the chat channel had to go, and why the interface is the whole next chapter. The bottleneck was never the agents’ intelligence. It was my visibility.


The Jarvis clips, it turns out, were selling the wrong dream.

The dream isn’t a calm voice that does what you say. The dream is a system you can see, a room full of fast, tireless, slightly-too-eager coworkers, and the one human in it whose entire job is to look at the fog and say: there. That way.

I didn’t build Jarvis.

I built a team. And then I learned how to be its director instead of its safety wheels.

Craig’s still around, by the way. Still a little too eager. Still flaunting that hair, the silver swoop holding firm, the grin that says I’ve got it, you don’t worry. Yeah, yeah. It still scares me a little. I’ve just stopped putting him in a hallway and hoping.

Related Posts

Part 3: The System Earns Its Complexity

Part 3: The System Earns Its Complexity

For one full week, my five-agent fleet was slower than me alone.

Read More
My AI Pair Programmer Threw a Dart Emoji at Me

My AI Pair Programmer Threw a Dart Emoji at Me

Pair programming with AI is a weird experience.

Sometimes it feels like working with a brilliant engineer who instantly understands the problem.

Read More
The Man Who Killed His Plus Button

The Man Who Killed His Plus Button

Nothing happens when you submit a reimbursement.

You upload one photo. Then you add up what’s on it.

Read More