Old Tin Roof

A little bit of me, and everything else

User experience or computer experience?

This note was sparked by a con­ver­sa­tion I had ear­lier this month regard­ing entry of dates in forms, and by John Gruber’s recent link to a wall of shame that shows which online stores that require a spe­cific form of entry for credit card num­bers in web forms.

It took 5 times?

A few years ago, I was for­tu­nate to see a usabil­ity lab that was try­ing to deter­mine drop out rates on a group of spe­cific e-commerce forms.  The biggest rev­e­la­tion I had at the time was pro­vided by watch­ing a gen­tle­man cus­tomer try 5 times (unsuc­cess­fully) to enter his date of birth into a form, in the way that the form required.

The form had a small amount of help text show­ing that he should enter it as dd/mm/yyyy, but the error mes­sage just asked for a ‘valid date’.  The gen­tle­man pro­fessed to not be very com­puter savvy, but it really high­lighted to me how we often force users to fit in with our model of how a form should behave.

Show­ing our cleverness

For a while I accepted that we needed to val­i­date the date so that it could be stored in a data­base, or manip­u­lated by some piece of code.  More recently I’ve seen a cou­ple of imple­men­ta­tions of on-the-fly date for­mat­ting (in JS) that take the entered date, in what ever for­mat, and rewrite it in the for­mat we want.  So a date entered as ‘23rd March 1997′ would get changed to ’23/03/1997′ (in UK date format).

Although I can under­stand that we’d need to do this at some point to make it easy to store, do we really need to do it in front of the user?  Is it not a bit like say­ing ‘OK thanks for enter­ing a valid date but we wanted you to type it like this, so we’re just going to change it for you and show you even if it makes you think you got it wrong’?

Surely with improve­ments in mod­ern devel­op­ment prac­tices we should be val­i­dat­ing against valid dates client side (using per­haps your favourite JS library of choice), then per­form­ing the con­ver­sion on the server side, before stor­ing it or using it as we wish?

I think I need to inves­ti­gate this a bit further…