⇥ Dashes, spaces, and incompetence
Take, if you would, a look at your credit card. Unless you come from a different planet, chances are that it, like mine, has a series of digits separated by spaces. Depending on which kind of card you’re looking at, these numbers may be grouped in different ways, but, generally speaking, this is probably a valid statement for every kind of credit card in existence.
Those spaces are there for a very specific purpose: they break the visual flow of your credit card number, providing your brain with anchors that it can use to group the digits together in a way that makes them easy to process. Although the number as a whole is no easier to remember, it’s much simpler to copy and compare something like “123 457 789″ than “123457789.”
Why, then, do so many developers still insist on asking users to enter their credit card numbers “without dashes or spaces?”
The problem here is not just one of developer laziness. Sure—in the specific example of credit card numbers, all that needs to be done at the code level can be expressed with a regular expression that borders on the stupid:
$creditCardNumber = preg_replace('/\D/', '', $originalCardNumber);
In some other cases, building good heuristics that are flexible enough while providing the proper constraints can be a little trickier, but the real issue is that so many programmers don’t even try. And that, unless you’re writing your applications in assembler, is simply incompetence.
Learned helplessness
There is a beautiful concept in cognitive psychology called learned helplessness. The basic idea behind it is that people who repeatedly fail at a task will eventually blame themselves for the failure and give up trying to do it.
This, in a nutshell, describes perfectly the way I see most non-technical folk relate to computers. They’ve just been hit so many times by software that makes no sense to them that they approach every task with fear and uncertainty—instead of making users more productive (and, therefore, happier), software makes them more depressed.
Why does this happen? Because of a million little (and big) things like the credit card snafu. Every time the user encounters a scenario in which an application creates a disconnect between reality (spaces on my credit card) and its software representation (no spaces or dashes!), the sense of helplessness increases, and productivity decreases as a result.
Let me fix this for you
The good news is, this kind of problem is due entirely to developer incompetence, which makes it easy to fix—after all, there are far fewer of us than there are users, so education should be a far simpler task.
In the specific example of credit cards, the issue is usually related to the fact that the upstream credit card provider requires that numbers be passed to them without any extraneous character, and we simply transfer that constraint up to our downstream user.
However, the constraint is not transitive: it makes sense in one direction because the provider has created an interface built for engineers, who (at least in principle) should be able to deal with the resulting requirements. Our users possess no such ability, and expect an interface built for them.
From a more general perspective, solving this kind of problem is not that difficult: you simply need to look at the constraints you create from the user’s point of view. Credit cards numbers have spaces in them in real life, and that’s how users will want to input them. There. Simple as pie.
This doesn’t mean, however. that you need to take this too far in the other direction and create skeuomorphs that attempt to reproduce reality too closely. For example, making your credit card input form look like a credit card is dangerous because the various types of credit cards are different enough that it could create confusion instead of dispelling it. Besides, the user is probably capable of abstracting the underlying data model enough that such a skeuomorph would feel patronizing.
And, please, do not think that this is something that only designers should worry about. Developers are meant to solve problems, not churn out bytes. If you don’t want to be treated like a code monkey, stop acting like one.
Comments
One of my personal pet-peeves well explained. Besides the credit card number I also get “upset” by “your phone number can not have +44 but you need 0044 instead” or “You can’t have a space in your postcode”.
I ran into an article from the W3C on the name field dealing with some of this too: http://www.w3.org/International/questions/qa-personal-names
Related: http://yousuckatui.tumblr.com/post/598444977/videotron-autotab
S
Nowhere near as bad as some sites I’ve seen where they have these restraints but don’t tell you until after you submit. Postal codes are the worst for this, likely in part because software is written for the US market where they don’t have to account for this (ZIP codes are generally five digits, no spaces).
Or it is management incompetence, cause it is not a developers duty to ensure usability. Every piece of code needs a test to write and affords time and therefore money you have to justify. Your point is valid though of course and there is a flaw in the dev process somewhere if the usability is tied to such narrow patterns.
And there was another one this morning. KLM’s “send boarding pass to mobile phone” form doesn’t allow one-character user parts in an e-mail address like “m@” …
You mention that the spaces are there to make comparisons easier for humans. What if the company that asks you for the spaces has clerks that verify the transactions? Having the spaces makes their lives easier. Accepting credit card numbers without the spaces, while easy for the programmers, adds a layer of complexity to the manual part of the process; which is typically already the most expensive part anyway.
That last comment contained ‘devils advovate’ html tags but those were stripped. (strip vs escape, another one of those annoyances)
I complete agree with your premise, but not your example. It’s always been much easier for me to enter a credit card number sans-spaces.
I can do it from memory now. Why move my hand from the number pad all the way over to the space bar?
Now, phone number forms that require you to have dashes in them, blech.