jueves, 10 de mayo de 2012

Usuarios felices, decálogo de la usabilidad


Existe una infinidad de información teórica sobre las características que debe tener una interfaz de usuario. Pero después de haber leído mucho llegué a la conclusión que en su gran parte es CHAMUYO! Ojo, que no se mal entienda, es un chamuyo sutil, verdadero. Porque la teoría es correcta... pero es teoría! Y para desarrollar es necesario ir a lo concreto... a los bifes. Por que las vueltas de la teoría son muy decorosas pero poco pragmáticas.
Es por eso que me decidí a hacer una especie de decálogo de las interfaces. Un resumen cortito y al pié sobre los ítems mas importantes que se deben tener en cuenta al diseñar una interfaz amigable.
Tal vez al leerlo no encuentren nada novedoso, pero lo cierto es que estas obviedades a veces no son tales a los ojos de quien se encuentra diseñando, precedido de infinidad de conocimientos que instintivamente da por naturales, pero que son completamente ajenos al usuario.
Algún día escribiré acerca de las personalidades de los usuarios y cómo hacer interfaces que satisfagan cada una de ellas.... pero eso va a ser algún día.
Ahora si, sin mas preámbulos:

1- Si no se debe, no se puede
Es el primer y mas importante punto a tener en cuenta. Todas aquellas operaciones que el usuario no deba hacer, el sistema debe garantizar que no se pueda hacer. Es normal que se piense cosas como "el usuario nunca va a realizar esa secuencia de clicks" o "si esta realizando esta operación, nunca va a ocurrir que desee hacer esta otra"... FALSO! siempre sucede. Por eso es muy importante que el sistema sólo deje disponibles aquellas operaciones que puedan ser realizadas, eliminando de la interfaz todas aquellas operaciones que de ser ejecutadas generen inconsistencias, errores de ejecución, errores de lógica o no permitan al usuario finalizar con la operación que había comenzado.

2- Consistencia de la iconografía
El usuario tiene una tendencia a leer muy rápidamente la pantalla, casi ignorando los textos descriptivos o de guía. Esta tendencia se acentúa en la medida que el usuario se hace mas experimentado en el uso del sistema y obtiene mas confianza. En este sentido la iconografía juega un papel primordial dado que permite comprender los mensajes, opciones disponibles y estados del sistema simplemente haciendo la vista gorda.... pero... si la iconografía no es consistente hace al sistema muy confuso. Si! por mas que sea una interfaz simple y la persona que la use tenga un IQ de 160, si hay iconos estos llaman a no observar mucho y se hace un arma de doble filo. Si no se mantiene una coherencia en la iconografía el sistema se vuelve confuso. Por eso, si al lado de un cuadro de busqueda pusimos una lupa azul con fondo verde, SIEMPRE que haya un cuadro de búsqueda ponemos la misma lupa azul con el mismo fondo verde.

3- Cada componente con su correspondiente función
Existen infinidad de componentes para la interacción hombre-sistema, entre los mas básicos:

  • Input
  • Checkbox
  • Radiobutton
  • Texto
El usuario estándar (aquel que usa activamente internet y interactúa con cierta frecuencia con diferentes softwares) se encuentra familiarizado con los componentes y sus funciones, aunque a veces no sea consciente de ello. Por eso hay que usar cada cosa para lo que corresponda... por ejemplo:

Componente BIENMAL
InputCarga o edición de datos Mostrar información 
CheckboxMúltiple selección o dato booleano Selección excluyente con validación 
RadiobuttonSelección excluyente por 3 o mas valores Datos booleanos (ej. Si-No)
TextoPresentar informaciónSelección de ítems

Y sin peros!

