The Norman Door Problem in AI Developer Tools
In The Design of Everyday Things, Don Norman describes a door that confuses people because the handle affords pulling but the door must be pushed. The design communicates the wrong action. Designers call this a Norman Door.
Most AI developer tooling is a Norman Door.
What Does a Norman Door Look Like in AI Dev Tools?
You want to add a tool to your Claude agent. The tool is three lines of code. Getting it working requires:
- Locate the schema definition format (not in the quickstart)
- Understand the difference between
type: functionandtype: toolacross SDK versions - Learn that
inputSchemaandinput_schemaare both valid depending on the client - Discover that tool call results require a specific wrapping format or they silently fail
- Find the debug flag showing raw API payloads (buried in a GitHub issue from 8 months ago)
The door had a handle. It said PULL. You pulled. It did not open.
Why This Happens
AI dev tools are built by ML researchers and infrastructure engineers. They optimize for capability, not affordance. The tool can do the thing. Whether a developer can figure out how to make it do the thing is a secondary concern.
This is the same failure mode as early Unix tooling, early git, early Docker. Powerful primitives. Hostile surfaces.
The difference: AI tooling moves 10x faster. Bad affordances get shipped, cloned, wrapped, and built upon before anyone fixes them. The Norman Doors multiply.
Three Patterns
1. The Invisible Failure
AI systems fail silently. An agent calls a tool with a malformed schema. The API returns a 200. The tool result is ignored. The agent continues. Nothing in the logs indicates a problem — until three steps later, when you notice the task was never completed.
Norman Door equivalent: you push the wrong side of the door. It moves slightly. You think you opened it. You walk into the frame.
Fix: Explicit tool call acknowledgment in the agent loop. If a tool call is not confirmed executed, surface it immediately.
2. The Context Cliff
Agent frameworks assume you know what a context window is, what token counts mean, what happens when you exceed them. No guardrail. No warning. No graceful degradation. Quality degrades. You do not know why.
Fix: Context utilization should be a first-class visible metric. Not buried in API response metadata. Displayed. Warned. Actionable.
3. The Prompt/Config Ambiguity
When does a system prompt do the job? When does it require a config parameter? When do you need both? Most frameworks have no clear answer. The developer pushes from the wrong side — writes a prompt when they need a parameter, sets a config when they need a prompt. Both look plausible. Only one works.
Fix: Separate prompt concerns from configuration concerns. Explicitly document what each controls. No silent overlap.
The Cost at Scale
In a solo project, Norman Doors cost hours. You debug, figure it out, move on.
In a multi-agent system running autonomously, Norman Doors cost entire operation cycles. An agent that hits an invisible failure does not debug itself. It continues, corrupts downstream state, and produces a report that looks complete but is not. You find out during QA. Or after shipping.
I built a system of 6 persistent AI agents. The Norman Doors I hit most often were not complexity problems. They were affordance problems. The tool worked. I did not know how to hold it.
What Good Affordance Looks Like
Linear's issue model: Create an issue. It works immediately. No schema. No wrapping. The obvious action is the correct action.
Stripe's API: Every failure has an error code. Every error code has a doc page. The door tells you exactly why it did not open.
GitHub Actions: YAML structure matches the mental model. Indentation errors caught with a clear message.
None of these are AI tools. That is the point.
A Challenge for AI Tool Builders
Before shipping, ask: what does a developer who has never used this tool try first?
If their first try fails silently — you have a Norman Door. Fix it before framework authors build on top of it. Norman Doors become load-bearing walls.
The AI tooling ecosystem is young enough to fix the doors. In two years, we will not be able to.
Building multi-agent systems and hitting affordance walls daily. Follow for more on what actually breaks in production AI systems.
Top comments (0)