Las antiguas bases de datos de archivos planos codifican su esquema como anchos de caracteres fijos: el nombre puede ocupar 8 caracteres, el número de calle 4, y así sucesivamente. Añadir un campo después es doloroso: no existe un ALTER TABLE, hay que reescribir cada registro y actualizar cada programa que toca el archivo. En un gran sistema legacy, «añadir un campo» puede suponer semanas de trabajo arriesgado.

El truco clásico de supervivencia es el padding: caracteres en blanco extra al final de un registro, o repartidos en bloques dentro de él. ¿Hace falta una inicial del segundo nombre? Se recorta un carácter del padding. La longitud del registro no cambia, no hay que mover nada, y los módulos a los que no les importa el nuevo campo solo ven un carácter en un espacio que ya ignoraban.

El equipo de Brenda opera un mainframe IBM con archivos planos VSAM y lleva décadas practicando este juego. Para alimentar el reporting moderno, la empresa contrató a unos desarrolladores externos para construir un pipeline ETL hacia una base de datos relacional, entregándoles el copybook con la estructura de los registros. En algún punto del camino, los desarrolladores del ETL dividieron varios bloques de padding en offsets equivocados: campos de la forma SOME_USEFUL_FIELD PADDING PADDING PADDING SOME_OTHER_FIELD se convirtieron en columnas que se tragaban cada una parte del padding.

Al principio todo parecía ir bien: los caracteres de padding se almacenaban en la base de datos pero se eliminaban al mostrarse, y concatenar las columnas seguía reproduciendo el registro plano original. El fallo fatal: solo se probó contra el mainframe de producción. Contra el mainframe de desarrollo habrían visto las nuevas funcionalidades en marcha que ya consumían parte de ese padding.

El pipeline pasó la aceptación, salió a producción y funcionó unas semanas — hasta que el equipo del mainframe lanzó sus nuevas funcionalidades, que empezaron a escribir datos reales en el padding mal dividido. Los informes se llenaron de basura. Los contratistas, con su trabajo terminado, respondieron «works as designed». Así que fueron los desarrolladores del mainframe quienes tuvieron que buscar otros campos de padding que utilizar — unos que no estropearan los informes que a la dirección le gustaba consultar.