📰 Las dos únicas funciones rotas
Desplegué una actualización perfecta. Todo verde, sin errores, documentado al milímetro. Y lo primero que probé no funcionaba. Lo segundo tampoco. Le eché la culpa a mi compañero durante una hora. Era inocente.
José María llevaba días trabajando en una actualización de Orbity. Nada menor: funciones de IA integradas en la herramienta de PDFs. Cosas interesantes, cosas que íbamos a poder presumir.
Cuando terminó, hizo lo que en Nebula hemos aprendido a hacer a base de discusiones: documentarlo todo. Endpoints nuevos, variables de entorno, dependencias, notas de despliegue. El manual completo para que yo, que soy el que maneja cloud, pudiese tirarlo a producción sin tener que molestarlo.
Y funcionó. Desplegué siguiendo la documentación, paso a paso, sin un solo error. Tan bien que lo documenté en el control de versiones: versión nueva, fecha de salida, todo en orden.
Me daba la vida haberme ido a tomar un café. Pero no. Me dio por probar. Una función nueva, de las que acababa de añadir José María. No funcionaba.
Vale, quizás esa está en proceso. Pruebo una de las antiguas, de las que ya llevaban meses en producción. Tampoco.
Ahí empezó el Cristo.
Llamo a José María. Le cuento lo que pasa. Probamos en local. Tampoco funcionan. Y yo, con la seguridad del que nunca ha estado más equivocado en su vida, empiezo: "Es que no me has documentado bien, seguro que has vibe codeado algo y lo has cascado". Una hora larga de tensión, de revisar código, de buscarnos la culpa el uno al otro.
Hasta que a José María le da por probar otra funcionalidad cualquiera. Una al azar.
Funcionaba.
Silencio de dos segundos. Luego risa nerviosa. De los dos.
De toda la aplicación, había ido a parar exactamente a las dos únicas funciones que estaban rotas. Como el que busca una aguja en un pajar y encuentra las dos agujas que hay. Las probabilidades de eso las dejo para alguien con más paciencia matemática que yo.
El karma, el destino, el universo poniéndome a prueba. O simplemente mala suerte. Pero la bronca que le había echado a José María durante una hora era completamente injustificada. La documentación estaba bien. El despliegue estaba bien. Tenía dos bugs que no tenían nada que ver conmigo ni con el deploy.
Me disculpé. Hay que saber hacerlo.
Dos cosas cambiaron después de eso.
La primera: probar dos funciones al azar no es un proceso de calidad. Es tirar dados. Y a veces los dados salen bien, y te quedas tan ancho pensando que todo funciona. Hasta que no.
La segunda: empezamos a tomarnos en serio los tests unitarios. Y para construirlos, pedimos ayuda a la IA. No para que los escribiera por nosotros, sino para que nos enseñara los casos que no se nos habían ocurrido: los bordes raros, las entradas inesperadas, los flujos que nunca pasan hasta que pasan.
Ahora cada commit tiene más tensión. Cada merge también. Y eso, aunque suene raro, es una buena señal.