wandres.dev
CAMPO Y LABORATORIO · RUM frente a sintético

Cuál manda para decidir

El protocolo de decisión que asigna a cada tipo de dato su papel, con reglas concretas para priorizar, para verificar un arreglo y para poner umbrales que rompan el build.

⏱ 16 min

Cuando los datos se contradicen hay que tener decidido de antemano cuál gana, porque decidirlo en el momento significa decidir a favor del que confirma lo que ya querías hacer. La regla es simple de enunciar y sorprendentemente difícil de aplicar: el campo decide qué hay que arreglar, el laboratorio decide cómo. Todo lo demás se deriva de ahí.

🎯 Al terminar esta lección sabrás
  • Aplicar la regla de precedencia entre campo y laboratorio en cada tipo de decisión.
  • Construir una lista de prioridades ponderada por tráfico real.
  • Definir criterios de verificación de un arreglo que no se puedan interpretar a conveniencia.
  • Elegir qué umbral rompe la integración continua y con qué margen.

La regla de precedencia

Escrita como tabla de decisión, para que no haya ambigüedad.

Decisión Manda Por qué
¿Tengo un problema? Campo Es la única fuente sobre usuarios reales
¿A qué población le pasa? Campo El laboratorio no tiene poblaciones
¿Qué página arreglo primero? Campo, ponderado por tráfico El laboratorio no sabe de tráfico
¿Cuál es la causa? Laboratorio El campo no tiene perfiles ni cascadas
¿Este arreglo funciona? Laboratorio primero, campo después El laboratorio da respuesta inmediata; el campo, definitiva
¿He introducido una regresión? Laboratorio en integración continua El campo tarda demasiado
¿Puedo declarar el trabajo terminado? Campo Es el único que demuestra el efecto real

Las dos filas que más se incumplen son la tercera y la última. La tercera porque la lista de oportunidades de Lighthouse es cómoda y se parece a un backlog. La última porque cerrar una tarea cuando el laboratorio mejora es tentador y esperar 28 días a que el campo lo confirme no lo es.

La documentación oficial es explícita en el punto que más discusión genera: si Lighthouse y los datos de campo discrepan, los datos de campo probablemente reflejan mejor la experiencia de tus usuarios, siempre que te asegures de que estás mirando el dato de tu página y no el del origen completo.

Priorizar ponderando por tráfico

El error de priorización más caro es ordenar por severidad de la métrica en vez de por impacto total. Una página con un LCP de 6 segundos y cien visitas al mes importa menos que una con 3,2 segundos y doscientas mil.

La ponderación que funciona es sencilla:

impacto = visitas del segmento x fraccion de visitas por encima del umbral

Aplicado a un caso real:

Grupo de páginas Visitas / mes LCP p75 % de visitas malas Visitas afectadas
Fichas de producto 2.400.000 3,1 s 34% 816.000
Portada 900.000 4,8 s 52% 468.000
Buscador 1.100.000 2,3 s 12% 132.000
Blog 180.000 5,9 s 68% 122.400

El instinto dice arreglar el blog, que tiene el peor número. La ponderación dice arreglar las fichas de producto, que afectan a casi siete veces más usuarios. Y la portada, que parecía secundaria, es la segunda.

Fíjate en la columna que hace el trabajo: el porcentaje de visitas malas, no el percentil 75. Esa columna la da el histograma del campo, y es la razón por la que conviene mirar la distribución y no solo el valor puntual.

💡
La regla de las dos cifras para cualquier informe de rendimiento

Nunca presentes una métrica sola. Presenta siempre el valor del percentil 75 y el porcentaje de visitas en cada franja. La primera cifra es la que exige el estándar; la segunda es la que la gente entiende y la que se mueve cuando trabajas. Un percentil 75 que baja de 4,1 a 3,9 no impresiona a nadie; “hemos pasado del 41% al 55% de visitas rápidas, son ciento treinta mil usuarios al mes” sí.

Verificar un arreglo sin engañarse

El criterio de verificación hay que escribirlo antes de hacer el cambio, porque después es demasiado fácil encontrar un corte de los datos donde el número ha mejorado.

Un criterio utilizable tiene cuatro partes:

  1. La métrica y el segmento. “El LCP del percentil 75 en móvil, en fichas de producto.”
  2. La magnitud mínima. “Debe bajar al menos 300 ms.” Poner un mínimo evita celebrar ruido.
  3. La ventana temporal. “Medido sobre los 28 días completos posteriores al despliegue.”
  4. La condición de control. “Y el volumen de visitas del segmento no debe haber caído más de un 10%.” Esta cuarta parte es la que protege del sesgo de supervivencia y de un cambio en la mezcla de tráfico.

En laboratorio, la verificación intermedia es más rápida pero necesita rigor propio: cinco ejecuciones antes y cinco después, comparando medianas, con la misma configuración y en la misma máquina, y mirando el índice de referencia de CPU para asegurarte de que la máquina estaba igual de ocupada en ambos casos.

Y una precaución que ahorra vergüenzas: comprueba que el cambio está realmente desplegado en producción y no bloqueado por una caché de la CDN. Es sorprendente cuántas verificaciones fallidas se explican así.

Qué umbral rompe el build

La integración continua necesita un umbral que falle, y elegirlo mal produce uno de dos fracasos: si es demasiado estricto, falla constantemente y el equipo aprende a ignorarlo; si es demasiado laxo, no protege de nada.

El criterio que mejor funciona es no poner el umbral sobre las métricas de laboratorio, que tienen mucha varianza, sino sobre magnitudes deterministas:

  • Tamaño de los recursos, comprimidos, por tipo. Un presupuesto de bytes de JavaScript en la ruta crítica es reproducible al byte y no varía entre ejecuciones.
  • Número de peticiones bloqueantes del renderizado.
  • Número de orígenes distintos que toca la página.
  • Presencia de patrones concretos: ninguna imagen sin width y height, ningún script síncrono en el head, ninguna imagen con loading="lazy" en el área visible inicial.

Sobre esas magnitudes, el umbral se puede poner ajustado y no dará falsos positivos. Las métricas de laboratorio se pueden seguir midiendo y graficando, pero como aviso, no como fallo, y siempre con mediana de varias ejecuciones.

Una convención que funciona bien es fijar el presupuesto en el valor actual más un margen pequeño, y bajarlo cada vez que se consigue una mejora. Así el presupuesto actúa de trinquete: impide volver atrás sin exigir mejoras imposibles.

El campo manda para decidir, pero hay un caso en el que hay que actuar contra el campo

La regla de que el campo tiene la última palabra tiene una excepción que conviene tener identificada: cuando el cambio que has hecho mejora la experiencia y empeora la métrica. El caso canónico es dejar de ocultar contenido durante la carga. Si tu página tapaba el hero hasta que terminaba de hidratarse, el elemento LCP era un titular pequeño que aparecía pronto y tu número era bueno; en cuanto muestras la imagen cuando está lista, el elemento LCP pasa a ser la imagen y tu percentil 75 sube un segundo. El campo dirá que has regresado. Y sin embargo el usuario ve el contenido principal antes que ayer. La forma de no acabar deshaciendo un buen cambio por presión del panel es haber guardado, junto al valor de la métrica, el selector del elemento LCP: si el elemento ha cambiado, la comparación temporal no es válida y hay que decirlo antes de que alguien pregunte. Sin esa dimensión guardada, no tienes cómo defender la decisión y el panel gana la discusión aunque tenga razón la experiencia. Es la misma disciplina que exigimos para no confundir un rediseño con una regresión, aplicada en la dirección incómoda.