Home > User Experience > Principios de diseño para crear una experiencia de usuario resiliente en aplicaciones móviles | by Rafa de la Torre | Sep, 2020

Principios de diseño para crear una experiencia de usuario resiliente en aplicaciones móviles | by Rafa de la Torre | Sep, 2020

Principios de diseño para crear una experiencia de usuario resiliente en aplicaciones móviles | by Rafa de la Torre | Sep, 2020


Cuando se diseñan productos o servicios digitales para dispositivos móviles, hay algo que se asume como verdadero desde el inicio y puede que no siempre sea así. De hecho, es bastante probable que no se cumpla en un buen número de ocasiones. Me estoy refiriendo a disponer en todo momento de una conexión a Internet fiable.

Es cierto que las redes móviles son cada vez más robustas, tienen mayor alcance y ofrecen velocidades mas altas pero, de igual modo, la conectividad al 100% no está siempre garantizada. Existe, por tanto, un buen número de escenarios donde la experiencia de uso de la mayoría de productos digitales se reduce a un mensaje de error por falta de conectividad y, en el mejor de los casos, una invitación a volver más tarde.

En países con economías emergentes o, como las grandes tecnológicas los llaman, NBU (Next Billion Users), la falta de conectividad o la recepción intermitente son escenarios habituales. Además de utilizar redes móviles poco fiables, los usuarios en estos países son muy conscientes sobre el coste de los datos recibidos en sus smartphones, y es práctica habitual activar y desactivar los datos móviles para controlar el gasto y optimizar el consumo de batería.

En países con redes móviles más robustas también hay momentos en los que la falta de una conexión estable está presente, dificultando la realización de nuestras tareas.

Daniel Torres-Burriel es un consultor tecnológico que en esta ocasión se enfrentaba a la frustración de depender de una conexión intermitente durante un desplazamiento.

Pero esto no es algo exclusivo de áreas rurales. En entornos urbanos, hay muchos momentos en los que la conexión puede ser débil, inexistente o donde los usuarios deciden desactivar manualmente la recepción de datos.

Si a esto le sumamos la reciente situación de confinamiento y teletrabajo forzado a causa del Covid-19, el incremento de uso de estas redes ha dado lugar a estados de saturación o caídas continuadas del servicio, provocando que muchas personas tuvieran dificultades con el acceso a Internet cuando más lo necesitaban.

Una vez que las experiencias digitales han conquistado con éxito la accesibilidad desde cualquier dispositivo con directrices como mobile-first o responsive design, el reto se centra ahora en incrementar esta accesibilidad abriéndose a la mayoría de usuarios independientemente del tipo de terminal o conexión disponible.

La experiencia de usuario resiliente de una aplicación móvil es la capacidad de dicha aplicación para adaptar su funcionalidad a cualquier estado de conectividad, incluida la ausencia de ésta.

Dicha capacidad comparte la misma base que la metodología graceful degradation, que consiste en evitar el fallo total de un sistema mediante la reducción gradual de su funcionalidad, dependiendo de las restricciones a las que se ve sometido.

Una metáfora que se suele usar para exponer este concepto es el de una escalera mecánica: en el caso de que deje de funcionar, sigue siendo una escalera. Foto: Maria Teneva en Unsplash

Una parte muy importante en una app con capacidad de resiliencia es la experiencia offline, la cual está convirtiéndose, poco a poco, en una parte fundamental dentro de las características de los productos digitales. La experiencia offline de un aplicación móvil está formada por el conjunto de funcionalidades disponibles durante la ausencia de Internet.

En la actualidad, la mayoría de equipos de producción asumen que una conectividad estable es el estado por defecto, y la falta de ésta es considerada como un problema externo sobre el que no se tiene ningún control, lo que se acaba comunicando a los usuarios como un error.

La app de banca de BBVA, al igual que muchas otras, deja de tener utilidad si no hay conexión disponible y además, insta al usuario a revertir la situación.

La experiencia offline es, sin duda, el área menos explorada y más descuidada cuando se diseñan productos o servicios digitales para dispositivos móviles. Si en algún momento es siquiera considerada, rara vez es una prioridad. Algo, por otro lado, entendible porque la obligación de los responsables es centrar los esfuerzos y los recursos disponibles en hacer que la aplicación funcione bajo un estado de conexión satisfactoria. Pero esta mentalidad debe cambiar y empezar a considerarse la experiencia offline como un estado más de nuestra aplicación, la cual debería ofrecer un nivel aceptable de funcionalidad, en lugar de reducirla a errores, espacios vacíos o inutilidad.

