Caso de estudio UX

Un sistema de diseño solo está vivo si se usa como código

Este es un proyecto recurrente, un intento en cada empresa en la que he trabajado desde 2017. Una diferencia decidía cuál de ellos seguía en uso después de que me fuera: si la librería se compilaba en el producto o se archivaba como un documento para consultar. El método apenas cambió a lo largo de todos ellos, hasta que llegó la IA agéntica y lo modificó ligeramente. Lo que sigue es cómo se construyó el último de ellos, y lo que los anteriores me enseñaron al quedarse cortos.

6
Empresas, un método, 2017 a hoy
9
Reglas que un componente debía cumplir antes de publicarse
6
Personas en el último equipo, cuatro de ellas desarrolladores
Clientes
Rol UX Designer, y por defecto product owner del sistema
Equipo 4 desarrolladores front-end, uno de cada equipo de producto, y 2 diseñadores, en un tablero kanban sin product owner
Periodo Coolblue 2017, Floorplanner 2018, Maersk 2019, Findhotel 2020, y desde entonces Zimmer Biomet 2021 y TrackBee
Plataforma Librerías de componentes detrás de productos web, en escritorio y móvil
Herramientas Sketch, Figma, Zeplin, InVision, Abstract, Storybook, Chromatic
Una página de la guía de estilo con campos de texto de una línea en todos los estados, botones primarios y secundarios, sliders y una fila de iconos
Muestra del sistema de diseño de Floorplanner. Un campo de texto puede tener varias variantes según el estado.

Problema

Nadie decide construir cuatro botones distintos

El diseño en una empresa de cualquier tamaño está descentralizado, y por buenas razones: un diseñador trabaja con un equipo, aprende el problema de ese equipo y entrega según el roadmap de ese equipo. El costo llega después y en otro lugar. Basta poner las pantallas de dos de esos equipos una junto a la otra para que las diferencias sean inmediatas.

Esto ocurre a cualquier escala. En el extremo pequeño es un estilo de fuente que queda un poco fuera de lugar, o un tono de gris que existe porque alguien lo sacó de una captura de pantalla. En el extremo grande es todo un flujo que no tenía por qué existir, construido porque el equipo que lo necesitaba no tenía forma de saber que otro equipo ya lo había resuelto.

Lo que hace difícil arreglarlo es que no es un problema de calidad. Cada una de esas pantallas la hizo con cuidado alguien competente. La inconsistencia es un efecto secundario de la estructura, así que la solución también tiene que ser estructural, y un documento que le pide a los diseñadores ser consistentes no es una estructura. Es una petición.

Así que lo que hay que construir no es una guía de estilo. Es un lugar donde los diseñadores y los desarrolladores front end a quienes les importa la experiencia de usuario pueden codificar un lenguaje juntos, y una vía por la cual lo que acuerdan se convierte en parte de la arquitectura del producto.

Objetivos

Lo que un sistema tiene que lograr para valer el sprint

Consistencia que el cliente percibe
Quien se beneficia nunca abre la librería. Se beneficia al no tener que volver a aprender cómo se ve un botón de una página a la siguiente, un costo que es invisible mientras se paga e invisible cuando se deja de pagar.
Lo bastante abierto para editarse
No es un documento del diseñador. Desarrolladores, redactores y product owners tienen todos algo que decir sobre cómo se comporta un componente, y un sistema que solo los diseñadores pueden leer es un sistema que los demás rodearán la primera vez que les estorbe.
Compilado, no consultado
Cambia la guía de estilo y los productos cambian. Si una persona tiene que leer la guía y otra persona volver a teclearla, las dos se irán separando, y esa separación es justo el problema que la guía se construyó para terminar.

Equipo & audiencia

Un sprint de cada cuatro, y sin product owner

La estructura que mejor me ha funcionado es un equipo prestado en lugar de uno fijo. Un diseñador y un desarrollador front end de cada equipo de producto, que se reúnen según un calendario fijo.

Tres sprints de entrega normal de producto son cómo el equipo descubre lo que realmente le falta a la librería, así que el cuarto llega con una cola que alguien ya sintió la necesidad de crear, en lugar de una lista de mejoras imaginadas en una sala.

