In software development, eating your own dogfood applies to when you use the product that you're building. Dogfooding makes you put yourself in your users' shoes and since living in the house every day is very different from designing and building it, you end up noticing some flaws that you didn't even think of in the first place.
At OutSystems we eat our own dogfood every single day. As a company that builds a platform that allows you to build amazing web applications, we couldn't even take ourselves seriously if we didn't use the Agile Platform to build our own website.
Actually we believe in our platform so much that, among other things, we use it for:
... and a lot more incredible stuff. Actually a considerable part of the platform itself is built using the platform!
Agile Platform Service Center
Building those systems ourselves is awesome because if we need anything we just implement it. Recently a team leader wanted to use KANBAN on his project and wanted to use it in our project management tool, so he just edited the tool and created a KANBAN board in a couple of minutes. Bang! Problem solved.
Although eating your own dogfood is very important, you shouldn't go on a dogfood only diet. Making all your own tools doesn't make sense especially when there's already a very good tool available for the job. Sharing documents or editing them collaboratively? We use Google Docs! Source control? We've started with CVS many years ago and have since moved on to subversion.
It's not a matter of fundamentalism: we don't dogfood all things and you shouldn't either. It's just not practical to do everything yourself. You should always use the best tool for the job. However if that means not using your own tool for anything, then there might be a real problem with your product.
Using other's tools also doesn't mean that you lose the ability to add that extra feature you need. We use Google Docs, but we've integrated it with our own Vacations booking and approval system so allocation sheets and reports are automatically updated when new vacation days are approved. We use subversion, but we've integrated it with our issue management system to track subversion commits in their related issues. The true gourmet uses dogfood extensibility and integration for extra flavor!
Keeping a rich diet may also be important because you're not alone — people around the world are having ideas and then sharing and putting them to practice. You should check what new flavors have been appearing and how you can improve your own dogfood with your neighbor's recipe.
At OutSystems we try keeping our own dogfood flavor always in check. That's why when someone new joins the company, the first weeks are spent using the product to build something real and useful. It is a win-win situation: The newcomers learns a lot about the product and everyone else gets fresh insight from their feedback, many times bringing to our attention small (and not so small) improvements no one had thought of yet.
Keep in mind that your tastes, like your needs, may be different from the rest of the world's. If you grow your product based only on what you get from the process of dogfooding, you may end up deviating from your customers' needs.
Eating your own dogfood is a very important test, but it doesn't assure that your product is good. Just because YOU can use it, it doesn't mean it's usable, let alone useful. You must always complement dogfooding with usability tests and listening to your users.
Only when others also approve your dogfood, can you truly believe it is delicious and ready to market!