The Value of Eating Your Own Dog Food

Finding empathy for users and their feature requests

I recently had the experience of writing some code for an internal application our organization uses for monitoring image copyrights on our content pages. This was an extremely satisfying experience because of the amount of time it will save in my work week, but after more reflection I found a bigger meaning.

We host and maintain a massive content management system that allows our clients to post articles that may also include images. In an effort to ensure people are not using images they shouldn’t, we developed an internal application that allows us to visually inspect and approve images included in articles. When a client uses an image in an article, they must also include the copyright for that image. If the image is opensource or free they must include the level of creative commons licence it falls under, and if it is a stock image they must include the account number it was purchased under. Those images then appear in our auditing application for review and approval by our internal staff…in this case me.

The initial roll out was great (over a year ago). The basic layout of the app shows me a thumbnail image along with the copyright the user included. However, to actually approve an image it required four clicks and two page reloads for each image. I had to click the image to navigate to another page, then click two buttons on that intervening page, then a fourth click to go back to the index page. What I discovered is that for the vast majority of images (80% or more) all of the information I needed to approve an image was on that index page. So why all the navigation and clickity click? But wait…I know how to code! So, I added a checkbox to each image on the index page along with an “Update Selected Images” button, oh, and while I am at it let's add a “Select All” checkbox that allows me to check/select all ten images on that index page. Now with two clicks I can approve ten images in about two seconds. As they say in Bayou country “Beautiful Dahlin!!”

As developers we often don’t get to truly sit in the seat of our users. How often has a user asked for a new feature and we say to ourselves “…why on earth would they want to do that?” In this case I was the user. I am blessed enough to be able to write the code to make my life easier, but our users don’t have that luxury. There is great value in eating the dog food we call code that our users eat everyday. If not for the fact that I work for an understaffed government funded organization some other poor schlup would be the one stuck with the mundane task of clicking buttons for no good reason.

I originally titled this article “The Most Satisfying Code I Ever Wrote”. Before pushing the code I referenced above it would have taken me two or three hours to address the 150 or so images that were queued up and needed approval. After I deployed this code it took about 15 minutes. It's one thing to get satisfaction from solving a tough coding challenge, its another to deploy code that saves you time, effort, energy and sanity.

When users ask for feature requests, we need to put on our empathy hat. Their time is just as valuable as yours. One day the job of approving images in this application will be passed along to someone who can’t code. The code I have written will save countless hours and headaches for that person. My hope is that they will use that time to play with their kids, have dinner with their partner, or help a neighbor fix their lawn mower. Let’s approach each feature request through the prism of practicality and ease of use so our users are not left clicking buttons and navigating pages for no good reason.

Happy Coding!