I bought some pants at a major retailer a few months ago. After wearing them twice, they completely fell apart. Having never returned a pair of pants before, I didn’t keep the receipt. So I brought the pants, which had obviously barely been worn, back to the store. Despite having the original card that I used with me, they refused to give me a store credit or exchange. All they offered was a measly $5, when the pants originally cost $20. And this process took forever, with them trying to enter my info into the POS no less than 3 times. So I wasted about 25 minutes for nothing.

Now, I’m not exactly a frequent shopper at this store, but I do go there periodically for various items. Now, I’m certain I’ll never go back. So the retailer just ensured I will never visit their stores again because they wouldn’t give me the extra $15 back on what was obviously a flawed product. It’s no wonder the company’s sales keep dropping.

What’s the moral here? Don’t do things that piss your customers off for life when the cost to make them happy is so trivial. Surely I was worth more than $15 in profits to this retailer over even a modest time horizon, but they’d rather have their staff feel superior than keep me as a customer.


Yellow on white

07Sep07

Considering how long the web has been in the mainstream, it’s amazing that some websites still use hard-to-read color schemes like yellow text on a white background or dark grey on black. To make sure you don’t accidentally end up in this club, always do a reality check when you’re creating a new design. Try to preview your chosen color scheme, fonts, and text sizes in the same context where the final product will appear. Show it to some friends in different age groups. See if they can read and use it without squinting.

This sort of informal testing is pretty easy to do for the web and print, but a little more challenging for outdoor signs and consumer products. In the latter cases, my advice is to find real-life examples of another design that uses a similar approach. This is especially true for outdoor signage. The next time you’re passing a store or restaurant at night, think about which colors are the hardest-to-read at a distance. If you’re like me, you’ll be wondering why anyone uses blue letters, rather than higher-contrast options like white, yellow, or red.

While it’s nice to stay consistent with your corporate identity scheme, you should think twice about doing this if your corporate colors make the design hard-to-read. After all, if potential customers can’t find your restaurant or use your website even when they’re seeking it out by name, you’re leaving a lot of money on the table.


A few days ago, I wrote about the right time to show warning and confirmation messages. Most of us have a pretty good sense of when this has gone too far, like those programs that say “Are you sure?” for every little task you try to complete. I’ve also seen this taken to the extreme in physical products, including my Dell laser printer. When it runs out of paper during printing, it beeps loudly and shows a message on the display. This is logical and helpful, even if it’s a bit annoying. But when you try to add more paper — or just remove the paper tray for another reason — it makes the same loud beeping noise. This behavior is obviously pretty annoying: if the user removes the paper tray, you can be pretty sure they don’t need a blaring reminder that yes, they have removed the paper tray. Imagine if your coffee maker started beeping every time you took the carafe out to pour a cup of coffee, or if your refrigerator complained whenever you opened the door.

Regardless of whether we’re designing physical products or software applications, it pays to think about the value that error messages have for our users. If the message just tells the user something they already know, a more subtle notification (or none at all) is probably the right thing to do.


Even with today’s super-fast computers, it still takes extra time to load PDF files, Quicktime movies, and other browser plugins — especially if the files are large. Considering how quickly users will abandon a website or application that responds slowly, it’s important to let people know what to expect before they click your links. As a rule of thumb, if you’re linking to something that isn’t a regular webpage, requires a plugin, or opens in another program entirely, make sure to give the user fair warning of the file type and size. Something like “Download the user’s guide (PDF, 5 MB)” or “Watch the demo video (Quicktime, 20 MB)” can go a long way towards managing expectations and keeping your users happy.


With each revision of software, there seems to be an ever-increasing number of settings to deal with. I’ve seen this on PC and Mac programs, web-based apps, network routers, and more. Even after paring down the settings screens to the most important options, you may still be left with quite a few things that users can change. Given this necessary evil, even the best-designed applications seem to have one consistent failing: there is no way to simply view all the settings. Instead, you have to locate each page of options, click the “Edit” button, review the settings, and repeat the process for the next page. This is tedious and greatly increases the risk of making accidental changes.

To remedy the problem, give users a way to review all the settings and options from one place: a big, easily printed list that they can review without the risk of changing anything by accident. As an added benefit, the ability for users to print or save a copy of the list before making any large-scale changes in the software gives them a way to recover gracefully if they mess something up. This leads to happier users — and fewer panicked tech support calls 🙂


While visiting San Francisco recently, I planned to ride their excellent BART train from the airport to downtown. When I got ready to buy a ticket, I saw that all of the turnstiles were open and marked “free”. Some nearby signage explained the reason: it was a “Spare the Air” day, in which many forms of mass transit are free until 1 pm to encourage more ridership, thus reducing air pollution. Fine by me, I thought.

Then I tried to buy a ticket for my return trip, which was scheduled for after 1 pm. As I went from one ticketing kiosk to the next, every screen was covered with a hand-written “out of order” sign. I asked a station attendant if there were other working ones somewhere, and her answer surprised me. Instead of changing the screens to say something like “You can buy tickets here, but you don’t need them if you’re riding before 1 pm today”, the kiosks simply don’t work during these free ride periods. They are “out of order” on purpose.

