Programación visual (I): Software transparente

El otro día escribía sobre el fenómeno de "los esguinces de cerebelo" y venía a decir que hay software que es tan natural de usar, tan transparente, que cuando funciona mal o cambia su modo de funcionamiento se vuelve traslúcido, a veces incluso opaco, y empieza a ocultar la funcionalidad de la aplicación y nos confunde (y a veces nos cabrea).

Software transparente

Estamos rodeados por una legión de software transparente, que vive principalmente en nuestros móviles, pero que cada vez más aparece en la web y en los escritorios de nuestros ordenadores.

Este software transparente se encarga de realizar multitud de animaciones, de dotar a los elementos de la pantalla de nuestros móviles de inercia y velocidad, de aceleración, y de sonidos. Es un software que, a pesar de ser transparente, se puede tocar, pulsar, oír, apretar, arrastrar, aumentar y desplazar.

Cuando sacamos una foto con nuestros móviles oiremos un ruido de cámara de fotos. Si eliminamos un elemento de una lista veremos cómo "desaparece" con una animación transparente. Si arrastramos una lista hasta el final veremos cómo "rebota". Si cerramos una aplicación veremos cómo su ventana "mengua" hasta que la pantalla principal de móvil se hace visible ocupando toda la pantalla.

Este software de animaciones nos parece muy natural, y consigue unos efectos tan realistas, que nos pasa desapercibido y se convierte en un software totalmente transparente. Muchos de los efectos son una perfecta coordinación entre la vista, el dedo y el oído. Es un software que podemos tocar, ver y oír, pero que es tan natural que se hace transparente e imperceptible.

Es tan difícil de ver que incluso si mirásemos un vídeo como éste:

nos sería difícil de apreciar la multitud de "animaciones" y "efectos" que acompañan los movimientos de dedo del usuario.

Software traslúcido

Pero a veces este software transparente se hace traslúcido, y nos molesta. Por ejemplo: el teclado de los móviles (que muchas veces está hecho totalmente con software) no suele estar a la altura de las circunstancias en la mayoría de los casos.

Este software, encargado de pintar las teclas, de detectar qué tecla se ha pulsado y de imaginar palabras por nosotros, no suele funcionar del todo bien.

Tanto es así que algunos usuarios han construido sitios web específicos, como éste o este otro, divertidísimos, mostrando los escandalosos fallos del "corrector" de los móviles.

Hacer software transparente

Construir software transparente es realmente difícil, pero es muy importante, sobre todo si uno quiere venderlo: es más fácil vender software transparente que software traslúcido.

Construir software transparente requiere una serie de habilidades técnicas, y a veces incluso artísticas:

  • Hay que prestar especial atención a la integración de la vista, el oído y el tacto. El control de "gestos" del dedo del usuario (en Android o en iOS) es muy importante.
  • Hay que coordinar el tiempo y el espacio para construir animaciones realistas (con los API de Android o del iPhone).
  • Hay que seguir las guías de estilo (de Android o de iOS) para conseguir que nuestras aplicaciones sean más transparentes al usuario, consiguiendo una mejor integración con el resto de la plataforma.
  • Hay que conseguir un diseño gráfico muy cuidado si queremos que nuestra aplicación sea realmente transparente.

Todas estas habilidades técnicas (¿artísticas?) hay que dominarlas a la perfección. Son las nuevas habilidades requeridas en esta nueva "era de la programación visual", donde el software transparente es clave.

Pero lo difícil es simplificar

Pero, además de todas estas habilidades técnicas y/o artísticas, hay que pelearse un poco más y conseguir que las aplicaciones sean sencillas de usar. La simplicidad de las aplicaciones es tanto o más importante que su usabilidad .

Y la simplificación del interfaz de usuario (como todas las simplificaciones) es lo que yo personalmente considero más difícil.

Y creo que es difícil porque no hay procesos establecidos todavía. La "era de la programación visual" nos ha dejado un porrón de tecnologías nuevas, estupendas, pero no de procesos ni técnicas para la construcción de interfaces "transparentes" y "simples". Empieza a verse por la web algún intento de construir una colección de patrones de diseños visuales y de interacción de usuario (como éste de Cocoanetics, o la "interaction design pattern library", o "ui-patterns", o "4ourth.com, con<a class="enlace_tema" href="/blog/index.html#lecturas" title="Pulse aquí para ver más entradas relacionadas con 'Lecturas'"> libro y todo") pero creo que están muy verdes todavía, muchos se dedican únicamente a mostrar ejemplos gráficos de diseño, que pueden servir de inspiración, pero no presentan una técnica o procedimiento sólidos para diseñar interfaces de usuario, como los "patrones de diseño" de Gamma, Helm, Vlissides y Booch, que tanto nos han ayudado con la programación orientada a objetos. Todo llegará, supongo, y habrá que esperar para disponer de estas herramientas para la construcción de interfaces de usuario para móviles.

La técnica dominante parece ser, cómo no, la de "prueba y error": hay que construir el software y, a continuación, eliminar aquél que no sea transparente. Hay que eliminar lo superfluo, hay que simplificar y reconstruir lo hecho hasta que el software resultante sea totalmente transparente. Es una técnica bastante artesanal, que puede quizá automatizarse un poco con pruebas de usuario, por ejemplo, (para evaluar cuán transparente es el software para un usuario nuevo), pero que no deja de ser una prueba y error.

Y para muestra un botón: en la conferencia WWDC 2012 de Apple hay una presentación que me parece genial: WWDC2012/Essentials/243: "iPhoto for iOS: Progression and Animation Design" (el PDF) en la que se aprecia todo el proceso de refinamiento del interfaz de usuario de la aplicación iPhoto.

La presentación es un gran ejemplo del proceso artesanal de prueba y error que nos toca vivir, en el que se documenta cómo se transforman nueve elementos visuales (controles de brillo y contraste, etcétera) en un único control, más fácil y más "transparente" para el usuario, manejable con un único dedo. Ahí es nada.

Como decía Antoine de Saint-Exupéry: "la perfección se consigue no cuando no hay nada más que añadir, sino cuando no hay nada más que quitar".

Que disfrutéis de la presentación, y que simplifiquéis mucho.