Skip to content

Dogfooding: How Great Apps Are Made

Musklr's rest timer on an iPhone, the app the author uses for his own workouts.

Dogfooding means using the software you build, as a real user, on your own time. I take Musklr to the gym three or four times a week on iPhone and Apple Watch, and note every rough edge between sets. That is how the rest timer got its morph instead of a fade.

Dogfooding is a term that comes from "eating your own dog food". In software development it means using the software you build yourself. If you want to make great software, this makes a lot of sense, you see all the bugs, you depend on it, so you naturally want to improve it.

Why don't more developers use what they build?

Yet, in my professional career, it's very often not the case, you work for a company and are asked to develop something for users that you don't even see or talk to. You can have a product owner that comes to you with features that don't make any sense or features that you don't need. Bugs that would be discovered in just 5 minutes of using the app in the real world go unnoticed because users get used to them, fail to report them or do not know that it's not supposed to be like that.

How do you dogfood your own app on an iPhone and Apple Watch?

I believe that dogfooding is what makes software great. I am experiencing this myself as I am currently developing an app for registering all my workouts. Every time I go to the gym I use both my iPhone and Apple Watch, both running my app. I type in the amount of reps and kilos that I do, sometimes on my Apple Watch and sometimes on my phone.

Logging a set. This is the screen I look at between every set.

Why do the smallest app details only show up in real use?

One session on two devices. Log on either and the other keeps up.

This way, I am constantly testing that they are in sync, that the view makes sense, that there is haptic feedback when I click a button, that when I press and hold, the buttons slightly decrease in size, creating the illusion that you press something down, that there is a correct small buzzing at the 10 second mark when the rest timer is counting down. That when I set a new record, there is a nice animation that shows up on both devices at the same time. There are a hundred little things I test, just by using it, 3-4 times per week. Sometimes for hours at a time. And while I rest 3 minutes between sets, I take the time to note everything down on my phone (I am a hard critic of my own creation).

A new record, the moment it lands.

Why should a rest timer animation morph instead of fading out?

Small things start to bother me since I use the app so much, for example, there was an animation for the rest timer, it showed up in the middle of the screen. And faded out when I clicked on the outside. A nice animation that worked as intended, except that I also have a tiny rest timer that shows in the top right when it is minimized, and it would make a lot more sense if the large rest timer morphed into the smaller rest-timer when you clicked away. This is the type of small details that only a super user that really uses the app all the time would care about or even notice.

How it works now. Tap away and the ring flies home to the stats bar.

Does the iPhone Clock icon show the real time?

I think this is how Apple develops a lot of their software. They have extreme attention to detail, for example that icon for your clock on your iPhone. Have you noticed that it actually shows the time correctly, that the sweep hand shows the seconds, and ticks away every second. So this is a single icon. The only purpose is for you to click on it to open the app, but someone figured that they would make a special, custom design, for this particular app with a real working watch as the icon. Something that most people never notice. These are the small details that in aggregate make Apple software feel great. You might not even be consciously aware of it. This is why it is sometimes hard to explain to my Android friends why I prefer Apple, it is not one feature, it is a thousand small design details. Myself I had an iPhone for years, and noticed the clock icon randomly one day, and of course was very impressed.

Frequently asked questions

Where does the term dogfooding come from?

From the phrase eating your own dog food: you consume what you produce. The metaphor is about dependence rather than diligence. You hit the bugs yourself, in ordinary use, and you rely on the thing you shipped, so you want it better.

How often do you have to use your own app for dogfooding to work?

Often enough that the small things start to bother you. Three or four times a week, sometimes for hours, on an iPhone and an Apple Watch both running my app. Every session tests sync, haptics and whether the screen still makes sense.

How do you keep track of bugs you find while training?

On my phone, between sets. A three minute rest is long enough to write down whatever just annoyed me, so it gets noted at the gym rather than half remembered later. I am a hard critic of my own creation.

What kind of problems does dogfooding find that a bug report never mentions?

The ones nobody would think to write up. Whether a button gives haptic feedback. Whether buttons shrink under a press and hold. Whether the rest timer buzzes at the ten second mark. Whether a new record animates on both devices at once.

Is dogfooding enough on its own, or do you still need real users?

This post makes the narrower case: dogfooding is how the small things get found, because whoever hits one in ordinary use adapts to it or never reports it. It does not claim your own use replaces the users you never see.

Why do a thousand small details matter more than one big feature?

Because they are what an app feels like. The Clock icon on an iPhone shows the real time, and its sweep hand ticks every second, for an icon whose only job is being tapped. Most people never notice, and it still adds up.

Try the app I use every week

Musklr logs a set in two taps, on iPhone and Apple Watch, and it works offline. It's free on the App Store.

Download Musklr on the App Store

See everything Musklr does on the home page →

Share this post