Don’t blink.

Blinking is notorious as the least justifiable behavior on a web page. (But don’t blame Lou Montulli, who came up with the idea.)

It’s also British slang for annoying.

I just looked up something in the online documentation for PHP. Pages are generally clean and usable as they appear in the browser, although there are a few poor practices if you look at the underlying HTML.

However. Take a look at a typical page. Below each formal section are (often useful) comments. Try moving the focus down the page different ways—scrolling, moving the mouse, page down. One comment at a time appears in dark colors. The other comments are pale and washed out until you move the focus to them. Then, over 0.4 seconds, they become opaque and readable.

And most of the goodwill from how well thought-out the rest is is squandered.

There is no reason to make text unreadable. And less still to waste the user’s time as they’re made readable.

Since transitions are new to CSS3, my guess is that programmers were playing. As they had in 1994 with <blink>.

Playing is fine.

Then someone in the room has to say it’s great to know we can do this if we ever need it. But we don’t now. So take it out.

Talk to users

When I am talking to someone who is using software in a customer-facing context—a librarian, a pharmacist, a customer service rep, a cashier—I like to ask them about it. Are there tasks you need to do every day that are hard to do in the software, that you’ve learned a cumbersome hack around?

Every time the answer is yes. Every time.

Today it was a rep who needed to reschedule an appointment for me. She had to write down all the particulars from the existing appointment, cancel it, and then book the appointment all over.

Where a sane design recognizes that customers reschedule appointments a lot. Add a reschedule command. And support direct manipulation for the many cases when the change is simple. Show the appointment on a calendar that gives visual cues to what openings are available. Use the mouse to drag the appointment to a new date.

My library is using new software for circulation. If a book’s barcode is scanned twice, the second scan is treated by the program as a renewal of the book.

Librarians get distracted. They will forget if they’d scanned a book. A sensible engineer anticipates this and does the right thing, which is to ignore the second scan altogether. Don’t try to check it out again. Don’t report an error. Just ignore it.

I suspect that the problem is that no one thinks about what the people who use the software will actually do with it in a typical day, sits down with them and asks, or watches them doing their job.

This is not hard to do. It is not expensive or time-consuming. And it can make everyone along the way happier and more effective.