Si el estado offline de nuestro producto es importante, lo es aún más el comportamiento del mismo bajo condiciones de una conectividad pobre e intermitente. Desde el punto de vista del usuario que intenta completar una tarea, este escenario es mucho mas frustrante que la ausencia total de conectividad. Por ello, se hace imprescindible comunicar correctamente el estado actual de la conexión cuando, por ejemplo, se detecta una excesiva latencia en las peticiones.

En Google Go, aplicación para la que diseñé la experiencia resiliente, trabajé en una versión modificada de la snackbar de Material Design para mostrar de forma animada los diferentes estados cuando se intenta resolver una petición en un escenario de conexión pobre y/o intermitente. De esta manera, el usuario tiene visibilidad en todo momento de dónde se encuentra y cómo la aplicación está trabajando para completar la tarea.

Google Go es una aplicación de búsqueda para nuevos usuarios. Diseñada inicialmente para países NBU, está accesible en la actualidad para cualquier usuario de Android.

Hay ocasiones en las que la ausencia de conexión puede ser una elección del propio usuario (desactivar datos móviles para controlar el consumo) o requerida por una tercera parte (activar modo avión a petición del auxiliar de vuelo). En estos casos, lo ideal es recordar a dicho usuario la auto restricción impuesta en la recepción de datos.

Proporcionando este tipo de información se ayuda a los usuarios a establecer las expectativas y entender que se dispone de una funcionalidad limitada, lo que contribuye a reducir la frustración y la tasa de abandono, sobre todo en occidente, donde el nivel de tolerancia a los tiempos de espera de la red es muy bajo.

La memoria caché es la mejor aliada para crear una experiencia resiliente durante una conexión inestable.

Haciendo uso de este tipo de memoria, podemos almacenar datos de manera local cuando existe una conexión estable, y mostrar esta información en casos de pobre o nula conectividad. De esta manera, se puede continuar ofreciendo una experiencia muy similar a la original, sobre todo en casos donde la información que se muestra no es muy sensible al tiempo.

Un ejemplo de app que hace uso de este principio y pone a disposición del usuario el contenido almacenado cuando no hay conexión es Pocket, un servicio para guardar artículos de Internet y leerlos posteriormente. La aplicación almacena una versión simplificada del artículo o página web seleccionada, la cual está siempre disponible, independientemente de la conexión.

En el caso de que el contenido almacenado localmente sea sensible al tiempo como, por ejemplo, noticias o resultados de búsquedas, es fundamental informar a los usuarios sobre la frescura de la información mostrando, por ejemplo, la fecha y hora de la última actualización.

La memoria caché también nos va a permitir recolectar y guardar datos durante la ausencia de conexión que más tarde podrán ser enviados al servidor y procesados. De esta manera se puede seguir ofreciendo funcionalidades a los usuarios como rellenar un formulario.

Éstas no son solamente funcionalidades que se puedan implementar en app nativas, con el lanzamiento de Service Worker, un script que se ejecuta en segundo plano, es posible implementar funcionalidades offline para web apps como background sync o push notifications. Uno de sus objetivos es, de hecho, animar a desarrolladores a crear aplicaciones offline-first que funcionen en cualquier escenario de conectividad.

En ningún caso se debería permitir al usuario iniciar en una tarea que no se pueda completar debido a la ausencia de conexión. Evidentemente, cuando no hay servicio de red disponible, una app no puede comunicarse con el servidor y, por lo tanto, no es posible realizar un intercambio de datos, pero esto no debe traducirse en un error o falta de funcionalidad.

Una alternativa, siempre que la naturaleza del servicio ofrecido lo permita, es retrasar la resolución de la tarea. O sea, capturar la intención del usuario hasta donde sea posible, almacenar dicha petición localmente y resolverla en segundo plano en cuanto la conexión se haya restablecido. Una vez hecho esto, informar al usuario de que su petición ha sido completada y el resultado está disponible. De esta manera, nuestra app sigue aportando valor a los usuarios incluso estando desconectados, y éstos pueden continuar con su vida sin tener que estar pendientes del estado de la red.