Eran seis personas: cuatro desarrolladores front end de cada equipo, y dos diseñadores. Trabajábamos con un tablero kanban y no teníamos product owner.

Sin uno, la redacción de tickets recayó en mí. La mayoría era pequeña y específica. De vez en cuando no lo era: por ejemplo, llevar cada token de color y de tipografía a cumplir con las pautas de contraste del W3C.

Audiencia

Quién lo abre en realidad

El beneficiario es el cliente. Los usuarios son cuatro grupos dentro de una empresa.

Desarrolladores front-end
El grupo que decide si algo de esto es real. Necesitan un componente que puedan importar, no una especificación que tengan que interpretar.
Diseñadores
Necesitan poder tomar un componente del estante y confiar en él, incluida la confianza de que alguien más puede editar su trabajo sin que se desarme.
Redactores
El grupo más consistentemente olvidado. La longitud de las palabras, el tono y la forma de la oración son propiedades del componente, y un componente hecho solo en inglés a una longitud cómoda es un componente que probablemente se rompa.
Product owners
Necesitan ver lo que ya existe antes de dimensionar algo que no hace falta construir, que es el ahorro más barato de todo el ejercicio.

Alcance y limitaciones

Lo que no necesitaba un experimento

Casi nada de este trabajo se probó, y esa fue la decisión correcta. Dos decisiones clave constituyeron casi todo, y ninguna es el tipo de pregunta que un experimento puede responder.

El primero es eliminar una variación que nadie eligió. Si un producto tiene tres grises donde dos equipos inventaron uno cada uno y nadie sabe decir para qué sirve el tercero, unificarlos no es una hipótesis. No hay ningún resultado posible que abogue por conservar un accidente.

La segunda es aplicar directrices que ya existen y que están mejor respaldadas por evidencia que cualquier cosa que pudiéramos hacer nosotros mismos. Las relaciones de contraste son el caso más claro: el W3C ya hizo el trabajo, con un tamaño de muestra que ninguna empresa por sí sola alcanza, y volver a probarlo localmente para ver si a nuestros usuarios también les gusta poder leer las cosas sería puro teatro.

Cuando un cambio era realmente una pregunta, salía de este equipo. Bajaba al equipo de producto propietario de ese flujo, donde había un product owner para priorizarlo y un data scientist para diseñar la prueba.

Proceso

Seis pasos, y los primeros tres son política

El orden importa. Tres de estos seis ocurren antes de que se haga un solo componente, y saltárselos es cómo un sistema de diseño se convierte en una carpeta que alguien hizo una vez.

01

Mapear lo que ya existe

Un inventario antes de una propuesta. Colores, campos de texto, familias tipográficas, toggles, sliders, popups, botones, botones divididos, galerías, y cada variación de cada uno que el producto resultó contener.

El entregable es la versión visual de la lista, porque un recuento de trece estilos de botón es una cifra que alguien puede cuestionar, y trece botones puestos uno junto al otro en tres diapositivas no lo es. Este es el artefacto que hace posible el siguiente paso, y vale el tiempo que toma.

El catálogo resultó ser su propia mejor prueba, algo que solo descubrí al reconstruir esta página a partir de él. En el caso de Findhotel, el botón primario aparece ahí tres veces en tres azules distintos: #3979F5 en la diapositiva de botones, #0074F8 en el encabezado, #4476FB en los diálogos. Nadie eligió tres a propósito.

Formulario

13
First name *
Campo de entrada vacío con marcador de posición
Taipei City
Campo de texto completado con opción de borrar
Campo de texto vacío con botón
e.g. city, region or hotel
Taipei CityTaiwanDec 15 - Dec 16, 2 GuestsCity
Taipei CityTaiwanNov 24 - Nov 25, 2 GuestsCity
Campo de texto con autocompletado
Taipei City
Taipei CityTaiwanDec 15 - Dec 16, 2 GuestsCity
Taipei CityTaiwanNov 24 - Nov 25, 4 GuestsCity
Campo completado con autocompletado
Choose a bed type1 double bed2 single beds1 double bed and 1 sofa bed2 double beds1 king bed1 twin bed
Campo de selección
Tue, Jan 21January 2020 ›MoTuWeThFrSaSu1314151617181920212223242526
Campo de fecha
Telephone number *This does not look like a valid phone number
Mensaje de error en un campo vacío
Requests (optional)
Área de texto
Hotel
Casilla de verificación
Expiration MM/YY *12/19
Campo con máscara de entrada
Telephone country code *Netherlands +31
Campo completo con validación
Telephone number *0654331553You may be reached at: +31 654331553
Campo vacío con información

