Eating your own Dogfood

On three separate occasions in the past month, I found myself explaining the concept of “eating your own dog food” as it applies to software engineering. I originally thought the idiom was a bit more well-known and recognized, but it appears I was wrong. With this in mind, I thought I should write out my explanation so others can learn from it.

The idea of “eating your own dog food” is exactly as it sounds- literally eating dog food. The underlying idea is, if the ingredients in dog food are quality, and the process to make it are cleanly, there is no reason why a human couldn’t or shouldn’t eat dog food. And if that dog food is good enough for you and me, then it’s certainly good enough for your canine companion. Eat up, Fido. Eat up.

As it relates to software, the idea of “eating your own dog food” refers to internal usage of a product or service. The phrase was popularized by Microsoft in the 1990s. Similar to literally eating dog food, if the product or service is high quality, there is no reason it shouldn’t be used internally.

The biggest benefit of “eating your own dog food” is empathy. By using their product, developers gain a better understanding of the application. The product is framed in a new context, that of the user. “Eating your own dog food” ensures that the team is building the right thing. The strengths and weaknesses of the application become apparent. Patterns and use cases become more clear. Developers are more likely to encounter the same pain points as their users, to experience the same frustration and confusion. And ostensibly, the engineers are more likely to fix problems too, since they now have vested interest.

“Eating your own dog food” is a quick and easy way to validate and test a product. It provides teams added insight and fresh perspective into the product. Give it a try. Eat up.