There’s a long-standing tendency for software to enforce completeness and consistency in stored data. It has never truly been necessary in the real world and it has become something of a monster with the rise of the internet as websites seem to be constantly outdoing each other to collect every conceivable piece of information about anything of interest (usually, but not always, their users) and make every item “required”, refusing to accept any data until all data is provided.
This is the wrong approach. As application designers and developers, we should be minimizing the effort we require from our users, not adding to it.
I recently encountered a blog post on Rethinking the Comment Form which, among other things, suggested that there’s no reason for a blog comment form to require - or even request, really - an email address unless the user requests to be notified of additional comments. This is a step in the right direction and provides my first principle for minimizing requirements:
If you will never use the information, don’t request it.
In most cases, that can be expanded slightly to “if you will never use the information for the user’s benefit“. If your only use for the information is to sell it to spammers or “marketing partners”, that doesn’t count.
The second principle expands slightly on the first:
If you won’t use the information immediately, don’t require it.
The first was pretty conventional, at least if you’re not talking to marketers. The second is a bit bigger of a step. It means that, if you’re not going to be sending someone postal mail today, then it’s perfectly OK for them to enter an address with no ZIP code. Or a phone number with no area code.
Yes, yes, I know… “What about data integrity?!?”
Which is a good question. What about data integrity? If you’re not going to use the information yet, then why does it matter? Sure, you definitely do need to get that ZIP code before sending them a letter, but, until you have a letter to send? So what if you don’t have it?
This then leads to:
Even if you do need the information, accept its omission.
Let the user leave it blank. Really. You can remind them each time they log in about important information that needs to be completed, but there is no excuse for refusing to let users enter partial information now and then come back and finish it up later.
The only potential exceptions are a username and either a password or an email address (so you can send them a password). This is sufficient to allow them to return and provide whatever other information may be needed at a later time.
Of course, if you use the email address as their username, then that leaves exactly one piece of required information. You can’t get much more minimal than that.
Do you have any other suggestions for good ways to minimize the load on your users of providing information?