Sam Gentle.com

Dogfooding only works if you're a dog

In software development it's considered good practice to find a way to use the software you write. So if you're writing a new web browser you, as soon as possible, start using that web browser for your daily internet surfing. This is called dogfooding, and it's good because you're much more likely to see (and fix) the flaws in your software when you use it on a regular basis. The name comes from the phrase "eating your own dog food" which, if you think about it, kind of has the counterargument built right in.

Dogs aren't people. Dogs don't even necessarily like things that people like. And if you end up making the world's most delicious dog food as judged by humans, you've obviously gotten your wires crossed re: product design. So it is, too, with software: developers are, in very specific ways, unlike a lot of the population. A software team tends to be concentrated in one area, with one culture, and spend most of their day with powerful computers and fast internet. And when those contextual assumptions break down, you see a lot of rough edges.

Google Docs has pathological difficulty remembering that you use non-US formatted dates, but I imagine that doesn't come up very often because its developers are all in the US. Trying to use most Android apps without a stable internet connection is a complete nightmare that most people developing Android (and Android apps) aren't likely to experience often. I used a location-sharing app today that incorrectly assumed I was in a car because of my speed, presumably because the developers don't catch a lot of trains.

This isn't an invective against dogfooding; I think it's still an important aspect of development. But it's important to recognise its limitations. For testing that your software passes the minimum bar of "a person can use it without having a rage-seizure at how annoying it is", dogfooding works well. And for "does it meet the needs of our development team and people like them", it's also an excellent tool. But most software is not targeted at developers and, even if it is, there are a lot of developers on the other side of the world who might want totally different things.

So if your goal is to make dog food, please don't forget to test it with actual dogs. Also, dog food isn't nutritionally complete for humans. That's not a metaphor. Don't eat dog food.