Empathy with end users is critical when developing consumer-facing software. Many go even further and argue that you should be your own user to effectively deliver the best experience.

I’d encourage anyone starting a startup to become one of its users, however unnatural it seems.

— Paul Graham Organic Startup Ideas

In practice, though, this can be difficult:

  • As a developer, you’re just not representative of the intended audience.
  • You’re [appropriately] focused on the product’s next iteration, while your audience is occupied with the current state.
  • You spend countless hours focused on product details—of course it’s a challenge to empathize with a casual visitor’s first impression.

Keeping it Real

We’ve tried some best practices to overcome these tendencies. User feedback is emailed to everyone in the company. Engineers share customer support responsibilities. But one simple tool has been surprisingly useful: we stole a page from the agile development handbook and built an information radiator. Like a kanban board, news ticker, or analytics wall board, our information radiator gives us an ambient awareness of end users’ experiences. How?

It’s our site, as a slideshow.

Artsy as a slideshow

That’s all. Our wall-mounted display shows the same web page that a visitor to our site recently requested. Every 20 seconds, it refreshes and shows a new, more recently requested page.

Without much effort, this gives us a sense of where users spend time on the site (nudes seem popular today). The impact of events such as email blasts or celebrity mentions is immediately apparent (did @aplusk just tweet us?). And when problems happen, we notice them as soon as errors pop up on the screen (AWS down again?).

Of course, this doesn’t replace proper user research, analytics, or monitoring. And the approach might need tweaking to work for your site. The lesson, though, is find a way to spend time with your site.

Implementation Notes

Using knife-solo and chef, we spawned an EC2 instance and configured it to drain our main site’s logs from heroku. A single, static web page contains a full-screen iframe and a bit of javascript that periodically requests the most recent URL from a tiny sinatra app, loading the resulting URL into the iframe. The sinatra app performs an ugly bash command to grep the last appropriate GET request from the drained log, filtering out requests from Artsy HQ and other uninteresting cases. Via a special flag, our site suppresses the usual tracking and analytics when loaded in this context (you didn’t want to juice your stats, right?).

Have other tricks for keeping it real? Let us know in the comments.

Update: See a gist with sample code for the slideshow app.

Categories: EC2, Heroku, Product Management