4- Sólo alertar para tomar decisiones
Simple.. si se presenta una pantalla de alerta que sea siempre para que el usuario tome una decisión. No tiene ningún sentido poner un mensaje que diga "Usted está a punto de hacer algo peligroso" y poner sólo un botón Aceptar. Por lo tanto: No importa cuan importante sea lo que queríamos informar, si no es para que se tome una decisión ni lo mostramos. Al fin de cuentas nadie lee los alert, le dan aceptar sin mirar o entran en pánico y llaman al informático mas cercano.

5- Una operación, una interfaz
Una operación dada debería poder completarse en una sola interfaz. Con esto quiero decir que, por ejemplo, no debería hacer falta cargar cosas previas para llenar un formulario. La interfaz tiene que brindar la solución de carga completa. Esto muchas veces parece tedioso y/o lleva a interfaces kilométricas... pero es mejor que empezar a cargar y en el medio darse cuenta que faltan datos en otro módulo del sistema. Además evita muchos errores de carga y confusiones del usuario que se pueden traducir en un requerimiento posterior.
Por otro lado, dentro de lo posible, el usuario nunca debería abandonar la interfaz actual para una misma operación. Con esto se evita que el usuario se pierda u olvide por qué etapa o estado estaba su operación, además de agilizar la carga. Popups o cuadros emergentes que permitan continuar viendo de fondo lo que estábamos haciendo son soluciones muy amigables.... bueno.. tal vez los popups no.

6- Interfaz de detalle para todas las entidades importantes
Siempre que exista una entidad (u objeto de negocio) con importancia, debe haber una interfaz que presente el detalle de sus datos y brinde la posibilidad de realizar las operaciones asociadas. Por que?

  • Para que el sistema no se convierta en un cementerio de datos. Toda la info que esté en la base de datos debe ser mostrada en algún lugar.
  • Por que si el usuario quiere "Ver detalle del producto" no debería tener que entrar por "Modificar producto".

7- Interfaz inicial operativa
La primer interfaz luego de la identificación del usuario debe ser completamente operativa. Nada de pantallas vacías o botones con acceso a las diferentes operaciones. La primer interfaz debe permitir al usuario realizar aquella operación que sea mas común dado su rol.

8- Referencias navegables
Dentro de lo posible (dado que, por ejemplo, en dispositivos móviles podría llegar a ser contraproducente) toda referencia a una entidad del sistema debería ser navegable. O sea que si estoy viendo los datos de un contacto y entre sus datos está la empresa en la que trabaja, debería poder hacer clic en el nombre de la empresa para poder ver todos los empleados de la misma. A no tener pereza, el costo de poner esos links es mínimo y da al usuario la posibilidad de tener mas alternativas para llegar a la misma información. De este modo, además de dejarlo mas satisfecho, nos ahorramos recibir futuras llamadas donde nos dicen que necesitan cambios porque no pueden llegar a la información o porque "no se entiende cómo veo ese dato".

9- Cada cosa en su lugar
Es muy importante establecer áreas de la interfaz donde se van a ver tal o cual tipo de cosas.... y mantenerlas a lo largo de todo el sistema! Debería existir un area donde se presentan las operaciones que se pueden realizar, un area operativa y/o informativa, un area con datos de detalle... en fin... interfaces ordenadas y con el mismo orden en todo el sistema.

10- Información APB
No importa el conocimiento del usuario, siempre es mas amigable que la interfaz te trate como un nene a que te ponga a prueba tus conocimientos informáticos y/o técnicos. Nadie se queja de la simpleza de la interfaz de google y es lógico, tiene un cuadro de texto y un botón... podría tener un directorio, opciones de búsqueda, configuración de los resultados... pero no! Sólo un cuadro de texto y un boton. El resto de las opciones están, pero hay que salir a buscarlas.
Por otro lado, podemos incluir en este ítem que es una locura (o un desproósito) decirle a un nene cosas como "Error 24", "Se detectó un CRC incorrecto", "MySQL error: invalid sintax", "La memoria no se puede read". Entonces vamos a ahorrarnos mensajes que lo único que hacen es paranoiquear al usuario.

miércoles, 2 de mayo de 2012