Botones

13
Search
Botón primario
Filter by
Botón secundario
Reset
Botón discreto
Go back to search
Botón de enlace
Unlock Deal
Botón de oferta privada
Botón de icono en campo
Show details
Botón de acordeón
EN€
Fila de botones
English
Botón con icono y texto (estilo de lista)
Delft
Botón ancla
Botón de icono
9+
Botón de alternancia
Best match
Botón de radio

Visualización

9
The price for this hotel has dropped today
Información emergente
Private deal unlocked8.3Efficient check-in/check-out
Chips
Estrellas
Couples50%
Barra de progreso
Indicador de carga
Searching all the best travel sites
Notificación emergente
We use cookies. Continue browsing if you are okay with that.
Banner superpuesto
Unfortunately the price has changed.The price raised from €181.72 to €182.00Secure bookingIt takes only 2 minutesThe deal you chose is no longer availableWe found you these other great deals
Banner incorporado
Property TypeHotel854Apartment212Guest house63Hostel29Bed and breakfast11Inn4Show more
Opciones de filtro

Contenedores

8
Movenpick Hotel AmsterdamOostelijk Havengebied8.8FabulousBooking.com€111View DealACCOR€111€105View Deal
Tarjeta
Check in/Check outCheck in from 15:00Check out prior to 12:00GeneralPaymentHouse rules
Panel expandible
Booking.com€141View Deal
Fila interactiva con efecto al pasar el cursor
Option 1Free cancellation↑ Before Mon, Jan 20€123Reserve
Fila
Booking.com€92View DealExpedia€94View DealHotels.com€94View Deal
Lista de filas
Separador
FINDHOTELEN€
Sección de encabezado
Sección de pie de página

Imágenes

Avatar
Miniatura de imagen
Imagen con una esquina redondeada
Imagen con esquinas redondeadas
1/49
Imagen

Menús

FINDHOTELEN€EnglishEspañolFrançaisPortuguêsItalianoDeutschNederlandsPolskiTürkçeSvenskaDanskNorskSuomiČeštinaMagyarRomânăHrvatskiSlovenščinaEestiLatviešuLietuviųFilipinoMelayuSlovak
Menú desplegable
PreferencesEnglish (en)Euro (€)About UsPrivacy PolicyHotels FAQContact
Menú hamburguesa
AmsterdamCheck InTue, Jan 212 Guests, 1 RoomCloseSearch
Menú expandible

Navegación

View on Google Maps
Enlace
Lista de enlaces
PhotosDetailsLocationReviewsDeals
Pestañas

Superposiciones

FINDHOTELEN€Sold out on your datesLooks like there are no longer any rooms available for the dates you selected.Back to previous page
Superposición de página
Payment failedSorry, we could not process your payment. Please try again.Back to formCustomer Support
Cuadro de diálogo
  • #3979F5Diapositiva de botones, Search
  • #0074F8Sección de encabezado, Search
  • #4476FBDialog, Back to form

Un botón primario, tres azules. Este es el inventario defendiendo su propio caso.

02

Comprar el tiempo

Con el inventario en la mano, un lead developer y yo presentamos ante las personas que aprueban a dónde van los sprints. El público se eligió solo. Quienes venían quejándose de que el producto no se parece a sí mismo en distintos lugares eran los que harían esto realidad, porque ya habían notado el problema y no tenían un nombre para él.

Ese es todo el truco de este paso. Nadie financia un sistema de diseño como una abstracción. Lo financian una vez que han visto los trece botones, momento en el cual el argumento ya no es que la consistencia sea buena en principio.

