Seis de nueve bugs no existían
Llevamos a cabo una revisión planificada de nuestra base de datos de nombres. El plan constaba de nueve puntos de trabajo, cada uno de ellos un defecto que corregir. Seis de ellos describían defectos que no estaban ahí, o trabajo que ya se había hecho.
Ninguno de los seis procedía de una medición errónea. Todos y cada uno procedían de un párrafo de nuestra propia documentación.
Ese es el hallazgo, y resulta más incómodo que la confesión habitual de «hemos encontrado bugs en nuestros datos» — ya hemos escrito una de esas, y no es de eso de lo que trata este artículo. Aquí se trata de la clase de fallo en la que el ticket es el bug: aquella en la que un mantenedor, actuando de forma razonable, lee una nota, se la cree, planifica trabajo a su alrededor y solo descubre, al entrar en contacto con los datos, que no había nada que hacer. El trabajo cuesta igualmente lo que habría costado. Simplemente, no produce nada.
El marcador
| El punto, tal como estaba formulado | Lo que dijeron los datos cuando por fin se les preguntó |
|---|---|
| «33 apellidos fantasma tomados de una lista clásica — suprimirlos» | Cero. Las 2.707 entradas coincidían exactamente con el registro, y cada peso igualaba el recuento del registro hasta la unidad |
| «Faltan cinco apellidos en la lista vietnamita» | Los cinco están presentes — en los puestos 42, 46, 55, 59 y 60, los mismos puestos que el punto citaba como prueba |
| «La columna de pesos mezcla tres escalas incompatibles; unifíquelas» | Una sola escala. Un único coeficiente recuperado reproduce exactamente 1.813 de 1.886 pesos |
| «Este país no tiene pesos de ciudades» | Los tiene todos: 60 de 60 |
| «No existe ningún registro de frecuencias para este país» | Cierto para los apellidos, falso para los nombres de pila — una oficina nacional de estadística los publica año por año desde 1999 |
| «Cargar los pesos de ciudades para los locales que carecen de ellos» | Ninguno de los 14 candidatos alcanza una cobertura completa. 563 de 810 ciudades tienen una cifra; 247 no |
Cinco de ellos son defectos fantasma. El último es de otra naturaleza y merece separarse: la laguna era real y el defecto estaba en la corrección propuesta. Volveremos a ello más abajo, porque es el que más probabilidades tiene de tratarse mal bajo la presión del tiempo.
El párrafo que enumeraba lo que se había añadido
El caso más nítido, y el que se generaliza más lejos.
Una nota interna decía, en sustancia: «Añadidos seis apellidos reales y frecuentes que faltaban: A (puesto 42), B (puesto 46), C (#56), D y E (#60–61), F (#66).»
Eso es la constancia de un trabajo ya realizado. Leída seis semanas después por alguien que no estaba allí, resulta indistinguible de una lista de tareas pendientes. La palabra «faltaban» está ahí, en la frase; que describa un estado que dejó de existir por la propia acción que esa misma frase relata descansa por completo en el tiempo pasado de un solo verbo.
Así que se abrió un punto de trabajo: estos apellidos faltan en la lista. Y el punto citaba los puestos — 42, 46, 56, 60 — como prueba de apoyo.
Esos puestos eran correctos. Lo eran porque las entradas estaban ahí, precisamente en esos puestos, que es justamente por lo que la nota podía citarlos. La prueba del defecto y el defecto mismo se habían copiado del mismo párrafo. Comprobar el fichero llevó menos de un minuto y devolvió las cinco entradas en los puestos 42, 46, 55, 59 y 60 — acordes con la nota salvo por la deriva que cabe esperar después de que la lista se profundizara entretanto.
La lección no es «escriba con más claridad». La nota era clara. La lección es que una frase que describe un cambio no lleva fecha por defecto, y que un cambio sin fecha se lee como un estado. Added A, B, C y A, B, C are missing son la misma frase para un lector que ignora cuándo se escribió.
El acontecimiento leído como un estado
La misma forma, con un radio de impacto mayor.
Una nota dejaba constancia de que 33 apellidos arcaicos sin ningún portador vivo se habían suprimido de una lista, por haber sido importados de un texto del siglo XI y no de una población. Cierto, fechado y correcto.
Cuatro días después, un punto del plan decía: suprimir 33 apellidos arcaicos sin ningún portador vivo.
Ambas frases son ciertas respecto de nuestros datos. Lo son respecto de versiones distintas del mismo fichero, con cuatro días de diferencia. Y he aquí lo que empeoró las cosas en lugar de mejorarlas: entretanto el fichero se había reconstruido a partir de un registro, de modo que la versión vigente era un subconjunto estricto de un registro nombre por nombre, con cada peso igual a un recuento del registro. No es que simplemente no hubiera nada que borrar — estructuralmente, no había nada que pudiera borrarse, porque detrás de cada fila había un contador.
La medición requirió un solo script: 2.707 entradas, todas presentes en el registro bajo comparación byte a byte, cero discrepancias de peso, cobertura del 99,98 %.
La limpieza tentadora en este punto consiste en tachar la nota antigua por errónea. Sería un segundo error. La nota antigua no es falsa — describe con exactitud un acontecimiento, y hemos publicado sobre ese acontecimiento un artículo que no necesita corrección alguna. Lo que le faltaba a la nota era un ámbito: qué fichero y a qué fecha. Dos afirmaciones exactas sobre dos versiones de la misma cosa, alojadas en dos documentos sin fecha, se presentan como una contradicción; y una contradicción en la documentación es un punto de trabajo que espera a ser redactado por la próxima persona que repare en ella.
El mecanismo que nunca se puso por escrito
Un tercer punto afirmaba que una columna de pesos mezclaba tres escalas incompatibles y que había que reducirla a una sola.
Sí había habido tres fuentes. Escala había una sola: en algún momento anterior se habían armonizado ajustando todo a un único coeficiente, y el paso de ajuste nunca se documentó. Recuperar el coeficiente a partir de los propios datos costó una tarde; una vez recuperado, reproduce exactamente 1.813 de 1.886 pesos, hasta la unidad.
Y ahora la parte interesante. Medimos qué habría cambiado realmente la armonización propuesta:
| Indicador tras la «corrección» propuesta | Resultado |
|---|---|
| Desplazamiento mediano de puesto | 0 |
| Desplazamiento de puesto en el percentil 90 | 0 |
| Mayor desplazamiento de puesto individual | 34 |
| Variación de la proporción del top 10 | 0,02 pp |
| Entradas cuyo peso cambia | 73 de 2.222 |
Y el lado del coste: esas 73 entradas eran las únicas cuyos valores procedían de una fuente independiente. Reescribirlas habría vuelto el fichero plenamente coherente consigo mismo y permanentemente inverificable — el único conjunto con el que alguna vez podría comprobarse el coeficiente habría quedado sobrescrito por ese mismo coeficiente.
Un cambio cuyo beneficio medido es cero y cuyo coste no lo es no resulta neutro. Es una regresión. Solo parece neutro porque «normalizar las escalas» es una frase que suena a higiene.
La laguna real con la corrección equivocada
El sexto punto es el que más atención merece, porque en él todo era razonable salvo la conclusión.
Veinte locales tenían listas de ciudades sin pesos de población, de modo que las ciudades se elegían de manera uniforme — un pueblo pequeño tan probable como la capital. Ese es un defecto auténtico, documentado con honestidad, con fuentes en disco para algunos de los locales. El punto decía: cargue los pesos de que disponemos.
Una vez medidas, las fuentes cubrían 563 de 810 ciudades repartidas en 14 locales — el 69,5 %. Ni un solo locale alcanzaba el 100 %. El mejor se quedaba en el 90,4 %, con cinco ciudades ausentes.
El instinto dice que el 69,5 % es mejor que el 0 %. No lo es, y la razón merece formularse con precisión: una lista sin pesos elige de manera uniforme, lo cual es erróneo pero sin sesgo de una entrada a otra. Una lista parcialmente ponderada hace de forma determinista más probables las entradas ponderadas y menos probables las no ponderadas — y las entradas que carecen de cifra de población no son una muestra aleatoria. Son las de nombres incómodos, límites disputados o correspondencias ambiguas. Así pues, la carga parcial penaliza sistemáticamente justo aquellas entradas que más costó resolver, y lo hace además pareciendo más precisa que antes.
El resultado correcto era no cargar nada y anotar las 247 lagunas en forma de manifiesto, para que el próximo intento parta de una lista y no de un redescubrimiento. «Algunos datos son mejores que ninguno» es falso siempre que aquello que falta esté correlacionado con aquello que se mide, que es casi siempre el caso en datos geográficos y de nombres.
Por qué la causa es la documentación y no los datos
Seis puntos, seis países distintos, seis tipos de afirmación distintos, un origen común: una frase de nuestras propias notas que era cierta en el momento de escribirse.
Esto es estructural, no un fallo puntual de diligencia. Una medición está fechada por construcción — usted la ejecutó, un día concreto, contra un fichero concreto, y si vuelve a ejecutarla obtiene la respuesta de hoy. La prosa no tiene nada de eso. Un párrafo no sabe cuándo se escribió, no sabe a qué se refería y no se degrada de forma visible. La documentación no queda obsoleta de forma ruidosa. Queda obsoleta en silencio y luego genera trabajo.
Tenemos una medición firme de ese ritmo. Durante esa misma revisión, un recuento que figuraba en nuestra documentación — cuántos locales llevaban cierto tipo de conjunto de datos — pasó de 7 → 9 → 10 en un solo día, a medida que iban aterrizando trabajos en paralelo. Nueve documentos llevaban ese recuento en trece sitios. Y el informe que redactamos para corregir los trece quedó desfasado veinte minutos después de escribirse, porque entretanto terminó otro proceso y dejó el número en 10.
No es una anécdota sobre la ironía del destino. Es la restricción misma. La primera versión la produjo precisamente el cuidado, así que «tenga más cuidado» no puede ser el remedio.
El remedio: un número sin recálculo es una mina
La regla que aplicamos ahora, y la única de este ejercicio que sobrevive al contacto con un proyecto real:
No escriba nunca un recuento en prosa sin escribir, justo al lado, cómo recalcularlo.
Un número desnudo enuncia un hecho sobre un instante. Un número acompañado de su recálculo enuncia un hecho sobre el presente. La diferencia cuesta una línea y elimina toda una clase de fallos — porque el siguiente lector no tiene que decidir si se fía del número; puede dedicar diez segundos a averiguarlo.
La segunda regla trata del tiempo verbal. Toda frase factual de la documentación de un proyecto debería poder clasificarse, sin ningún contexto alrededor, en exactamente una de estas categorías:
| Naturaleza | Debe llevar | Ejemplo del modo de fallo |
|---|---|---|
| Medición | la fecha, y contra qué se midió | «la cobertura es del 60 %» — ¿de qué, cuándo? |
| Acontecimiento | la fecha, y el ámbito al que se aplicó | «suprimidas 33 entradas» — ¿de qué versión? |
| Decisión | la fecha, y el razonamiento capaz de revertirla | «no usamos la fuente X» — ¿por qué no, y qué lo cambiaría? |
| Instrucción | un criterio de aceptación | «profundizar la cola» — ¿hasta dónde? |
Una frase que no puede clasificarse es un punto de trabajo fantasma que todavía no se ha redactado.
Por qué «compruebe primero» es un consejo más difícil de lo que parece
Todo el mundo suscribe el «verifique la premisa antes de planificar el trabajo». Casi nadie lo hace, y la razón es una asimetría real, no la pereza.
Leer un documento lleva segundos y no exige nada. Ejecutar una comprobación lleva minutos, exige saber qué ejecutar y exige tener los datos a mano. Por eso el orden natural es: leer, formar un plan y verificar después, durante la ejecución. Ese orden es exactamente el inverso del correcto — porque cuando la ejecución arranca el plan ya está redactado, fijado en el calendario, dotado de personal y defendido en una reunión. La verificación durante la ejecución no cancela el trabajo; se limita a descubrir, a un precio alto, que ese trabajo era inútil.
Hay además una razón concreta por la que los puntos fantasma parecen sólidos: son precisos. «33 apellidos fantasma» lleva un número, y los números se leen como algo medido. Aquel sí se había medido — cuatro días antes, contra un fichero que ya no existía con esa forma. La precisión no es prueba de vigencia, y es la manera más fiable que tiene una afirmación desfasada de hacerse pasar por reciente.
Nuestro propio balance de esta revisión: al menos tres sesiones de trabajo completas se fueron en puntos que un barrido de un minuto sobre los datos habría cerrado. Ese barrido ya existe y puede volver a lanzarse, que es el único resultado duradero que produjo cualquiera de aquellas sesiones.
La lista de comprobación
- Contraste la premisa con los datos como primera acción — antes de planificar, no durante la ejecución. Si la premisa no puede comprobarse a bajo coste, eso mismo es ya el primer hallazgo.
- No escriba nunca un recuento sin el medio de recalcularlo. Un número de nuestras notas cambió dos veces en un día y vivía en trece sitios.
- Feche cada frase factual y fije su tiempo verbal. «Añadido X» y «falta X» son la misma frase cuando no hay fecha.
- La constancia de lo que se añadió no es una lista de lo que falta. Cuando una nota enumera elementos, compruebe si es un recibo o una petición.
- Separe «el defecto no es real» de «la corrección no es la adecuada». Llegan con la misma forma y exigen respuestas distintas; una cierra el punto, la otra lo sustituye.
- Las correcciones parciales pueden ser peores que ninguna cuando la parte que falta no es una muestra aleatoria. Mida la cobertura antes de cargar nada, y prefiera una laguna honesta a un relleno sesgado.
- Corrija el documento en la misma sesión que el punto fantasma. De lo contrario, la frase que lo generó sigue en su sitio y vuelve a generarlo — hemos visto ocurrir exactamente eso, dos veces, con el mismo párrafo.
- Esté atento a la unilateralidad. Todos y cada uno de estos defectos existían en la documentación y nunca pudieron reproducirse contra los datos. Un defecto que solo aparece en un lado de una comparación suele ser un problema de diagnóstico, no un problema de datos.
Lo que costó realmente y lo que aportó
Los tres puntos auténticos eran trabajo real y se hicieron. Los seis restantes se cerraron mediante la medición, y cerrarlos llevó en total menos tiempo del que habría exigido implementar uno solo de ellos.
El resultado más valioso de la revisión no fue un cambio en los datos. Fue la supresión y la nueva datación de las frases que habían producido los puntos falsos — porque esas frases seguían ahí, seguían siendo ciertas-cuando-se-escribieron, seguían listas para generar los mismos seis puntos ante la próxima persona que las leyera con atención y actuara de buena fe.
Y esa es la forma general, la incómoda. Una base de datos se degrada más despacio que su documentación. Los datos los comprueban validadores en cada compilación; la prosa que los rodea no la comprueba nadie, envejece de forma continua y es lo primero que todo el mundo lee.
Datos actualizados a 2026-07-21
Todas las cifras de este artículo se recalcularon a partir de los datos el 21 de julio de 2026, y no se tomaron de las notas aquí comentadas — lo que para este artículo en concreto habría sido una idea excepcionalmente mala. La revisión descrita se desarrolló del 19 al 21 de julio de 2026 sobre una base de datos de nombres y direcciones que cubre 64 locales.
De dónde salen las cifras:
- 2.707 entradas, coincidencia byte a byte con el registro, cobertura del 99,98 % — recalculadas contra el registro publicado de apellidos nombre por nombre del locale en cuestión; ese registro, su licencia y sus peculiaridades están documentados en De dónde proceden nuestros datos de nombres taiwaneses.
- Cinco apellidos en los puestos 42, 46, 55, 59, 60 — leídos directamente de la lista distribuida, 298 entradas.
- 1.813 de 1.886 pesos reproducidos por un único coeficiente; desplazamiento mediano de puesto 0; 73 de 2.222 entradas afectadas — medido volviendo a derivar el coeficiente a partir de los datos y reproduciendo el cambio propuesto sin llegar a escribirlo.
- 60 de 60 pesos de ciudades; 563 de 810 repartidas en 14 locales; 247 lagunas — contados a partir de las listas de ciudades distribuidas y de las fuentes disponibles fuera de línea.
- 7 → 9 → 10 en un día, en 13 sitios repartidos en 9 documentos — contados durante la propia revisión de la documentación.
- El registro de nombres de pila del que se decía que no existía lo publica el Istat, el instituto nacional de estadística de Italia, y cubre 1999–2024.
El artículo complementario, que trata ocho errores de fondo de otra naturaleza — denominadores equivocados, verificación circular, estadísticas zombis — es En qué nos equivocamos con los datos de nombres. El método general para poner a prueba esta clase de afirmaciones está en Cómo auditar un conjunto de datos de frecuencias de nombres.