Talk write-up · AI Engineer 2026 · Geoffrey Litt (Notion)

Does a human still need
to read what the agent wrote

Geoffrey Litt, Design Engineer at Notion, thinks the answer is yes, but not for the reason most people give. His talk lays out three techniques he uses himself, including a skill he runs every day.

His answer
To participate
understand to participate · a project is never one loop, and the concepts a person holds about the system are part of their ability to generate the next idea
The usual answer
To verify
understand to verify · but he notes agents keep getting better at checking their own output, which leaves an argument resting only on verification with progressively less for the human to contribute
01 · Scale

The volume is what outruns a human reader

Geoffrey Litt, a Design Engineer at Notion, gave this talk at the AI Engineer conference in July 2026, then published the slides and their narration on his blog on 2026-07-02. It is a practitioner’s account of his day-to-day work with coding agents, not a presentation of research findings. An agent here means an AI program that can carry out a multi-step task on its own, specifically one that writes code.

Litt presents his opening position as a "hot take", acknowledging that it may now be contested: people still need to understand the code that agents write. The claim sounds close to a truism. Yet he treats it as needing a defense, because the direction people now assume is the opposite: take ourselves out of the loop and let the agents loop themselves. A loop is one round trip in which a human gives direction, the agent executes, and the human reviews the result before directing it again.

The practical difficulty is real. Agents are writing a growing share of code, and reading their output line by line no longer scales. One change shown in the talk touched 372 files, adding +55,219 lines and removing −3,027.

But understanding does not have to mean reading every line in every diff. The talk introduces three other ways to build it: explainer docs, quizzes, and micro-worlds.