La presentación pregunta cuáles son los problemas y responde con las respuestas simples: las funciones se lanzan despacio, nadie está seguro de qué componentes ya existen o cómo usarlos, los pequeños errores en los componentes nunca se corrigen, falta accesibilidad en toda la aplicación. Leído por separado, es el caso que se podría plantear en cualquier empresa.

03

Formar el equipo con gente de todos los equipos

Un diseñador y un desarrollador de cada equipo de producto.

Un equipo formado desde todas partes tiene un representante en cada sala donde la librería se usará más adelante. Eso es lo que convierte la adopción de un despliegue en algo que ya ha ocurrido, y es la diferencia entre una librería que usa la empresa y una librería que usan solo sus autores.

Cuatro equipos de producto, y las seis personas que juntan sus fortalezas: cuatro desarrolladores front-end y dos diseñadores UX.

04

Elegir herramientas

Del lado del diseño, esto se redujo a dos decisiones: en qué diseñar y dónde publicar. En Maersk, en 2019, InVision ya estaba licenciado y era de uso generalizado. En Findhotel era Zeplin. Ambas empresas usaban Sketch. En cada caso, la respuesta fue la herramienta que ya estaba en uso.

Del lado del desarrollo había un requisito nuevo, no uno heredado: la principal consideración era hacer que el proceso de publicar y depurar un componente fuera lo más automático posible.

Las cosas han cambiado desde entonces; Figma se usa ampliamente como la herramienta preferida de los diseñadores UX. Storybook sigue teniendo su lugar en el ciclo de desarrollo. Lo que realmente cambió está debajo de las herramientas. Un diseñador que trabaja con IA agéntica como Claude Code puede escribir y hacer commit del componente directamente, en lugar de depender de un desarrollador para implementar los cambios.

2019 2020
Figma La alternativa en línea, y todavía muy claramente la retadora, no la opción predeterminada.
Storybook El otro extremo del mismo estante. Un componente que existe aquí existe en el producto.
Zeplin La fuente de verdad que miraban ambos lados. Todo lo de abajo está dispuesto para mantener esta honesta. Ya no se usa
Sketch Donde se dibujaban los componentes, y la licencia que ambas empresas ya pagaban. Ya no se usa
Chromatic Lo que convirtió un pull request en algo que un diseñador podía revisar, al volver un diff una imagen. Ya no se usa
2026
Figma Se quedó exactamente donde estaba, solo que ya no es la retadora. Ahora es simplemente la plataforma en la que la gente diseña.
Storybook Sigue siendo el otro extremo del mismo estante, por la misma razón de siempre.
Claude Code El cambio real. Un diseñador puede escribir y hacer commit de un componente aquí mismo, así que la entrega de arriba a veces es solo una persona, un archivo.
05

Hacer componentes, y acordar qué es uno

Dividido entre los diseñadores, un componente a la vez, y la unidad de trabajo es el componente en todos sus estados.

Dos diseñadores que se dividen ese trabajo producirán dos mitades incompatibles a menos que alguien escriba qué significa 'terminado', así que lo hice. Se redactaron nueve condiciones como una forma de criterios de aceptación para el sistema de diseño.

  1. Flexible al redimensionar con autolayout
  2. Usando la lista oficial de estilos de texto con nombre
  3. Usando la lista oficial de colores con nombre
  4. Ajustándose exactamente a la cuadrícula de unidades, cuya unidad más pequeña es de 4px
  5. Con una versión para móvil, tablet y escritorio, donde eso aplique
  6. Expone los mínimos permisos de edición que aún lo hacen útil
  7. Bien nombrado, incluida cada subcapa
  8. Probado en un lienzo para redimensionado y permisos
  9. Publicado en la plataforma oficial

Tres de ellas se entienden mejor viéndolas que leyéndolas, porque cada una es una regla sobre una forma.

Reglas de forma

