El Bug

Estoy hasta las manos. Al horno con papas. Me van a mandar para abajo y no tengo forma de zafar. Hace tres días que me avisaron de esta reunión y desde ahí no pude pegar más un ojo. Me dijeron que va a estar todo el equipo entero para discutir este “critical bug” en la parte del código que programé yo. Hasta el jefe viene, el supremo.

Es verdad, yo hice el commit esa vez, no lo voy a negar, pero ¡fue hace tanto! Ya ni me acuerdo que hice. El software siguió corriendo y los boludos de QA no dijeron nada. Ahora en producción ya no se puede tocar, lo lamento.

Yo siempre digo que a mi código lo respaldo con mi vida, pero en este caso no es mi responsabilidad, tengo como dos managers arriba. Ellos son los que tendrían que dar explicaciones. Estoy seguro que si hubo un error de mi parte fue porque ellos no paraban de romperme las bolas con boludeces. Que los gráficos de los arbolitos esto, que el comportamiento de los pájaros lo otro. Boludeces, te digo. Pero no hay caso, no les podía decir nada. Lo que pasa es que estos tontos se creen que tienen la palabra divina y que lo que dicen ellos es ley. Es difícil trabajar con gente así. Típicos “middle management”.

Pero llegó el día de la reunión y ahí estaba yo, sin nada preparado y listo para aceptar las consecuencias. O no. También andaba con ganas de intentar disfrazarlo como que fue algo a propósito. “¿Un bug? No, es una feature. Un easter egg.”

Cuando les pedí a mis compañeros que me acompañasen todos se hicieron los boludos. “En el memo te nombraban a vos nomás. Andá que es tarde y, no les gusta si los haces esperar”, me dijeron. No sé cuantos años laburando acá adentro, bancándome las opiniones y comentarios de todos estos inútiles para que a la hora de la verdad me dejen solo. Tendría que haber hecho como Gabriel, que entró a laburar cuando entré yo, pero se fue para arriba pisando cabezas. Total acá te perdonan fácil, como dice el slogan. Ahora tiene la oreja del Jefe y todos le sonríen.

Subí solito con mi alma hasta el último piso, porque la reunión era allá bien arriba, y golpeé la puerta. “Adelante”, dijo una voz grave. “Pasá”.

Abrí la puerta medio temeroso y me encontré con una oficina enorme, con una mesa de roble larga llena de sillas vacías a los costados. Y en la cabecera estaba Él.

Me sorprendió. Esperaba que hubiera más gente. “Pasá”, Me volvió a repetir. Avancé y me senté en un silla no muy cerca, manteniendo distancia. Enseguida me arrepentí de la elección, parecía medio ridículo estar tan lejos, así que tiré el cuerpo para adelante lo más posible como para disimular.

“¿Seguro que estás bien ahí?” me preguntó.

Dudé un poco más y me di cuenta que ya era demasiado tarde para decir que sí. Así que me levanté y elegí otra silla, un poco más cerca pero igual de insatisfactoria.

Nunca fui bueno para arrancar a hablar, y menos en situaciones así. Lo primero que se me ocurrió lo dije. “Mire don… Dios, yo no sé cómo llegamos hasta acá, pero ahora no se puede hacer nada, no fue mi culpa”.

“Tranquilo hijo mio, eso ya lo sé”, contestó tratando de hacerse el amable. “No estamos acá para buscar culpables, que los hay, sino para buscar soluciones”

“Y… volver todo para atrás ya no podemos. Demasiado tiempo en el server de producción, sería como hacer un reset y arrancar de cero. Los backups los tenemos, pero son tan viejos que no sirven”. Me rasqué la cabeza tratando de encontrar que más decir. “A menos qué … pero no, sería mucho trabajo… ir uno por uno editando usuarios y borrando lo que está mal. De locos. Tardaríamos un montón y mientras tanto estaría todo frenado. Y hay que cambiar no sólo los usuarios sino miles de propiedades, es de no creer todo lo que generó ese bug”.

“Arranquemos por el principio, contame un poco cuando fue que se manifestó este bug, y como no nos dimos cuenta antes” dijo, aunque la última parte significaba como *ustedes* no se dieron cuenta antes. Si él es todopoderoso.

“Mire don Dios” dije, porque ya arranqué a llamarlo así antes y no quería que parezca que había sido un error. “¿Te molesta si te tuteo? no se como llamarte”.

“El nombre es lo de menos, yo soy el que soy. Tuteame si querés”. Dijo, y anotó algo en una libretita. Dos cosas se me pasaron por la mente en ese momento, primero, que carajo anotaba, y segundo, de donde mierda sacó la libreta si recién no la tenía.

“El tema es así. No se bien cómo y no se bien por qué pasó lo que pasó, yo no hice nada raro. Mis cambios en ese momento eran cosas simples, boludeces” dije. Pero enseguida me di cuenta que no le gustó la palabra boludeces. Vi de reojo que levantó una ceja pero no dijo nada. “Todavía no me daban tareas complejas, para esa fecha tuve que cargar un simple update de fin de año, algunos eventos scripteados nuevos… lo normal a un cambio de versión mínimo. Tareas de rutina”.

“De rutina” repitió él. “Pero.. ¿éste individuo que apareció?”

“No sabemos como se generó, no está claro. Algún tipo de duplicación, porque no tiene procesos padres como el resto. Eso ya no es mi área, me parece que podríamos llamar a los de QA para que nos ayuden a entender”. Casi se me escapa la frase los boludos de QA, porque eso es lo que son. Se creen que esto es un juego y se la pasan haciendo barbaridades y molestando gente con la excusa de que están probando el sistema. Control de Calidad las pelotas. Abel y su tropa, uno más boludo que el otro. Bien que les gustó toquetear eventos alrededor del bug.

