¡Bienvenidos coders!
RSS

5 jul 2014

Una noche en la oficina (cuento para programadores)

Una historia de ficción que guarda mucha semejanza con circunstancias reales por las que todo programador ha pasado alguna vez, sobre todo cuando los programas fallan
sin que exista una explicación lógica para tales fallos.
Nota 1: cualquier parecido a “Una noche en el museo” es pura coincidencia.
Nota 2: ver pregunta al final del relato.
Ya son casi las 11 de la noche del 12 de diciembre de 2006. Estoy solo en la oficina. Mis compañeros se fueron hace rato a sus casas. Incluso Jorge, el que se queda trabajando hasta tarde, también se fue. “¿Necesitás una mano?”, me preguntó antes de irse. “No, dejá, termino de instalar esto y me voy”. ¡Ja! Sí, seguro. Eso había sido hace casi cuatro horas. Ya avisé a mi mujer que no me espere para cenar. También avisé a la vigilancia que no me apaguen la luz, por que todavía estoy trabajando.
¿Por qué, digo yo, por qué? Hicimos todas las pruebas imaginables con el programa en el servidor de test y anduvo perfecto. Y ahora, en el servidor de producción, hace cualquier cosa. También, ¿a quién se le ocurre comenzar a usar una versión nueva del sistema un día 13? ¿No saben que es de mala suerte?
Pero tengo que dejarlo andando. Mañana van a llegar los directivos y lo primero que van a hacer es abrir su nuevo informecito de ventas acumuladas del mes. Y si ven los números que tira el informe, de la patada más chica voy a ir a parar a La Quiaca.
Miro a mi alrededor. La oficina está llena de adornos navideños. En el hall hay un arbolito de navidad con un montón de regalos falsos abajo. En la mesa de la recepción hay un muñequito Papá Noel con su trineo y sus renos. A su alrededor, un montón de tarjetas de navidad. La mayoría, enviadas por proveedores, para tratar de demostrar que no sólo se acuerdan de nosotros cuando quieren cobrar. Algunas tienen motivos navideños, otras tienen el logo de la empresa acompañado de algún dibujito navideño, como una hoja de muérdago. “No pueden ser tan ratas”, pensé. “¿Realmente creerán que mejoran su imagen poniendo el logo de la empresa en una tarjeta de navidad?”.
Basta de distracciones. Me tengo que concentrar. Ya son las 11:30.
Repaso todo una vez más. ¿Los datos que tengo en la base de pruebas son los mismos que me bajaron del servidor de producción? Ya lo verifiqué 200 veces, pero lo verifico una vez más. Las mismas cantidades de registros en las tablas. Comparo algunos totales mediante un par de consultas SQL y me dan exactamente los mismos valores.
¿Dónde? Maldición, ¿dónde está la diferencia?
Desde el programa, el informe de ventas acumuladas del mes me da cifras perfectamente razonables si lo corro desde el servidor de test, pero al correrlo en producción, las cifras son gigantescas, totalmente ilógicas. Y obviamente, no cruzan ni a palos con otros informes de ventas.
Compilo, instalo y pruebo una vez más. Las diferencias siguen siendo igualmente monstruosas. Pero si hago a mano, desde SQL, la misma consulta que hace el informe, pidiéndole que me acumule las ventas desde el 1° de diciembre hasta hoy, los resultados son exactos al centavo.
Miro el reloj de Windows en el preciso instante en que pasa de las 11:59 a las 12:00. Ya es trece de diciembre. Estoy perdido.
Mi vista se queda fija en el monitor, pero ya no ve nada. Mi mente ya no piensa.
–¡Psssst!
El chistido me causó un terrible sobresalto que me sacó del estado catatónico en que me encontraba. Miro a mi alrededor. Nadie.
–¡PSSSST! –repite con más fuerza el muñequito de Papá Noel desde la mesa de la recepción.
Solté una carcajada. Yo sabía que este día llegaría tarde o temprano. He perdido la cordura.
–Probá de vuelta –dice Santa Claus.
–¿Que pruebe qué?
–Corré de nuevo el informe
–¿En el entorno de producción? –no puedo creer que le estoy haciendo esa pregunta a un muñequito de Papá Noel. Pero parece que él sabe de qué le hablo.
–Sí, en el server de producción.
–Pero ya probé doscientas mil veces…
Papá Noel se cruza de brazos y saca panza, moviendo el piecito y haciéndose el canchero.
–Haceme caso, probá una vez más.
Con un gesto de incredulidad, vuelvo la vista hacia el monitor. Me conecto nuevamente al Server de producción. Abro el programa y pido nuevamente el listado maléfico de ventas acumuladas del mes. En lugar de mostrarme cifras ridículamente grandes, esta vez aparece un mensaje de error que me desconcierta más de lo que ya estoy, si es que eso es posible: “Error convirtiendo valor varchar a datetime”.
Me vuelvo a mirar a Papá Noel, a ver si él me explica lo que pasa.
–Fijate la fecha de la máquina.
Le hago caso: 12/13/2006. Mi grito se escucha desde la vigilancia.
–¡¡¡¡MALDITA CONFIGURACIÓN REGIONAAAAAAAAL!!!!
Llamo a la vigilancia para avisar que estoy bien. No le dan importancia, están acostumbrados a los exabruptos de los que se quedan trasnochando en la oficina.
Papá Noel ahora tiene un gesto aún más canchero que antes.
–¡Gracias chabón! –le dije.
–De nada, pibe.
Ahora está todo claro. ¿Quién inventó las conversiones implícitas? ¿Para qué dejar que la máquina decida cómo convertir un valor de un tipo a otro, si no sabe? Claro, recién cuando no puede, dice “no puedo convertir el valor varchar a datetime…”. ¡Pobrecita, no puede convertir! ¿Por qué no lo decís de entrada y dejás que yo haga la conversión desde mi programa? Qué te parió… Un amigo mío suele decir que los sistemas automáticos se equivocan automáticamente, y tiene mucha razón.
Ahora no tengo apuro, total, ya es de madrugada. Me preparo un café, paseo un poco por la oficina mientras me lo tomo, escuchando la vibración de los coolers de los servidores. Con toda tranquilidad, reviso el código, saco las conversiones implícitas y las reemplazo por conversiones hechas a mano; como Dios manda.
Compilo, instalo y pruebo. Ahora anda de maravilla. Miro una vez más a Papá Noel. Está inerte, pero alcanzo a ver que su manito tiene el pulgar apuntando para arriba, en señal de aprobación.
Voy caminando por la calle en busca de un taxi que me lleve a casa. En la vereda de enfrente, un cartel luminoso en la marquesina de un negocio indica la temperatura, la hora y la fecha: 26° – 02:30 – 12/13/2006. Me detengo a mirarlo unos segundos. Tras un certero piedrazo, el cartel que antes era luminoso ahora es sólo una franja oscura. “La próxima vez lo van a pensar dos veces antes de instalar sin revisar la configuración regional”, pensé.
Pregunta: ¿por qué el informe se comportaba de distintas maneras antes y después de que hablara Papá Noel?