We Are Not Anti-AI.
We Are Pro-Duck.

AI is here. It writes code. Sometimes the code works. Sometimes the code calls an API endpoint that was deprecated in 2019 and references documentation from a parallel universe where JavaScript has types. But it writes code, and Dev is grateful.

The duck does not write code. The duck does not generate anything. The duck sits on your desk and says nothing and you explain your problem to it and somewhere around the third sentence you realize the bug was in the function you weren’t looking at. That’s been the trick since 1999. That’s still the trick.

Dev has both. An AI in the chat window and a duck on the desk. Dev trusts the wrong one. That’s the joke. And the lesson.

The Problem with Vibe Coding

The problem with vibe coding is not that it exists. Vibe coding is real, it is productive, and it is here to stay. The problem is that there’s no rubber duck in the loop.

Dev opens a chat window. Dev types “build me a dashboard.” The AI builds a dashboard. Dev ships the dashboard. Nobody — not Dev, not the AI, not the PM who requested it — has articulated what the dashboard is actually for. The duck would have asked. Or rather, the duck would have said nothing, and Dev would have asked themselves.

That’s the gap. Not a technology gap. A narration gap. Vibe coding skips the step where you explain the problem to yourself. The AI doesn’t need the explanation — it generates code from vibes. But you need the explanation. You always have.

Why the Duck Works

The rubber duck works because of metacognition — the act of thinking about your thinking. When you explain a problem to an inanimate object, you are forced to externalize your internal model. You are forced to narrate. And narration exposes assumptions.

The AI doesn’t force you to narrate. The AI accepts your vague prompt and returns code that looks right. The duck forces you to slow down and say the thing out loud. And in saying it out loud, you hear what you actually mean. That’s not mysticism. That’s cognitive science. Externalization creates a feedback loop that internal thought does not.

The duck is silent because it needs to be. If it talked back, you’d listen to it instead of to yourself. That’s the difference between the duck and the AI. The AI has answers. The duck has presence. You have the solution — you just haven’t said it yet.

The OCNA Framework

Four steps. Invented for rubber duck debugging. Reframed for the vibe coding era.

O

Obtain

A half-baked idea and a blank chat window. In the old days, you obtained a rubber duck. Now you obtain a blank prompt and a sense of misplaced confidence. The duck is still on your desk. You will need it by step four.

C

Confide

Talk to the duck and the LLM simultaneously. Tell them both what you're trying to build. The AI will generate code immediately. The duck will say nothing. The duck's silence is doing more work than the AI's output — because in confiding to the duck, you are hearing your own requirements for the first time.

N

Narrate

Watch the AI hallucinate with confidence, then narrate what it generated. Line by line. To the duck. "This function calls the Stripe API..." — does it? "This variable stores the user's session..." — does it? Narration is where hallucinations die. The duck doesn't catch the bug. You do. The duck just made you look.

A

Awaken

Realize you have no idea what the code does — but it's already in prod. The awakening is not always pleasant. Sometimes it arrives at 2am when the error message is the title of your fourth book. But it arrives. And when it does, the duck is still there. Silent. Patient. The only adult in the room.

Learn the full technique in our complete guide to rubber duck debugging. The manifesto lives in practice through The Duck and the Injection, Book 1 of the vibe coding picture book series.

The duck never panics. Dev always does.
That’s the joke. And the lesson.