PlaceholderPlaceholder1u = 8px
Placeholder
2u
2u
Placeholder3u
2u
Placeholder
Placeholder
1.5u1u1u
Una unidad son 8px, y cada borde del componente cae en un número entero de ellas.
PlaceholderUser inputUser inputUser inputUser input
Seis estados, no uno: normal, con foco, lleno, deshabilitado, error y resuelto. Todos los estados de un componente.
Placeholder
Placeholder
Placeholder
Qué partes se estiran y qué partes se mantienen, decidido una vez y no por cada artboard.
06

Publicar, que es donde se zanja el argumento

Este es el paso que mis intentos anteriores hicieron mal, y hacerlo mal no parece un fracaso en el momento. Con InVision publiqué para diseñadores. Los diseñadores lo usaron. Los resultados estuvieron bien y los productos se separaron de todas formas, porque un silo de diseño y un silo de desarrollo producen la misma separación que no tener sistema, solo que un traspaso después.

El diseño acaba siendo código o no sale a producción. Así que mi trabajo se dirigió directo a los desarrolladores. Los componentes se mapearon uno a uno entre el lado del diseño y el lado del desarrollo, cada uno con una URL única indexada en un archivo que el front-end podía leer.

Abajo está un componente, la calificación por estrellas, en los tres lugares donde existe. Es el mismo objeto, con variaciones.

Lo que se entregó

Páginas que salieron del sistema de diseño

Estas páginas están ensambladas por completo con piezas hechas en sus sistemas de diseño correspondientes.

Floorplanner, 2018

Una herramienta de dibujo en lugar de un embudo. Las dos páginas de marketing del final son las interesantes, porque una página de marketing armada con los componentes del propio producto es un caso de ejemplo en que la guía llegó más allá del producto principal.

Maersk, 2019

Twill, Maersk's platform for the small and medium exporters and importers who book LCL (less than container load) cargo: shipments too small to fill a container, sharing the space and the cost with other people's freight. The screens below follow one booking from the destination search to the confirmation screen.

Findhotel, 2020

El embudo completo, en escritorio, tableta y móvil. Las capturas móviles son exportaciones de página completa.

Zimmer Biomet, 2021

Un planificador quirúrgico, construido en dieciocho meses. La mayoría de los diálogos de este producto son un componente con contenido distinto adentro. Cambia el componente una vez y cada diálogo cambia con él.

TrackBee, 2025

Cinco flujos mostrados en tres anchos cada uno: iniciar sesión, crear una cuenta, conectar plataformas publicitarias, elegir un plan y volver tras una suscripción caducada.

Conclusión

Un sistema de diseño vivo es un sistema que está programado

Usado en todos los productos

Cuando me fui era una librería viva, importada por cada producto del portafolio y no simplemente citada por ellos.

Cada componente hecho accesible

Llevar cada componente a la guía de accesibilidad del W3C cambió todos los productos a la vez, lo cual es un claro ejemplo de éxito.

En Coolblue en 2017 y en Maersk en 2019 lo que construí estaba dirigido a diseñadores, con limitada participación de desarrolladores, y ambos quedaron a merced de quien estuviera sentado en un equipo dado: era trabajo de ese diseñador echar mano de los componentes, mantenerlos al día y aplicarlos bien. Eso es demasiado para colgarlo de la diligencia de una sola persona, y no es una crítica a ninguno de los diseñadores involucrados. Un sistema cuyo mecanismo de cumplimiento es que alguien se acuerde es un sistema que se degrada en el primer sprint ocupado.

Aprendizajes

Un silo de cualquiera de los dos lados hace el mismo daño
Incluso si el lado de diseño está perfectamente de acuerdo y entrega el material a un lado de desarrollo, los desarrolladores que implementan el sistema a partir de una imagen o una guía producirán exactamente la misma separación en el diseño previsto, solo un paso después.
Una sola fuente de verdad, sin más separación
El principio que más trabajo me ha ahorrado, y el más fácil de romper sin querer. Cualquier otro lugar donde se describe un componente es un lugar donde habrá separación.
Haz que mejorar salga más barato que empezar de nuevo
Los diseñadores y los desarrolladores van a seguir produciendo. El desarrollo de software simplemente no se detiene. Trabajar en los componentes existentes es el camino de menor resistencia. El objetivo es mejorar el futuro del proyecto en lugar de empezar de nuevo.