# It stopped feeling futuristic

Canonical: https://mateuszwitkowski.com/blog/it-stopped-feeling-futuristic/
jul 09, 2026 · ai, engineering

> Back when Cursor first made the agentic view its default, I thought: I'm not there yet. Then the workflow changed anyway.

When Cursor made the agentic view its default, I remember thinking: I'm not
there yet.

Not "I'm not ready for AI to write code." That had already happened. What felt
unfamiliar was the next shift: letting the agent move through the codebase while
my attention moved up a level.

The resistance was muscle memory. I was still an IDE-native developer: file tree
pinned open, jumping between files, holding the project structure in my head,
watching the code change in place. That was what coding _felt_ like.

The new loop asks a different question of you. Less "where is this file?" and
more "what changed, why, and does the diff make sense?" The tools still give you
trees and terminals and patches — but the default center of gravity moves. The
diff becomes the surface you work on. The tree becomes context you consult.

## The unit of work kept growing

This didn't arrive all at once. Looking back, every wave of tooling handed the
model a bigger unit of work — and asked me to trust it with a bigger one.

Copilot completed the next thing: a line, a function, a boring bit of glue. The
mental model was still mine, the cursor was still mine, the open file was still
the center. It sped up the typing without changing what I paid attention to.

ChatGPT reasoned over a bigger chunk of intent — but split across two windows.
The IDE had the codebase; the browser had the conversation. I copied code out,
explained what I wanted, pasted the answer back. Powerful, and clumsy: the
context boundary was manual, and I was the integration layer.

Then the chat moved into the editor. Cursor made prompting feel attached to the
codebase — point at a file, a selection, an error, and ask for the change in
place. The unit was no longer the next line but a local transformation: refactor
this path, update these tests, explain this flow.

But I was still inside an IDE loop. I prompted from the same place I navigated,
inspected, edited, and organized the project in my head.

Then the agent stepped outside that loop. It moved through the codebase on its
own — reading, editing, running, correcting — and the natural place for my
attention was no longer the cursor. It was the result. That was the shift I
hadn't been ready for, and the one the opening interface was quietly asking me
to make.

## The map still matters

Attention on the result doesn't mean the map disappears. If anything,
architectural judgment matters more. You still have to know how the project is
structured, where the boundaries are, and which decisions the codebase is
already committed to.

What changes is what the map is _for_. Less manual navigation, more review: did
the agent touch the right layer, preserve the right abstraction, make a change
that belongs here?

## The loop starts before code

Working this way, the loop starts earlier and ends later.

Earlier, because the real work begins before the agent writes anything: framing
the task, naming the constraints, deciding which parts of the architecture
matter, giving enough context that the agent doesn't solve the wrong problem
well. The prompt stops being an instruction and becomes a handoff — part brief,
part constraint list, part review rubric. The better that handoff, the less the
agent is merely generating code and the more it's working inside a shaped
problem.

Later, because the work doesn't end when code appears. It ends when the diff has
been read, the tests make sense, the design still holds, and the change can be
explained as part of the project rather than as an isolated patch.

Described too quickly, that sounds passive — the agent writes, the developer
watches. It isn't. Human judgment shows up hard at both ends: before, in the
grilling — what's the business outcome, what's the right scope, is this small
enough for one pass or does it need splitting; and after, in review — did the
implementation match the intent, did the agent stay inside the boundaries, does
the change belong in the system.

## Review became a scale

[Matt Pocock put the real decision well](https://x.com/mattpocockuk/status/2073711736838918436):

> The "should you read code" debate is dumb because the real decision isn't
> binary, it's a scale:
>
> 1. Reading every line of every diff
> 2. Scanning every diff, reviewing important lines
> 3. Ignoring diffs but understanding the "why" of every PR
> 4. Spot checking PRs instead of reading every one
> 5. Ignoring PRs, but doing regular spot checks on the codebase
> 6. Ignoring the code, but spot checking agent traces to help improve the
>    system
> 7. Ignoring both the code and the system, let models handle everything
>
> Where are you on the scale?

The question isn't whether code review disappears. It's where you sit on that
scale for _this_ change — and you don't have to sit in one place. My own loop
borrows from
[his skills workflow](https://www.aihero.dev/skills/skills-changelog-v1-1-wayfinder-to-spec-to-tickets-grilling-improvements)
— grilling, spec, tickets, implementation, review, and Wayfinder when the
problem is too large or foggy for one session. I don't follow it mechanically,
but the shape holds: an idea gets pressure-tested before it becomes
implementation.

Most days I'm somewhere around two and five: scanning diffs for intent,
boundaries, naming, and tests, spot-checking the PRs that carry architectural
risk, and doing regular passes to catch the system drifting. I am not reading
every generated line with equal intensity, and I've stopped pretending that's
the goal.

## The posture changed

This can feel less like coding only because our old picture of coding was so
tied to direct manipulation. But the responsibility didn't move away. The work
is still design, judgment, and accountability for the shape of the system. One
mode didn't replace the other — the default posture changed.

So when I think back to that first reaction, _I'm not there yet_, I think it was
true. I wasn't there yet because the interface was asking me to work at a
different altitude. Not above the code, exactly. More around it: shaping tasks,
carrying the architecture in my head, reviewing diffs, deciding what kind of
change the project can absorb.

The surprising thing is how quickly that stopped feeling futuristic.
