Every corporate culture has it’s own set of acronyms, TLAs (three letter abbreviations) and jargon, and Microsoft is no different. I try not to let it slip too much into my blog entries, but a comment from M.J. Easton reminded me that a while back I did use one without explanation. In an entry talking about the DirectCast operator, I said:
In addition to the fact that we like VB, it’s also a great way to dogfood the product.
I don’t believe the verb “to dogfood” is unique to Microsoft at all, but it’s certainly an integral part of our culture. It’s short for “to eat one’s own dogfood,” which means “to use the product yourself that you are trying to sell to your customers.” The purpose of dogfooding is severalfold, but the main reasons are:
1) It proves to customers that we believe in the product.
2) Because dogfooding usually means using beta (or pre-beta) software, it helps flush more bugs out of the product.
3) It makes us suffer the same bugs and design flaws that we inflict on users, thus giving us incentive to fix them.
4) It’s a valuable reality check that the product is actually as good as we say it is.
5) Because Microsoft is such a large organization, it can flush out problems that could not otherwise be found prior to full-scale rollout at launch. (This holds especially true for corporate server products such as Exchange, SQL, IIS, etc.)
6) We learn how our products actually work, which is more often than not not exactly how we think they work.
All in all, dogfooding is a extremely valuable, if not sometimes painful, thing that we do at Microsoft.
(You can find a deeper discussion of the etymology of the word in the Wikipedia entry on it.)