“El informe de Abel y su tropa ya lo tengo, ahora quiero escuchar tu verdad”. Dijo interrumpiendo mientras yo seguía dándome máquina.

Usó la palabra tropa, y yo me quedé duro. Cierto que este turro puede leer mis pensamientos… Uy otra vez. Perdón Jefe. Prosigo. “Alrededor del ciclo número 935mil apareció un individuo, que como dije, no sabemos bien de donde salió, porque cuenta madre no tenía, que empezó a realizar actividades extrañas.”

“¿Cómo cuáles? Preguntó, aún sabiendo la respuesta. Si estaba distraído al menos eso se lo tendrían que haber contado en el informe de Abel. ¿O los tarados no saben ni hacer un informe?

“Primero tenía las stats un poco tocadas. Tenía un valor de carisma por sobre el límite de lo que aplicábamos por esa época. Y tenía algunos permisos y skills especiales.” No quise entrar mucho en detalle, evitando pensar en la parte de código que yo tendría que haber hecho para tener en cuenta esas posibilidades aunque fueran teóricamente imposibles. Siempre se puede hacer comprobaciones extra, pero después el código anda lento y eso también es responsabilidad de uno. “En resumen, el tipo podía llegado el caso aplicar heals y cancelar spells de estados que deberían ser fijos, como ceguera o incluso paraplejía. Después en un momento no sé como hizo, pero duplicó unos objetos con el mismo ID y generó nuevos, es decir glitcheó unos panes y modificó uno vinos a partir de agua.”
 
“¿Y el Antivirus?” dijo Él, con las preguntas ya estudiadas.

“El Antivirus corrió bien, fue resolviendo los problemas y eliminó el individuo. Pero el tipo volvió tres días después. No sabemos si se hizo el muerto o si levantó un backup duplicando una instancia anterior. Pero duró poco, el Antivirus lo enganchó de nuevo y el tipo no volvió más. El tema fue lo que vino después”.

“Las repercusiones…”

“Las repercusiones, sí, con eso el Antivirus no pudo hacer nada porque no había agentes extraños. Era gente normal reaccionando así.”

“Gente normal que se comportaba bajo tus reglas”. Dijo levantando un dedo acusador.

“Vuelvo a repetir que en ese momento yo no era responsable. Y no eran mis reglas. Que ahora yo esté a cargo del área Reglas de Comportamiento, no quiere decir que haya programado el código original” me defendí enojado. Que se cree este ñato. Me viene a acusar a mí, lo voy a cagar a piedrazos.

“Que ahora seas el responsable del área significa exactamente eso, no hubieses aceptado el puesto si no podés hacerte cargo de la responsabilidad. Es tu deber responder por todo el área; pasado, presente o futuro. Este no es un trabajo así nomás. No es que uno trabaja 6 horas y después se va a la casa y se olvida. Acá todos tenemos una responsabilidad. ¿O vos te crees que yo cuando llegan las cinco de la tarde puedo desconectarme e irme a jugar con mis hijos o mirar televisión? Que cuando al reloj se le ocurre, puedo cortar y a otra cosa mariposa. ¡No! Todos los santos días, 24 horas por día. Siempre hay alguien pidiendo ayuda. Dios, ayudame a conquistar a fulanita, Dios ayudame a frenar esta tormenta. Dios, ayudame a que no se den cuenta que me estoy violando este pebete. ¡Siempre hay algo!”

Creo que toqué un tema sensible, porque no paraba y yo no parecía ser el destinatario de sus comentarios. “Bueno. Para algo está la gente del Help Desk, tenés que aprender a delegar responsabilidades también, y confiar en su trabajo” me animé a decir.

“Los del help desk son unos ineptos, que la mitad de las cosas las borran sin responder y la otra mitad me la reenvían a mí. No solucionan nada. El día que pase algo grave si no es porque yo estoy atento ni me entero. Perdoname la confidencia, pero yo creí que vos eras distinto. Por eso mi enojo, por eso mi desilusión”.

La palabra desilusión me dolió. Pero no quise darle letra de nada así que me quedé callado.

Él siguió diciendo: “Yo creí que vos tenías puesta la camiseta, como yo. Que estabas metido a full con este proyecto. Acá no importa quien trabajó más o quien trabajó menos. Acá lo que importan son los usuarios”.

“Los usuarios son los que hicieron todo este quilombo” dije casi sin querer. “Armaron un set de reglas dentro de las reglas, armaron religiones, estructuras y gran parte de la culpa es de los boludos de QA, perdoname la confidencia, que en vez de flaguear el problema rápido se dedicaron a tocar individuos y darles manija. Así cualquiera cree que lo que pasó es válido, yo los entiendo a los usuarios”.

“¿Y entonces que hacemos? No queda otra que resetear? ¿O volver a ese punto en el tiempo?”

“Siempre podemos lanzar el evento Apocalipsis, sería interesante ver como responden, y nos sirve tener la información para el próximo ciclo”

“Es verdad, nunca lo llegamos a usar, siempre pasa algo antes. ¿Pero estás seguro que está bien programado? ¿No sobrevivirán?”

“Ese evento lo venimos trabajando hace un montón de tiempo. Tenemos el update listo, con las texturas y los jefes finales nuevos. Hay desastres naturales, zombies, infecciones… hasta lo tenemos a Donald Trump a cargo de misiles nucleares. Va a estar entretenido, hay que ver cuanto aguantan.”

Volvió a ponerse serio para dar la orden y dejó de tutearme. “Bueno confió en usted entonces, arránquelo nomás, pero haga un backup por las dudas”.

“Despreocupesé Jefe. No puede fallar le digo, yo a mi código lo respaldo con mi vida”.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.