Patrones avanzados de diseño y escalabilidad
Escalar no es añadir más componentes, es reducir entropía
Cuando un sistema crece, el problema ya no es “cómo se ve”. Es:
- cuántas decisiones hay,
- quién puede tomarlas,
- cuándo se rompen sin darse cuenta.
Un sistema que escala no evita la complejidad. La canaliza.
Escalar es impedir que el caos vuelva a aparecer.
De componentes a primitivos de diseño
En sistemas avanzados, los componentes dejan de ser la unidad principal. La unidad real pasa a ser el patrón. Ejemplos de primitivos:
- Layouts (stack, cluster, sidebar)
- Estados (empty, loading, error)
- Acciones (primary, secondary, destructive)
- Feedback (toast, inline hint)
Los componentes consumen estos primitivos. No los reinventan.
Variantes como espacio de diseño, no como condicionales
En sistemas maduros:
- Las variantes están limitadas
- Las combinaciones inválidas no existen
- El sistema “dice no” por defecto
Esto reduce:
- deuda visual,
- explosión combinatoria,
- errores humanos.
Un sistema fuerte restringe más de lo que permite.
Políticas de diseño: reglas explícitas
Un patrón avanzado no vive solo en código. Vive en políticas. Ejemplos:
- “No existen botones pequeños destructivos”
- “Todo modal tiene una acción primaria clara”
- “El estado loading nunca bloquea navegación”
Estas reglas:
- No son opiniones
- Son contratos
Y se reflejan en código.
Escalabilidad ≠ reutilización ciega
Reutilizar no es copiar. Reutilizar es consumir una decisión central. Señales de mala escalabilidad:
- Variantes que existen “por si acaso”
- Componentes genéricos que nadie entiende
- Overrides constantes
- Documentación desalineada
Un sistema sano:
- Tiene menos componentes
- Pero más claros
- Y más difíciles de usar mal
Diseño impulsado por estados, no por pantallas
Las pantallas cambian. Los estados se repiten. Estados universales:
- Loading
- Empty
- Error
- Success
- Partial data
Un sistema escalable:
- Define estos estados una vez
- Los reutiliza en todas partes
- Los anima y comunica igual
Composición jerárquica y responsabilidad
A gran escala:
- No todos los componentes están al mismo nivel
- Hay jerarquía de responsabilidad
Ejemplo:
- Primitivos → patrones → componentes → páginas
Romper esta jerarquía genera:
- dependencias circulares,
- estilos frágiles,
- imposibilidad de refactor.
Tokens como API pública del diseño
En este punto, los tokens dejan de ser “colores y tamaños”. Son una API estable.
Cambiar un token:
- Tiene impacto global
- Debe ser deliberado
- Debe ser versionado
Un token sin dueño es deuda.
Documentación viva como parte del sistema
Un sistema avanzado no se recuerda, se consulta. Documentación efectiva:
- Ejemplos reales
- Casos límite
- Uso correcto e incorrecto
- Evolución histórica
Si no se puede explicar, no se puede escalar.
Gobernanza: quién puede cambiar qué
Escalar implica decisiones organizativas:
- Quién añade tokens
- Quién crea patrones nuevos
- Quién aprueba cambios estructurales
- Cómo se gestionan excepciones
Sin gobernanza:
- El sistema se degrada lentamente
- Nadie es culpable
- Todos sufren
Antipatrones de sistemas grandes
- “Un componente para cada caso”
- “Un token por pantalla”
- “Añadamos una variante más”
- “Esto solo lo usamos aquí”
- “Luego lo limpiamos”
Estos son los síntomas antes del colapso.
Señales de madurez del sistema
- El sistema impide errores comunes
- El onboarding es rápido
- Los cambios grandes son seguros
- El diseño se mantiene coherente
- La velocidad aumenta con el tiempo
Escalar es decir no
La habilidad más difícil:
- rechazar casos,
- eliminar opciones,
- simplificar sin perder potencia.
Un sistema avanzado no impresiona por lo que hace,
sino por lo que no permite hacer.