A term that’s become very popular, and which especially Microsoft’s developers seem to champion, is “dogfooding”. The idea that as a developer, you should use your own products on a daily basis, even during development. This exposes you to all the weaknesses and flaws of the product, and makes you much better equipped to deliver a product that’s actually worth using.
But perhaps there’s a counter-argument that people seem to miss. If you use a lousy piece of software on a daily basis, you get used to it. You stop thinking about how it should be, and only consider how it is.
I think the first place I heard of the term “dogfooding” was on the Windows Mobile team blog. And let’s be honest, is Windows Mobile really a competitive product? Is it worth using? Perhaps in a vacuum. If all you know is Windows Mobile, then, well, it’s not too bad. But there’s an obvious reason why the product is struggling in the marketplace. Compared to everything else, it feels horrible to use.
Perhaps the recipe for fixing Windows Mobile would be less dogfooding. Windows Mobile developers shouldn’t be forced to use their own buggy, slow, in-development OS all the time on their phones. Perhaps they should be given iPhones and Blackberries. Perhaps some of them should even be given simple old-school non-smartphones. The ones that didn’t need to be rebooted, and didn’t “feature” load times for opening your contacts list, or to write a new SMS (text message). Perhaps they need to be shaken up a bit, and see what else a phone can feel like when you use it. Windows Mobile 6.5 might be better than WM6.0. But that’s not the competition they need to beat. They need to beat the iPhone, they need to beat Android, Blackberry and Symbian. So those are the products they should use at least as much as they use Windows Mobile.
The same may be true for Visual Studio. It’s great that the team uses Visual Studio 2010 internally as much as possible during development. But that also means that they get used to its performance issues. And it means they get used to the assumption that “this is what an IDE is like”.
Perhaps Visual Studio would be a better product if the team was forced to use Emacs, Vim and Eclipse. Or perhaps even Notepad and makefiles.
Dogfooding has its advantages, certainly, but I don’t think it alone is a recipe for a good, competitive product. It leads to an incremental improvement over the previous version of your product, but it doesn’t take into account what else is happening in the world. It doesn’t give you the opportunity to question your basic assumptions1. Sometimes, incremental improvement is not what your product needs.
Just a thought.
Of course I’m not claiming that Microsoft’s developers never use or examine competing products. And likewise, there are obvious benefits to dogfooding, and I’m certainly not claiming that the practice should be eliminated. But I think it is telling that their blog posts frequently mention how heavily they dogfood their products. But they never mention “for this release of Visual Studio, we actually went back and looked at why many people still prefer Vim.”, or “In developing Windows Mobile 7, the entire team was issued phones running various other OS’es, and this taught us what we need to do to finally ship an OS that will take over the world”. ↩