Perhaps BART doesn’t have a centralized way of making the machines show different messages on these dates, so they just turn off the ticket sales system at the main office. Or maybe the main office doesn’t consider the lack of notice to be an issue. Instead, the staff at each station are left to come up with a solution. So to prevent customers from buying tickets when the rides are free (and thus asking the staff for a refund), they just say the machines are “out of order”. But this is a dangerous practice: seeing an “out of order” sign regularly will train customers to expect the machines to be broken, and eventually reduce usage of the systems — thus negating the cost savings associated with self-service ticketing.

I think one simple change would make this scenario a lot better: BART’s main office could print up signs to tape onto the ticket machines on Spare the Air days. These signs would tell customers that tickets aren’t needed for any rides before 1 pm on that day, but they can still use the machines normally. Aside from better serving those customers who want to buy tickets for later use, this would also increase people’s confidence in the ticketing kiosks — since they wouldn’t be “out of order” so frequently.


I travel a lot on business, and I’ve noticed an interesting trend. While many airports still humiliate travelers who forgot to bring a plastic bag for their liquids and gels, others have taken a better approach: they provide plastic bags right by the security checkpoint. At Chicago’s Midway airport, they’ve even taken this a step further: there is actually a bag dispenser, which I think is sponsored by Glad or Hefty. It’s a smart, time-saving move for the airport and for travelers.

I think we can adapt this approach to virtually any customer experience: If people need a third-party item in order to use your product or service, it pays to make it easy for them to get that item. This might mean giving them a low-cost accessory like in my plastic bag example, or providing a link where they can download what’s required. Similarly, if using your product involves multiple steps, make sure to provide clear directions about how to go back to the previous step and forward to the next one, along with quick links to related features. This approach will make your products easier to learn for novices, while increasing productivity for advanced users.


I’m a huge fan of Bloglines for both desktop and mobile usage, and I generally find that it works really well.  But I came across one really annoying issue on the mobile interface.  If you’re scrolling through a feed and click “Unsubscribe” by accident, it removes that feed instantly.  No warning message, and no option to undo or retrieve the feed from your history. I had to go locate the feed again, subscribe, and move it back to the appropriate folder, which was pretty annoying. So here’s my advice: if choosing a particular option by accident is going to make the user really unhappy, and there’s no practical way to let them undo it, be sure to show a warning message first 🙂


I find myself using the “Find a Store” feature on retail sites more often than I realized, usually to figure out the store hours. While most sites make this easy to find, others do some really puzzling things when designing this feature. After spending a few minutes comparing the store locators on 10 popular retail sites, here is my totally unscientific analysis of what separates the good from the bad.

The ones that I found easiest to use called the feature “Store locator” or “Find a store”, and placed the link at the top of the homepage. This group included Office Depot, OfficeMax, Staples, Best Buy, and Target. In the not-so-great group, which included Costco, IKEA, Circuit City, Wal-Mart, and Apple, the feature either had a strange name or was placed further down the page. For example, Circuit City puts the feature in a weird grayed-out graphic labeled “in store find one near you”, and Apple calls it “Visit an Apple retail store” and places it on the bottom left of the page. And if you happen to click the “Store” link on the Apple homepage, it’s almost impossible to find the store locator.

On the plus side, all 10 of the sites included their store hours, which is good.  But only Target offered the option to view a click-and-drag style map. The others are still using old Mapquest maps or a static map image, which make it much more difficult to see the store location and the surrounding area. Considering how easy it is to integrate Google Maps or other modern mapping tools into a website, it’s a shame that these retailers haven’t made the switch.


You could write volumes about password and security issues on the web. Some issues are highly complex, while others are common sense like “don’t write your password on a sticky note on your monitor”. In fact, if you’re trying to create a good password policy for your application, Thomas Baekdal just wrote an excellent article on how to create secure passwords that users can actually remember. But that’s not what I’m writing about today.

My request is very simple: Never email users their password. Why? In most cases, email is an insecure method of communication. Email can be intercepted. So every time you email a password to your users, there is a chance that the password could be compromised — along with all of the user’s data inside your web application.

This behavior isn’t limited to poorly-made sites. I have seen everything from airline frequent flyer sites to project management applications send an email with the username and password right after creating an account. Even more sites skimp on the “Forgot Password” feature. Instead of generating a new password, they just email you the existing one — further exposing the password to prying eyes.

Fixing this problem is straightforward:

  • Never email users their password, either during initial account creation or subsequent password resets.
  • When a user forgets their password, give them a way to generate a new one. Make this a temporary password that they have to change after logging in. You can even email this if you want, since it’s only valid for one-time use.
  • If you really want users to have a copy of their password so they don’t keep asking for password resets, let them view their initial password or retrieve it later from a secure form on your site. Then they can print this out if they like, without compromising the security of the password. Just don’t email it.

As a final note, if the password features in your software are really difficult or impossible to change, at least have the decency to warn people in advance that you’re going to email them their password. Then they can decide if they want to use a different password or perhaps think a little bit harder about what their old one was.