Table of Contents

Eating your own dog food

Dogfooding is using the product you are developing internally before releasing to external users. Developers discover bugs and interface friction immediately when they use it daily, rather than waiting for user reports.

Internal users are not representative: developers are more tolerant of rough edges, more willing to work around bugs, and familiar with internals. The feedback loop is incomplete compared to external users. However, rough edges and crashes become impossible to ignore when the team that built it has to live with them.

Dogfooding complements rather than replaces external testing and user feedback. Related concept: self-hosting, where a compiler compiles itself or a version control system tracks its own development. Self-hosting is the extreme form of the same principle.