GitHub diff stat bar reading: Files changed 372, plus 55,219, minus 3,027
Talk slideWhat the scale problem looks like: the talk uses the size of one real change to make the point, 372 files changed, 55,219 lines added, 3,027 removed. Source: Understanding is the new bottleneck (the author's own blog, 2026-07-02)
The starting point

In his framing, once the volume climbs, the question is not whether to read the code, but whether reading diffs line by line is the only way to read it.

02 · Why

From verifying to participating

Litt puts the counter-question himself: aren’t we supposed to be taking ourselves out of the loop now and letting the agents loop themselves, and as agents get smarter, doesn’t it become less important for us to be in the details?

One possible answer is to "understand to verify". A human needs enough understanding to decide whether the work is correct, whether it matches the specification, and whether it is well architected. In that framing, understanding supports a final thumbs-up or thumbs-down.

That rationale weakens as agents become better at checking their own work. Litt is clear that he prefers an agent not to make mistakes. The improvement is desirable, but its effect on the verification case is straightforward.

The more verification belongs to the agent, the less the verification argument leaves the human.

① Verifying sits with the human human agent Correct? thumbs-up or thumbs-down ② Verifying moves to the agent human agent Correct? it checks itself; the human fades ③ What the human keeps is participation human agent next idea understanding carries the next round
Redrawn from the three-frame progression of a single illustration in the talk. In frame ①, "Correct?" sits with the human; in frame ②, the same question moves to the agent and the human side fades; in frame ③, what lights up on the human side is no longer a judgment but the next idea.

His reframe is to "understand to participate". A software project is not one instruction followed by one final review. It is a long series of loops, each producing a new state of the system and creating the need for another decision about what should happen next.

“It's never just one loop!”

That next direction does not emerge from verification alone. It depends partly on being able to think about the system: what it currently does, how its pieces relate, what possibilities are available, and which change might be worth pursuing. A person with too few concepts for describing the system may still approve or reject an output, but has a narrower basis for thinking fluently and creatively about the next move.

The gap that accumulates when code advances faster than human comprehension is cognitive debt. Unlike technical debt, where code-level shortcuts taken for speed make later modification or extension more costly, cognitive debt sits in people’s heads: the change has shipped, but the people involved may no longer adequately understand what it does.

The term was popularized by Margaret-Anne Storey, a professor of computer science at the University of Victoria, and Simon Willison, co-creator of the Django web framework and a longtime writer on LLM engineering practice. Litt’s slide credits her as Margaret Storey. Her warning, quoted there, is broader than code readability alone.

Even if AI agents produce code that could be easy to understand, the humans involved may have simply lost the plot and may not understand what the program is supposed to do, how their intentions were implemented, or how to possibly change it.
— Margaret-Anne Storey, Cognitive debt (emphasis as it appears on Litt's slide)

As with technical debt, the immediate trade can appear acceptable. A team can move quickly without understanding every change. The deferred cost returns when someone needs to decide how the program should evolve and no longer has a reliable mental account of what was built, why it works, or where a new intention belongs.

Once understanding is treated as necessary for participation, the problem becomes how to build it without returning to exhaustive line-by-line reading. Communicating understanding is not a new problem. Education has already developed a great deal of method for it, and what he wants is to borrow the best of those ideas and apply them to working with AI.

03 · Technique one

An explanation, and a quiz he will not ship without

Whenever an agent finishes a piece of work, the immediate result is usually a diff. Litt reframes the next question: if a team, whether human or AI, had made a serious effort to explain the change well, what would it hand over? That question is the method behind /explain-diff.

/explain-diff is a Claude Code skill that Litt wrote and published as a gist. A skill is a reusable set of instructions pre-loaded for a coding agent and invoked with a slash command. This one turns a code change into an explainer document. It is his personal tool, not an official Notion or Anthropic product, though he uses it daily and says colleagues have found it useful. It produces three forms: HTML, markdown, Notion docs. The Notion version works when a team wants to discuss the explainer together. At this point, he candidly discloses that he works at Notion and is therefore biased.

The skill file names Martin Kleppmann as the prose model to imitate. The resulting document uses four moves to make a change understandable: background first, intuition before details, interactive figures, and a "literate diff".

Four sections are fixed in the skill file, and so is their order, in both variants. What follows comes from the published skill files themselves, not from the talk narration:

Background
Explain what was already there
Explain the existing system relevant to the change, exploring the surrounding code broadly to do so. Include both a deep background for beginners (noting it can be skipped) and a narrower one tied to this change
Intuition
Essence before detail
Explain the core intuition, focusing on the essence rather than the full details. Use concrete examples with toy data, and use figures and diagrams liberally
Code
Then walk the code
Give a high-level walkthrough of the code changes, grouped and ordered in an understandable way
Quiz
Then test the reader
Five questions testing the reader's knowledge of the PR. Medium difficulty, hard enough that answering requires understanding the substance, but not gotchas

A change to a game’s visual perspective shows how the sequence works. Before describing anything new, the explainer establishes what was already there. It walks through the game engine, giving the reader enough context to see where the change belongs.

Only after that background does the document state the goal: "make the garden feel three-dimensional with 2D drawing tricks". No code has appeared yet. The reader first gets a concrete picture of the intended result, then encounters the machinery used to produce it.

Screenshot of the explainer's Background section, covering the Phaser 3 engine and the flat canvas, with a callout on the coordinate system
Talk slideThe Background section: the existing engine and its coordinate system first, with a concept callout. Source: as above
Screenshot of the explainer's Intuition section, stating the goal of the change and then explaining isometric projection
Talk slideThe Intuition section: the goal, then what isometric projection is, and only then the code. Source: as above

That machinery becomes visible through an interactive figure embedded in the document. Rocks can be dragged around the garden, and their coordinates shift as they move across the flat scene. A few drags show how the same two-dimensional surface can be arranged to suggest depth. The explainer does introduce the term isometric projection, and the figure is what makes it tangible rather than something to take on faith.

Notion had just shipped support for embedded interactive HTML in pages, so a figure like this could sit directly inside the explainer.

The code itself is then presented differently from a typical diff. A raw diff is ordered by filename, one file after another. It provides no explanation and no reading order designed for comprehension. A single concept may be scattered across several files, forcing the reviewer to reconstruct the connection among them.

What Litt calls a "literate diff" reorganizes that same change into prose. The explanation follows a conceptual order, with relevant code snippets embedded where they support the account. Instead of treating the repository’s file structure as the natural order for reading, it places each piece of code at the point where it becomes intelligible. His judgment is that this gets him through review faster than starting with the raw diff.

Raw diff · ordered by filename a/GardenScene.js b/border.js c/sand.js no explanation, no reading order built for understanding Literate diff · reordered for reading 1 · Shape constants first const GARDEN_RY = … 2 · Then the perspective gradient fillSand() { … } a sensible order, with snippets wrapped in explanation
Two ways of reading the same change. The talk shows both for one commit: on the left the raw diff laid out by filename, on the right the same change reordered into prose with the snippets embedded in the explanation.
Black and white photo of a printed code explainer packet held together with binder clips
Talk slideHe sometimes prints the explainer packet and takes it to a café, where he finds it less distracting. The body text was redacted by the author. Source: as above

The finished artifact is a complete explainer that moves from the old system, through the intended effect and an interactive demonstration, into the implementation. He still reads the diff, but only after reading the explainer. Sometimes he prints the document and takes it to a café, where there are fewer distractions.

He relishes the contradiction himself.

“It's beautifully ironic: AI turns an interactive activity into a static paper report I can focus on deeply :)”

However good the explainer is, reading it remains hard work, and it is easy to mistake having read it for having understood it.

A well-written explainer can still leave its reader with the illusion of understanding. Andy Matuschak, an independent researcher working on tools for thought who previously helped build iOS at Apple and led R&D at Khan Academy, has a blunt phrase for this failure: "books don’t work". It is easy to complete the reading while retaining little and understanding less. Text can place an explanation in front of someone, but it cannot make comprehension happen.

Matuschak and Michael Nielsen tried to build the check for understanding into reading itself. Nielsen is a scientist who co-authored the standard textbook on quantum computing, then turned to media designed to help people genuinely understand and remember difficult material. Together, they created Quantum Country, an online introduction to quantum computing with quiz questions embedded directly in the prose.

Those questions use spaced repetition: readers quiz themselves on the same material at widening intervals. Instead of treating reading and testing as separate activities, Quantum Country places the test inside the essay, making recall part of the experience rather than something left until later.

Litt applies that idea to code explainers. At the bottom of an explainer there is now an interactive quiz containing five questions about the change, and he tries to answer them.

His rule is explicit.

Here, review means a person checking whether a code change is fit to go through.

“My rule: I won't send code to others until I can pass the quiz, and I do the same when reviewing others' code.”

Speed of the agent's loop Speed of human understanding quiz quiz quiz nothing passes until he does, and the two speeds realign
He describes the quiz as a speed regulator: in an AI-assisted loop, code can be generated and revised faster than a person can build an understanding of it, and the quiz introduces a counterbalancing force that makes him stop and mechanically ask whether he actually understands the change.

“A quiz is a speed regulator.”

That check matters because the AI coding loop can move faster than human comprehension. An agent can finish one change and accept the next prompt before the previous diff has been fully understood. Its fluent output can also create a convincing feeling of understanding, even when the person following along could not yet explain what changed or why.

Litt gives the quiz a specific role.

The quiz regulates the pace at which Litt lets the work advance: the five questions force him to check, mechanically, whether he actually understands the change.

This completes /explain-diff. Litt published the skill and offered it through a QR code during the talk in two variants: one that outputs HTML and one that outputs a Notion page. His second technique is called micro-worlds.

Common to both variants

  • A named prose style: the clarity and flow of Martin Kleppmann, written engagingly in classic style, with smooth transitions between sections
  • Diagrams should form a system: pick a small number of diagram families that can be reused throughout, then apply them to the various cases
  • Callouts carry key concepts, definitions and important edge cases

HTML variant only

  • A single self-contained file, CSS and JavaScript included, laid out as one long page with section headers and a table of contents; no tabs for the top-level structure; basic responsive styling is called out as desirable
  • The output is deliberately kept out of the repository: a global location on the machine, and the filename must start with today's date in YYYY-MM-DD- format, so files stay time-sorted and out of version control
  • Two kinds of diagram are named as useful: a very simplified version of the app's UI, and a system diagram of data flow between components, which must include example data
  • No ASCII diagrams; diagrams use simple HTML designs and lists use HTML lists
  • Always use <pre> for code blocks; a custom styled div must include white-space: pre-wrap, or the browser collapses all newlines into a single line, and every block is to be scanned before saving

Notion variant only

  • Use the Notion MCP tools to create a new page and return its URL

The Notion variant also asks for example data, but states it as a general rule for all diagrams rather than for the system diagram alone.

Related

A prompt of the same shape, asking for an HTML report with a quiz at the bottom that must be passed before merging, appears in Finding your unknowns on this site. That piece is about articulating unknowns before starting, where the quiz is one closing prompt; this one gives the full skill file, plus the reframing of why understanding matters at all.

04 · Technique two

Micro-worlds: a small program built to be played with

The second technique inverts the usual approach: instead of reading the code, have the agent write a separate small program that can be operated, then understand the original code by using it. Both examples come from projects Litt built himself.

Slide with a black and white photo of two children and a Logo turtle robot on the left, and the title Living in Mathland with Papert's quote from Mindstorms on the right
Talk slidePapert's "living in Mathland": to learn math, live in Mathland, just as you would go live in France to learn French. The slide also carries his passage from Mindstorms. Source: as above

The idea predates the current generation of AI tools. Seymour Papert, whom Litt calls a visionary educator, had an idea he called "living in Mathland": to learn mathematics, live in Mathland, just as someone who wants to learn French would go live in France. Papert was interested in environments where children could acquire mathematical understanding naturally, through curiosity and activity. Applied to code, the idea is to build worlds that people can inhabit, where interacting with the environment reveals how a system runs and how it is changing.

The first of Litt’s two cases began last year, when he was writing a Prolog interpreter and found it difficult to picture what was happening inside it. In Prolog, the program consists of rules, and execution proceeds by matching those rules to derive an answer. Reading the interpreter did not give him a clear sense of that process in motion.

<> Program father(orville, abe). father(abe, homer). parent(X, Y) :- father(X, Y). grandfather(X, Y) :- father(X, Z), parent(Z, Y). grandfather(X, Y)? Stack R0 Goals: grandfather(X, Y) θ: ø Timeline: Step 1 of 85 < Prev Next > Reset Add notes about this step…
Case one: last year, relative to this talk, he was building a Prolog interpreter and struggling to understand what was happening inside it. Working with an agent, he built this debugger, which lets him scrub through time, inspect the stack and the rules being evaluated, and leave comments for himself. Redrawn from the screen recording in the talk.

He and an agent built a debugger, a tool that exposes a program’s internal state while it runs. Its central interface was a timeline that he could scrub backward and forward. At each point, it showed the rule being evaluated and the stack, the record of which level of nested calls the program was currently inside. He could watch one rule match, see the interpreter move into another call, inspect the intermediate state, and then reverse the timeline to examine the transition again.

The interface also let him leave notes for himself. A moment when a rule behaved as expected might receive a comment such as “nice, we correctly applied that rule”

Scrubbing the timeline, watching rules match, inspecting the stack, and marking the moments that made sense were the activities through which his understanding grew.

“There's a big difference between making a tool for me to debug and letting the agent debug”

The second case began with a more immediate discomfort. Litt moved his personal site from Middleman to Astro, a framework migration that replaced the development framework underneath the site. Claude wrote a script that did the migration. The result was there, apparently finished, but Litt did not know Astro well enough to evaluate what had happened. His assessment was limited to one line.

“I guess that looks about right.”

ASTRO PORT · INTERACTIVE LIVE EXEC STAGE 2 · PENDING ADD CORE STYLING EXECUTE TERM $ npm install packages installed ✅ Copying essential images… ✅ Creating basic homepage… ✅ Basic site initialized SRC · Middleman :4567 Geoffrey Litt Projects · Writing · Inspirations Files Path not found: /source · Retry DST · Astro :4321 Geoffrey Litt Projects Writing Inspirations Files · 9 items (5 changed) astro.config.mjs package.json public/ src/ README.md
Case two: he asked Claude for a video game-like command center where he runs the port himself, one step at a time, watching the visible site and the file tree evolve with his old and new sites side by side. In the recording, the old site runs on Middleman and the new one on Astro. Redrawn from the screen recording.

That uncertainty became the reason to redesign the migration itself. Instead of accepting the completed output, he had Claude build a video-game-style command center that allowed him to perform the migration step by step. The old Middleman site and the new Astro site ran side by side. He pressed buttons to advance through the sequence, while the interface showed both the visible effect of each step and the corresponding change in the file tree.

A migration that had arrived as one large, difficult-to-assess result became a series of observable operations. He could see which files changed, connect those changes to what appeared in the browser, and watch the Astro version of the site come alive piece by piece.

The resulting understanding approached what he would have gained by carrying out the migration by hand, only much faster, because the steps had already been identified and arranged for him.

His conclusion for this section

He presents it as a significant capability: agents can write bits of code that help us humans understand other code.

05 · Technique three

Shared spaces: from understanding alone to understanding together

These two micro-worlds address the understanding of one person. Teamwork introduces a further requirement: people need to understand together.

When two people hold the same mental model, a shared term can call up the same picture for both of them. One person can introduce an idea and the other can catch it, extend it, or challenge it without first reconstructing the entire frame of reference. Without those shared structures, the same vocabulary may point to different pictures.

Litt is interested in environments where teams develop that understanding together. He says this is roughly what Notion is doing; as noted earlier, he works there. Claude and Cursor, an AI code editor, can now run as agents inside Notion, and this is how he does much of his own coding. The technical plans produced by those agents land by default on a collaborative page, where he can comment immediately and bring the work to the team.

Notion page screenshot: a technical plan with two colleagues exchanging comments about an implementation trade-off in the margin
Talk slideA plan produced by an agent lands in a collaborative page by default, with an exchange in the margin about an implementation trade-off (one asks whether the approach is good, the other answers that pointers suffice instead of a full snapshot). Source: as above

“Thinking together, not alone!”

06 · Closing

The point was always to augment

The three techniques offer concrete ways to understand code, but code is only the entrance to a larger question: how people understand how things work, not just to verify, but to participate.

That question was already being asked fifty years ago. Alan Kay, a computer scientist and one of the early designers of the personal computer and the graphical interface, argued that computers should become a medium that helps people think. He proposed that they could go further than books, helping people, especially children, understand the world by interacting with systems rather than only reading about them.

One image from Kay’s paper A Personal Computer for Children of All Ages captures that idea through a small reversal. At first glance, the kids appear to be watching video on a tablet. They are actually playing an interactive game and editing its code as they play so that they can understand physics. By changing the rules and watching the results, they are working with a simulation: the system’s rules run as a program that can be observed, tested, and altered. The image itself is a hand-drawn line illustration, not a photograph.

Litt closes this lineage with an astronaut meme. Its text runs "wait, the point of computers is to create new dynamic simulations to help people understand complex concepts?" answered by "always has been". Alan Kay’s own photograph appears on the gun-holding side.

That is also Litt’s position.

Line drawing from Alan Kay's paper A Personal Computer for Children of All Ages: two children sitting on grass, each holding a tablet-like device
Talk slideFrom Kay's paper A Personal Computer for Children of All Ages. At first glance the kids look like they are watching video on a tablet; they are playing an interactive game and editing its code as they play. This is a drawing, not a photograph. Source: as above
Astronaut meme: one figure asks whether the point of computers is to create dynamic simulations that help people understand complex concepts, the other answers always has been
Talk slideHe closes the lineage with this meme. The figure holding the gun carries a photograph of Alan Kay. Source: as above

For Litt, AI strengthens that possibility because it has made creating simulations so accessible. He calls that beautiful. Having AI teach us is, in his view, one of the greatest possibilities computing has ever opened up, and it is the reason he remains optimistic about the future.

He closes with the choice that follows from that possibility.

“The point was always to augment, not just automate.”

If we build the right tools, we can now understand the world better than we ever could before. We don't have to merely take ourselves out of the loop, we can get deeper in the loop too. It's up to us.
— Geoffrey Litt, closing the talk
Sources

One primary source, faithfully reproduced

PrimaryUnderstanding is the new bottleneck

geoffreylitt.com · 2026-07-02 · Geoffrey Litt, Design Engineer at Notion. The written version of his talk at the AI Engineer conference in July 2026, slide by slide across 35 slides. This piece reproduces his claims and methods without adding evaluation, implications or recommendations; his own judgments are attributed throughout.

PrimaryThe two /explain-diff skill variants

gist.github.com · published by the author. The subsection on what the skill mandates is taken from these two files rather than from the talk narration; the four section names and the format rules are grouped as they appear, with rules common to both variants separated from those specific to each. This is his personal skill, not an official Notion or Anthropic product.

CitedHow Generative and Agentic AI Shift Concern from Technical Debt to Cognitive Debt

margaretstorey.com · 2026-02-09 · Margaret-Anne Storey, Professor of Computer Science at the University of Victoria. Slide 9 of the talk quotes this post; the quotation here was checked against the original and cognitive debt is explained from it. Litt's slide credits her as Margaret Storey.

ImagesThe talk slides embedded on this page

Every image inside a .source-figure on this page is a quoted talk slide, individually attributed and linked back to the original. The site's content security policy does not permit third-party images, so these are served as local copies, uncropped and otherwise unmodified. The concept diagrams (the three-frame progression, the diff comparison, the speed regulator, and the two self-built tools) were redrawn here from the originals, as noted in their captions.