Un sitio demasiado personal

Estás dentro de la biografía o alguna anotación del blog. Tómate la libertad de revisar todo el sitio.

¿Quieres leer más anotaciones? Visita el área de archivos

» L'podcast

Diseño Web Resiliente: ¿Por qué tu sitio no está listo para el futuro (y por qué eso es bueno)?

Escrito

Es tu web ¿a prueba de balas o de risas? Un manual de supervivencia para el diseñador escéptico.

A ver, seamos honestos. Los diseñadores y desarrolladores web vivimos en un estado de negación perpetua. Nos pasamos la vida persiguiendo el siguiente framework de JavaScript, el bundle más pequeño y la animación más sexy, convencidos de que estamos construyendo el futuro. Y luego, un día, te das cuenta de que esa obra maestra de la ingeniería, esa que funciona perfecto en tu Mac Pro con la última versión de Chrome, se convierte en un chiste en el celular de tu tía con datos limitados. ¿No te ha pasado? A mí sí. Varias veces. Y siempre termino pensando en Jeremy Keith y su concepto de Diseño Web Resiliente, que es básicamente un manual para aceptar nuestra miserable realidad.

La paradoja del diseñador: del control a la aceptación.

Keith nos dice que la web es un “hot mess”. Una cosa caótica e impredecible donde los diseñadores, con su manía de control, intentamos meter orden. Queremos que el usuario vea exactamente lo que nosotros vemos, que todo se cargue en 2 segundos, que la animación de la bolita rebotando no falle. Y mientras más nos esforzamos en eso, más frágiles hacemos nuestros sitios. Es como construir un castillo de naipes en medio de un huracán y pretender que es un búnker.

La clave está en entender que la web no es iOS. No es un jardín amurallado donde todas las flores son de tu agrado. Es un bosque, un desierto, un pantano… Es un lugar donde lo único seguro es que algo va a salir mal. Entonces, la idea no es ser a “prueba de futuro” (¡qué inocencia!), sino ser “amigable con el futuro”. Es un cambio de chip que suena a filosofía zen y a una terapia de aceptación para los geeks.

La gran farsa del código “perfecto”

Hay otra idea de Keith que me resuena: las ideas son más resilientes que el código. Vaya bofetada de humildad. Nos pasamos la vida escribiendo líneas y líneas de código que en unos años serán tan obsoletas como un Nokia 3310. Pero los principios, las ideas de diseño, esas perduran.

Piensa en los monjes que iluminaron el Libro de Kells hace más de 1,200 años. Usaron lo que tenían: cuatro tintas, vellum y paciencia infinita. Después llegó Gutenberg con su imprenta y revolucionó la producción, pero ¿qué crees? El uso de columnas y las letras capitales sobrevivieron. ¿Por qué? Porque funcionaban. Eran buenas ideas.

En la web, esto se traduce en la fragilidad de los lenguajes. El HTML y el CSS (lenguajes declarativos) son como el vellum y las tintas de los monjes; son perdonadores, tolerantes al error. Si pones una etiqueta mal, el navegador no se colapsa en un mar de lágrimas. Se hace el disimulado y sigue adelante. Pero el JavaScript… ¡ay, el JavaScript! Una coma mal puesta y el sitio se convierte en un páramo desolado. Es la fragilidad personificada.

Esta diferencia en la tolerancia al error es crítica y se puede resumir de manera gráfica:

Tolerancia al error (HTML | CSS | JS )
Lenguaje Naturaleza Función Principal Tolerancia a Errores (Resiliencia) Riesgo de Fallo Total (Single Point of Failure)
HTML Declarativo Estructura y Significado (Contenido) Alta (Ignora etiquetas desconocidas) Muy Bajo
CSS Declarativo Presentación y Estilo Alta (Ignora reglas no reconocidas) Bajo
JavaScript Imperativo Comportamiento, Interacción Avanzada Baja (Errores de sintaxis o entorno críticos) Alto

Si la funcionalidad central de un sitio depende totalmente de JavaScript (el lenguaje más frágil y más susceptible a fallos debido a errores de red, bloqueos o entornos desconocidos), se introduce un punto único de fallo. La robustez solo se mantiene si se construye una base sólida de buen HTML con enlaces y formularios funcionales, de modo que si JavaScript falla, el sistema simplemente retrocede a esa base funcional.

Un plan de tres pasos para que tu web no muera en el intento

Aquí es donde entra el concepto de la Mejora Progresiva (Progressive Enhancement), que es como un seguro de vida para tu web. La metodología es simple, y a la vez, radical:

  1. Define el “Verbo”: Olvídate de los botones y los widgets. Piensa en lo que el usuario realmente quiere hacer: leer, comprar, enviar un mensaje. ¿Cuál es la función esencial?
  2. Construye el cimiento universal: Haz que esa función esencial sea accesible para todos, usando la tecnología más simple y robusta posible: HTML semántico y renderizado desde el servidor. Es el esqueleto que va a funcionar en cualquier lado.
  3. Mejora, no reescribas: Ahora sí, encima de ese esqueleto, agrega todas las capas de fantasía que quieras: el CSS para que se vea bonito y el JavaScript para las interacciones complejas. Pero si estas capas fallan, ¡no pasa nada! El usuario sigue pudiendo "leer" o "comprar".

El éxito de una web resiliente, como la calidad de un buen chiste, a menudo pasa desapercibido. Es una “calidad oculta”. Los usuarios solo notan cuando algo falla, pero nunca cuando todo funciona bien. Es como la plomería de tu casa: te quejas cuando se rompe una tubería, pero nunca agradeces que el agua simplemente salga.

Así que la próxima vez que te sientes a diseñar, recuerda: ¿estás construyendo algo que va a funcionar hoy y mañana, en cualquier dispositivo? O estás creando otra de esas efímeras obras de arte que solo se ven bien en tu galería personal? La respuesta, por supuesto, no es que te haga más o menos dinero, sino que te haga dormir más tranquilo.

Autor

Comparte esta anotación en:


Categorías ,