Your system cannot be perfect

I visited my town hall this week to renew my annual street parking permit and, since all permits expire at end of the year, naturally there was a line. Amid the usual banter while my paperwork was processed, the woman behind the counter commented that everyone always waits until after the first of the year, despite permit renewals being available in October. “No matter what we do, it just doesn’t seem to work.” I was instantly transported back to my early days as an in-house web developer, when I felt like putting my head through a wall every time a customer screwed something up that was laid out in plain English on the page. “I never got the email.”

“Did you check your spam filters, as stated on the screen in large, red text?” “I reset my password and the new one didn’t work.”

“You requested a new password 15 times. In 2 minutes. There’s a big warning about this in large, red text. Just make sure you use the one in the 15th email message.”

“I never got the email…”

/wrists No matter what the activity, people will naturally only commit the minimum level of attention and brain power necessary to completing it. That’s why we never read the manual, the Post Office is open till midnight on April 15, and the permit lady will always have a rush after January 1. Some industries embrace this reality with overwhelming success. Fast food is a great example. Don’t think, just pick something that looks good on the menu, or say a number. The installation services at Home Depot and Lowe’s leverage your inertia against home projects — “Ugh, I don’t wanna rip up the carpet…” — to sell you something that costs them practically nothing (they outsource the work to local contractors). Even my own Fwd:Vault project works this way, acknowledging that most people don’t want to deal with software and hardware to backup their files. The technology sector in particular seems to struggle mightily against this issue when it comes to user interaction. The dialogs quoted earlier summarize actual conversations I’ve had with customers. In our defense, we have a pretty lofty objective: make literal, purely logical systems act in accordance with unpredictable, emotionally driven, abstract human beings. Burgers and flooring don’t have that problem. We are getting better, as evidenced by modern web page layout norms and physical products like the iPhone and Flip Video. Yet still I’ve seen devs get visibly pissed off when a user breaks their system. There’s simply no need for this stress, and is in fact very counter-productive. If you’re the type of geek who gets mad when someone breaks what you built, remember that the system failed, not you personally, and that development is very much a trial-and-error effort. At the same time, we all must remember that no system — website, handheld device, anything with a user interface — will be used perfectly all the time. But every system can handle mistakes in a perfect fashion. Acknowledge that some measure of your user base will definitely use a safety net, and make putting them in place part of your regular routine. You’ll be less stressed, and your system will really shine.