Table of Contents

Eating your own dog food

Eating your own dog food (or dogfooding) is the practice of using the product you are developing internally, before or alongside releasing it to external users. The phrase comes from a 1988 Microsoft email where a manager challenged his team to use the company's own Lanman networking software internally.

The value is that it subjects the developers to the same experience as the users. Bugs that would otherwise surface only in user reports are discovered by the team itself. Friction in the interface — things that are technically functional but annoying to use — becomes immediately apparent when the people building it have to use it daily.

An embedded firmware team that uses their own RTOS for internal tooling will discover crashes and API awkwardness that a test suite would not catch. A developer tools company that uses its own IDE or CI system eats its own dog food.

The limitation is that internal users are not representative users. Developers are more tolerant of rough edges, more willing to work around bugs, and familiar with internals in a way that external users are not. Dogfooding reduces the gap but does not close it — it complements external testing and user feedback rather than replacing it.

The concept is related to self-hosting: a compiler that can compile itself, or a version control system whose own development is tracked in itself. Self-hosting is the extreme form of the same principle applied to infrastructure.