Design in the Material
PMs and designers should code — not to ship, but to master the material and truly understand what they're designing.
- Difficulty
- Advanced
- Time to result
- ~months to results
- Steps
- 3
- Confidence
- 87%
Schoening's counterintuitive stance: he doesn't care whether designers and PMs write code that lands in production. He wants them to work in code because it forces them to interrogate the material they're designing with — currently code — and especially to understand agent loops, which can only be understood by building them in the material they're made of. The goal is mastery of the medium, not throughput. This reframes the 'everyone should code' debate away from shipping velocity and toward comprehension.
Origin
Schoening's own philosophy, developed leading design and product at GitHub (where designers were among the top code contributors before LLMs) and now at Notion; he invokes Brett Victor's talk 'Stop Drawing Dead Fish' as the underlying idea that a static image can't capture a dynamic, feel-based medium like AI.
Core principles
- 01Thinking in code forces you to consider the medium you're designing for
- 02The value is comprehension, not shipping to production
- 03A static Figma mock of a chat interface is a 'dead fish' — you have to feel the AI
- 04Agent loops can only be understood by building them in their native material (code)
- 05Designing in the medium that will become the real thing beats designing in a proxy
How to run it
- 1
Prototype in the real medium, not a proxy
Move prototyping out of static Figma docs and into code, so you design in the material that will actually become the product. Notion built a deliberately minimal, LLM-friendly 'playground' codebase and moved chat-interface prototyping there.
Pro tip Make the playground the least scary and most one-shottable environment so people overcome terminal fear and it just becomes chatting.
Watch out A static image of a chat is a 'dead fish' — it can't capture the feel of a dynamic AI interaction.
- 2
Optimize for understanding the agent loop
Prioritize people who deeply understand how agent loops work over those who can only tweak UI details in a coding tool. Understanding agent loops requires building them in code, their native material.
Pro tip Coding harnesses are becoming the operating systems of the '90s — learning them teaches the substrate of how computers work.
Watch out Someone who can tweak UI but doesn't understand agent loops is less valuable than someone who understands loops but writes no traditional software.
- 3
Discard the code freely — keep the learning
It's fine if everything you prototype in code gets thrown out when engineering rebuilds it. The point was to interrogate the material and think in the medium, not to produce shippable artifacts.
Pro tip Nudge people toward the terminal/CLI over GUIs; curiosity pulls them to understand more of the substrate over time.
Watch out Don't let coding turn people into a cog in the delivery mechanism — the aim is mastery of the material, not feature output.
In the wild
Two designers and Schoening built the 'worst possible playground' — a small codebase very LLM-friendly, using tools LLMs are good at — and moved all chat-interface prototyping there, because the production codebase, after a decade of patterns, wasn't agent-friendly.
→ It got designers and PMs onto the coding treadmill; as models improved, the same people began contributing to the production codebase.
Notion designers now mostly prototype in code, but other teams (marketing) ask them to reverse-engineer that work back into Figma to create assets for videos — obvious busywork that reveals code, not the static tool, is now the real medium.
→ Confirms that designing in code (the eventual real thing) is upstream, and Figma as a proxy is increasingly redundant for these cases.
Common mistakes
Justifying 'everyone should code' by shipping speed
Framing the value as more features shipped misses the point. Schoening cares about coding because it forces mastery of the material, not because designers should deploy to production.
Confusing UI-tweaking with understanding
Being able to tweak small UI details in a coding agent is not the same as understanding agent loops. Optimizing for the former produces shallow capability.
Is it for you?
Best for
Design and product leaders integrating AI into how their teams build, who want deep comprehension over vanity shipping
Not ideal for
Teams that need designers focused purely on cohesion and direction, or situations where forcing everyone into code would waste specialist strengths
From the transcript
“in code is because it forces you to consider the medium”
“not because of the utility of shipping to production, but because it forces you to really interrogate the material that you're designing with”
“the only way that you can actually get to understanding agent loops is if you build them in the material that they're made of, which…”
From the episode
Why cultivating agency matters more than cultivating skills in the AI era
Max Schoening (Head of Product, Notion)