Pequeñas grandes decisiones

Es difícil determinar el impacto de las decisiones que uno toma día a día. Hay ocasiones en que sabemos que cierta decisión puede marcar dramáticamente nuestros destinos, pero lo cierto es que el verdadero impacto que éstas ejercen es inestimable a priori...
Vamos con un ejemplo: Tomando un caso típico de una decisión que genera muchas emociones y nerviosismo... dar el SI en el altar. A pesar de su aparente relevancia, podemos restarle importancia (por lo menos desde el punto de vista de cómo afecta eso en nuestras vidas) porque si nos encontramos frente al altar no hay muchas decisiones que tomar... todas las importantes fueron tomadas con antelación y una tras otra nos llevaron a la situación ejemplificada.
En contraposición, pequeñas cosas pueden hacer de bisagra en nuestros destinos. Cosas tan insignificantes que no tenemos forma de estimar cómo seremos influenciados por ellas.

Este pensamiento me nace por haberme dado cuenta, después de 17 años, que una decisión mínima, la cual tenía prácticamente olvidada, fue determinante en mi futuro profesional.
Lo que podía parecer una grande decisión, como la elección de la carrera a seguir, no lo fue tanto dado que desde muy chico mi gusto por las computadoras era evidente. Tanto así que comencé a estudiar Logo (el de la tortuguita) y luego Basic a los 12 años.
Pero a los 13 fue la pequeña gran decisión:
Habiendo aprendido suficiente de Basic, mi profesora (que ahora es cantante y conductora de TV) me deriva a un muchacho, creo que Calculista Científico, el cual me enseñaría a programar en C.
En la primer clase (particular), entro a su departamento y no me sorprendo al ver bibliotecas llenas de disquetes de 5" 1/4, ya que era lo que mejor armonizaba con su aspecto prolijo pero carente de intención de atracción al sexo opuesto... no voy a detallar al profesor, pero cabe la aclaración de un peinado engominado y anteojos de graduación exagerada.
Y es ahí que luego de presentarse y dar la correspondiente charla introductoria, me explica que vamos a hacer un programa y que iría explicándome sobre la marcha. Hecha esta aclaración hace la pregunta clave:

¿Preferís programar un virus o un juego? ....

Fijate que pregunta!!! Virus o juego!! Yo tenía 13 años, todavía estaba con toda la timidez de estar frente a un chabón que ni conocía y el tipo me hace esa pregunta. ¿Podía yo saber cómo iba a afectarme? Naaaa, imposible.
No recuerdo si fui firme o si dudé... pero la respuesta fue "UN JUEGO"!
Durante todo el proyecto analizamos sobre cómo se podía hacer mas jugable, mas visual, mas intuitivo para manejar... en fin... usabilidad a fondo. En lo técnico aprendí cosas como laburar con gráficos a bajo nivel y generar frecuencias para mandarlas al speaker de la PC y así hacer los sonidos del juego.
En fin... 17 años después sigo sin saber cómo programar un virus y mi perfil tiene una clara tendencia hacia lo interactivo, visual, usable, etc. Lejos de gustarme encontrar soluciones a algoritmos complejos, tirar comandos en una consola o querer vulnerar la seguridad de algún servidor.

Lo cierto es que, mas allá de este ejemplo particular, estas decisiones están sucediendo constantemente de manera casi imperceptible... Leo o no leo este post? Voy ahora o espero un rato para ir al baño?.... Por esto es que es necesario tener bien en claro cómo somos y qué queremos, tener una buena visión sobre nosotros mismos en el futuro, de manera tal de tomar siempre aquellas decisiones que, correctas o no, nos encaminen hacia nuestro destino y armen nuestro camino según nuestra personalidad.

Sé muy bien que este post carece de interés para la gran mayoría de los lectores, pero fue un pensamiento simple que cayó en mi cabeza y me encontré en la necesidad de compartirlo.
Está abierto el libro de criticas.
Salute!