Before You Hit Deploy, Talk to a Duck: The Surprisingly Powerful Pre-Ship Ritual Your Team Is Skipping
Somewhere on a shelf in a developer's home office, there's a small yellow rubber duck. It has heard more confessions than a priest. It has absorbed more half-baked logic, circular reasoning, and "wait, that can't be right" moments than any code reviewer ever will. And yet, most engineering teams treat it like a joke.
That's a mistake — and it's costing them.
Rubber duck debugging, the practice of explaining your code out loud to an inanimate object (or a bot, or a willing human), is one of the most well-documented productivity hacks in software development. And still, it's treated as a personal quirk rather than a team-wide discipline. If your organization is serious about shipping cleaner code with fewer rollbacks, it might be time to get a little weird and start talking to more ducks.
Why Your Brain Lies to You (And How Talking Fixes It)
Here's the core problem: when you're deep in a problem, your brain fills in gaps automatically. You think you know what the code does because you wrote it. Your mental model is so vivid that you skim right past the part where the logic actually breaks.
This is called the curse of knowledge — a well-documented cognitive bias where knowing something makes it harder to imagine not knowing it. It's why the engineer who built a feature often isn't the best person to test it. Your assumptions become invisible to you.
Verbalizing disrupts that process. When you force yourself to explain code out loud — step by step, in plain English — your brain shifts from recognition mode into explanation mode. These are genuinely different cognitive processes. Explanation requires you to be explicit about things recognition lets you gloss over. The moment you say "so then it checks if the user is authenticated... wait, no it doesn't," you've done something no linter can do for you.
Researchers in educational psychology call this the protégé effect: the act of teaching or explaining something to another person (or even a pretend person) deepens your own understanding and surfaces gaps you didn't know existed. Developers experience this constantly — it's just that most of them don't do it deliberately.
The Three Flavors of Pre-Ship Verbalization
Not everyone is going to buy a rubber duck and narrate their pull requests to it. That's fine. The goal is verbalization, not any specific ritual. There are a few ways teams are making this work in practice:
1. The Classic Duck (or Bot) Solo debugging with a physical duck, a stuffed animal, or increasingly, an AI assistant. Tools like GitHub Copilot Chat and ChatGPT are genuinely useful here — not because the AI gives you the right answer, but because explaining the problem clearly enough for the AI to understand forces you to confront your own assumptions. The act of writing a good prompt is itself a form of rubber duck debugging.
2. The Pre-Review Walkthrough Before opening a PR, the author does a two-minute screen share with one teammate — not to review the code, but just to hear themselves explain it. This isn't a code review. There's no approval happening. It's a sanity check. Teams that adopt this report catching a surprising number of issues before the formal review even starts, which means reviewers spend their time on architecture and logic instead of pointing out obvious mistakes.
3. The Written Explanation Habit Some engineers swear by writing a brief plain-English description of what their code does before they write the code itself — and then again after. If the two descriptions don't match, that's your signal. This maps closely to test-driven development in spirit: it forces you to externalize your intent, which makes gaps visible.
Why Teams Don't Do This (And Why That's Fixable)
The honest reason most teams skip verbalization is that it feels unproductive. Talking to a duck doesn't ship code. Doing a pre-review walkthrough takes time. Writing a plain-English description feels redundant when you could just write the code.
This is the classic activity vs. outcome confusion in engineering culture. We optimize for lines of code, tickets closed, and PRs merged — all inputs — when what actually matters is working software in production with a low defect rate.
The ROI on pre-ship verbalization is real, even if it's hard to put in a dashboard. A 2020 study from Cambridge found that defects caught before code review cost roughly 10x less to fix than those caught after deployment. If a two-minute duck conversation catches even one bug per sprint, it's paying for itself in multiples.
The cultural fix is straightforward: normalize it. When your tech lead does a quick walkthrough before their own PRs, others follow. When your team Slack has a channel where people post "I just explained this to my duck and realized the whole thing was backwards," it stops being embarrassing and starts being a badge of thoroughness.
Building the Habit Across a Team
Here's a lightweight framework for institutionalizing this without making it feel like a mandated process:
Start with the PR template. Add a single checkbox: "I've explained this change out loud or in writing before submitting." It's not enforced. It's just a nudge.
Make it visible, not performative. Create a low-stakes space — a Slack thread, a Discord channel, a section in your weekly standup — where people can share "duck moments." The bugs they caught by just talking through their code. Visibility normalizes the practice.
Pair it with async culture. For distributed teams, the pre-review Loom video is the modern duck. Record a two-minute walkthrough of your own PR before you post it. You will catch something. Every time.
Model it from the top. Senior engineers and tech leads doing this openly is the single biggest lever. When the person everyone respects says "I almost shipped a bug until I explained it to my dog," it removes the stigma entirely.
The Bigger Picture
Rubber duck debugging is ultimately about intellectual honesty — the willingness to slow down and interrogate your own thinking before asking someone else to trust it. In a culture that glorifies speed and shipping, that kind of deliberate pause feels counterintuitive. But the teams that do it well tend to be the ones that ship with confidence rather than anxiety.
At its core, this is what great engineering collaboration looks like: not just reviewing each other's code, but building habits that make the code better before it ever reaches another set of eyes. The duck is just the messenger.
So yeah, get a duck. Or talk to your terminal. Or explain your PR to your cat at 11pm. Whatever works. Just say the words out loud before you hit deploy — your team will thank you, even if they never know why.