Skip to content

“Delivery Initiated” A word on having empathy for the users of your software

Dear Reader,

Lost Luggage 1 by Aaron Tyo-DickersonLast week I was in Amsterdam for DrupalCon Amsterdam, 2014. I traveled to Amsterdam from Sofia, Bulgaria where I was attending WordCamp Europe.

The Setup: I lost my luggage

I traveled from Sofia to Amsterdam by way of Frankfurt, Germany. I was traveling via Lufthansa, a great airline if you’ve not yet had the pleasure. As I had lost my travel talisman, I fully expected something to happen along the way and I was not disappointed.

My flight arrived late into Frankfurt and I had to sprint across the Frankfurt airport to get to my flight to Amsterdam. I made it with scarce minutes to spare; my luggage however, was not so lucky. My luggage got an unexpected holiday in Frankfurt for a couple of days. This post is not about my travels or the Eli Travel Curse, I just needed to set things up. I learned something very important in all of this, I learned that we as software developers and designers need to have a great deal of empathy for the people using what we build.

It is not enough to put yourself in your user’s shoes, you have to put yourself in their mindset. You have to design every user interaction with an understanding of not only who is using your software, but why they are using it.

Once I knew my luggage did not make it, I contacted Lufthansa, they handed me off to the company that handles lost bags. I filled out the forms, they gave me a packet with a fresh T-Shirt and a bad razor, give me a copy of the report that included a URL I can visit to check the status, and sent me on my way. It is this URL that is the focus of this post.

The Problem: Developers don’t use their own software

The next day I had not heard from Lufthansa so I decided to check the status on-line. I was greeted with a form from 2004 that asked me for the basic information about my incident and the showed me a status page. That page is the heart of this post. (I wish I had had the presence of mind to take a screenshot)

The form told me that the status was “Delivery Initiated”, that is all, “Delivery Initiated”.

Now as a developer, I respect the brevity of the message. However, as a traveler in a strange land, wearing the same pair of boxers for the second day in a row, I did not appreciate it at all. The message itself was absolutely unhelpful and did nothing to ease my mind – or discomfort.

  • Did this mean they located the suitcase in Frankfurt and it was being delivered to Schiphol?
  • Did this mean that it was in Amsterdam and was being delivered to the hotel?
  • What time did the status change to this?
  • When could I expect to be reunited with my suitcase?

Nope, all I got was “Delivery Initiated”. See, Lufthansa – and the developers of their lost luggage system forgot that nobody uses their system for grins and giggles. There is no option to track someone’s random lost luggage for fun. If you are using this system, you are most likely a little stressed and probably angry at the company. They did not have any empathy for me as the user. If they had they would have given me more information. At the very least, a key off to the side that let me know what “Delivery Initiated” means would have been helpful.


The Solution: Have empathy for your users

A more empathetic system would have given additional statuses.

  • We found your luggage in XXX
  • Your luggage has arrived here in XXX
  • We’ve dispatched a courier with your luggage to your hotel/home
  • Your luggage has been delivered safely, we are sorry for the inconvenience

All of these would have been great statuses to let me know what was going on. Adding a timestamp would have been even better.

It is not enough to put yourself in your user’s shoes, you have to put yourself in their mindset. You have to design every user interaction with an understanding of not only who is using your software, but why they are using it.

  • If you are designing a game, the interactions will be fun, entertaining. Your users are usually in a good mood or looking to kill some time.
  • If you are designing an airline check-in system, your interactions will be streamlined and matter-of-fact. Your users want to get it done and get on with their travels.
  • If you are designing a shopping system, your interactions will help users make a buying decision.

It is not enough to create personas and figure out who is using your software. You need to understand why they are using it, and what their mindset will be when they are using it. You need to have empathy for your users.


It turns out that by the time I checked the online status, my luggage was actually at the hotel. The hotel however had misplaced it. :) Eli, I really need you to give me another bottle of Pyrat Rum. I need a new talisman.

Until next time,
I <3 |<

Photo Credit: Lost Luggage 1 by Aaron Tyo-Dickerson
Used under Creative Commons license

Are Your Painters Standing around While You Pick Out Colors?

I’m a lucky man. I get to talk with a lot of developers and web development shops. No matter where in the world I am, one constant refrain I hear is, “Yep, we are done with the site, waiting on the client now to write the content.” OK, so most of my European friends don’t say, “Yep,” but you get the idea. Consistently, content is the last part of the equation in a website and one of the speed bumps many developers hit in deploying a website on time.

Read the entire post, Are Your Painters Standing around While You Pick Out Colors? over at

If you are looking about to hire a developer to build you a website and are looking for help and guidance, read my new book on the subject, “Avoiding a Goat Rodeo: How to get the website you want“. Investing $10 in the book could save you hundreds on your project.

97 Things Every Programmer Should Know

Dear Reader,

I met Kevlin Henny back in 2007 at the PHPUK Conference in London. (For a year or so I called him Kevin Hennly until I finally got it right) One day out of the blue, Kevlin droped me an email and invites me to participate in a new project he’s working on for O’Reilly, a collaborative book called “97 Things Every Programmer Should Know“. Not being one who is ever short of advice and opinions to give, I gladly submitted two entries that eventually made their way through the editing process and into the final book.

CWJ: Day -3

Dear Reader,

CodeWorks 09 Vital Stats

CodeWorks 09 day #: -3
Days till I see the Lovely and Talented Kathy:10
Cities left: 7
Miles Traveled: 0
Cups of Coffee: 0
Current Current City: London

Random Statistic of the day

Number of “Random Statistics” that I have waiting to be published: 0

Prep Work

I did no prep work directly last night as I spent the evening with Yair Spitzer and Paul Wander, the heads of Ibuildings UK. On top of a great meal, we had one of the most interesting conversations I’ve had in a long time. I am however, starting to “get my head in the game” so to speak. My downtime these days is spent refining my presentations and practicing them in snippets instead of all at once.

MySQL Workbench – A Superficial Review

Dear Reader,

MySQL Workbench Splash screen
Those of you who know me, know I am an old school database guy. One of the things I miss from my pre-web programming days is sitting down with an Entity-Relationship Diagramming tool and painting a picture of the database I want for my application. Since moving to MySQL as my primary database, I’ve tried out several ERDs. I’ve loved at least one, hated most others for either lack of features or price tag – or both – or been generally just unimpressed. Recently I got an email from MySQL saying the latest version of their ERD tool had been released. Honestly, it had been a while since I had taken a look at it so I thought maybe I’d give it a go. Below is what I consider a very superficial review of this tool and a couple of conclusions, both good and bad.