La aplicación Shazam, por ejemplo, hace uso de este principio y permite a los usuarios tener acceso a parte de la funcionalidad principal de la app (identificar una canción), aún estando sin conexión.

Shazam informa desde el inicio que se encuentra en modo offline, lo que ayuda a establecer las expectativas.

Un caso en el otro extremo podría ser la app del portal inmobiliario Idealista. Al abrir la app se muestran las acciones principales (búsqueda y publicar anuncio) sin ninguna indicación sobre la falta de conectividad y cuando se realiza una búsqueda, se presenta la incapacidad para resolver la petición como un error general. Aunque la búsqueda no se almacena automáticamente, resulta gratificante ver que ofrece la oportunidad de hacerlo manualmente con un llamativo CTA pero, al pulsarlo, se vuelve a comunicar la imposibilidad de llevar a cabo dicha acción.

Otro indicativo de una pobre experiencia offline es la ambigüedad en los mensajes, que no hacen referencia en ningún momento a la falta de conectividad como causante de la ausencia de funcionalidad.

Un aspecto importante a tener en cuenta cuando se permite a los usuarios interactuar con la app en modo offline, es la necesidad de ofrecer feedback constante sobre las acciones que se van tomando. De esta manera, se establecen las expectativas sobre si se está recogiendo correctamente el trabajo llevado a cabo por los usuarios o, por el contrario, se perderá una vez que abandonemos la aplicación. Es mucho mejor comunicar directamente qué ocurre y por qué, que presentar mensajes ambiguos que dejen al usuario intentando adivinar cuál debe ser el siguiente paso.

Cuando un usuario está sin conexión o no es culpa suya, o tiene un motivo para estarlo, por lo que no se le debería responsabilizar de la situación y, mucho menos, instarle a que la resuelva.

Para crear experiencias resilientes satisfactorias, es necesario entender que la falta de conectividad no es un error ni un fallo del sistema, sino un estado más de nuestra aplicación y debe ser tratado como tal. Es importante que los equipos de producción asuman la responsabilidad de definir cómo dicha app debe comportarse en estos escenarios.

Con la reducción de funcionalidad es muy probable que aumenten los espacios vacíos en el UI de nuestra app. Ni que decir tiene que aterrizar a los usuarios en pantallas en blanco es sinónimo de una pobre experiencia pero, de otro modo, estos espacios se pueden utilizar para sorprender y presentar momentos agradables en su lugar.

Las recompensas inesperadas son las más satisfactorias, por lo que estos casos en los que parece que se ha llegado a un callejón sin salida, pueden convertirse en una oportunidad para experimentar, innovar y ganarse la confianza de los usuarios. Instrucciones sobre cómo proceder, videos, animaciones, juegos, etc. pueden servir para distraer y entretener en estos momentos donde la frustración por la imposibilidad de completar una tarea puede estar presente. Si todo esto se presenta de un modo visual que pueda deleitar al usuario, mucho mejor.

Para Google Go, se creó un personaje que suele aparecer en los momentos en los que parece haberse alcanzado un dead end, no sólo por problemas de conectividad, sino de forma general.

Izquierda: animación que aparece al hacer una búsqueda específica sin conexión disponible. Derecha: cuando se alcanza el extremo final de la navegación espacial, el mismo personaje aparece realizando una actividad de forma simpática.

La conectividad plena en cualquier zona geográfica no está garantizada ni lo estará en muchos años. Además existen muchos otros escenarios donde la falta de conexión puede ser el escenario por defecto, por lo que es necesario entender que éste es un estado más de nuestras aplicaciones, y no un error o fallo del sistema, y tratarlo en consecuencia.

La rapidez para adaptarse al cambio, la capacidad de resiliencia y garantizar la accesibilidad son tres de los pilares sobre los cuales se están centrando muchos esfuerzos en estos momentos de incertidumbre social y económica a causa de la pandemia. A priori puede no resultar fácil encontrar la motivación o el apoyo necesario dentro de un equipo de desarrollo para trabajar en el comportamiento de nuestro producto cuando hay problemas con la conexión, pero asegurarse de que dicho producto o servicio sigue teniendo utilidad y aportando valor en cualquier escenario de conectividad, sin duda incrementa la confianza de los usuarios, supone un factor diferenciador respecto a los competidores y abre paso a nuevas oportunidades para innovar.



Source link