El trabajo de un programador es programar computadoras, no gente. 
A las computadores les gusta ser programadas; nacieron para eso. A la gente, no tanto.

Si desde el software impartimos instrucciones u órdenes directas a los usuarios (ej. “Ingrese número de tarjeta sin espacios”), entonces estamos tratando de programar gente, lo cual no suele terminar bien.

ndos-ccrane

Cuando esto pasa, lo conveniente es volver al trabajo de programar computadoras, con el objetivo de que se adapten a la gente.

Por ejemplo, usando una expresión regular para que sólo se tomen los caracteres numéricos.  En pseudocódigo: find( /[^\d]/ ).replace("") . Esa instrucción para la computadora requiere de menos caracteres que la instrucción para el usuario, no falla nunca, y hace que todo el mundo quede contento.

Todo resulta mucho mejor si aplicamos las herramientas que dominamos, a los dominios a los que corresponden.

Santiago Bustelo, septiembre 2016
 

Formulario de ejemplo capturado por el consultor de software Steve Friedl en su “No dashes or spaces hall of shame“.