Dogfooding: How Great Apps Are Made
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 it rarely happens in a normal job
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.
I take my own app to the gym
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.
A hundred small things I only find by using it
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).
The rest timer that should have morphed
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.
Apple does this too: look at the Clock icon
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.
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.