Dogfooding

Dogfooding is the practice of a company using its own product for real work, internally and before customers do, so that the people who build it experience it as users and find the defects, gaps and irritations that testing against a specification does not. The name is short for eating your own dog food. It supplements testing rather than replacing it.

The longer version

The mechanism is exposure over time. A tester runs a scenario once and moves on; a colleague who files their expense report in the product every week meets the slow screen, the wrong default and the confusing error on a bad day when they are in a hurry, which is how customers meet them. The practice works when the internal use is real: the sales team runs its pipeline in the CRM the company sells, the engineers file their own bugs in the tracker the company ships, the staff receive the release before any customer does. The output is feedback and defects, routed to the same queue as customer reports.

Dogfooding differs from alpha and beta testing in who tests and why. Alpha testing is a scheduled phase at the developing organisation's own site, run unscripted by people who did not build the product, in an environment the team controls; beta testing is done by external users who volunteered, on a pre-release build. Dogfooding is a standing condition rather than a phase: the company depends on its own product, so the feedback keeps arriving after the release. It differs from a bug bash, which is a single timed session. And it is only possible for products the company can plausibly use; a company that builds telematics for farm equipment cannot dogfood it.

The internal experience stops resembling the customer's, and dogfooding stops finding anything. Staff run the newest build with every flag on, on fast machines, with an engineer down the hall to fix things, and conclude the product is fine while customers on last month's version on a slow laptop are not. It also fails when the feedback has nowhere to go: colleagues mention problems in chat, nobody files them, and the practice produces grumbling instead of tickets. The corrective is a build that matches what customers run, and a filing route colleagues use instead of a chat channel.

Common questions

What is the difference between dogfooding and beta testing?

Beta testing puts a pre-release build in front of external users who volunteered, for a defined period, to find problems before general release. Dogfooding is the company's own staff using the product for their actual work, continuously, before and after release. Beta testers see the product as strangers; dogfooders see it every day and stop noticing what strangers would.

Why do companies dogfood their products?

Because a specification cannot describe the slow screen, the wrong default or the error message that makes sense only to the person who wrote it, and a test run once does not meet them on a bad day. Daily internal use finds those before customers do, and it keeps the people making decisions about the product inside the experience of using it.

What are the limits of dogfooding?

Staff are not customers: they know the workarounds, run the newest build on good hardware, use the product in one company's way, and have an engineer nearby. Their feedback covers the paths they use and misses the ones they never would. Dogfooding finds the irritations of daily use; it does not replace testing against the specification or feedback from users who owe the product nothing.

What is the difference between dogfooding and alpha testing?

Alpha testing is a scheduled phase: testers who did not build the product, on the developing organisation's own site and in an environment the team controls, work through it unscripted the way a customer would, and the phase ends on a date. Dogfooding is a standing condition: staff depend on the product for their real work, on the build customers get, and the feedback continues after release. Alpha rehearses a customer's first hour; dogfooding lives the customer's year.

How do you run a dogfooding programme?

Put the product in the path of real internal work, so that using it is not optional: the company's own expenses, tickets, documents or sales pipeline run through it. Give staff the build customers will get, on the hardware customers have, with flags set the way they are in production. Provide one filing route that lands in the same queue as customer reports, and read it. Grumbling in a chat channel is not a programme.

Bug reports that arrive ready to triage.

Collect replay, console, network and browser context with the Free plan.

<script src="…/widget.js" data-key="pb_pub_…">