Su nacimiento generó una gran conmoción entre los desarrolladores, ya que ninguno esperaba que con esa última y sencilla codificación, apareciera Max, el bug que cambiaría las cosas en ese momento y quizás para siempre.
Max no tenía la culpa de haber nacido, pero estaba feliz por ser parte de un grupo de tiquetes dentro de un tablero de control y aunque no entendía nada de eso, era feliz solo por existir. Quizás porque la misma alegría la recibió del ingeniero de QA que hábilmente descubrió a Max al ejecutar unas pruebas. Su sonrisa por descubrir aquel error de alguna manera la transmitió a Max, que vivía feliz en su nueva forma de tarjeta.
No obstante, los desarrolladores no veían a Max con la misma sonrisa. Aquella tarea era la última que faltaba para avisarle al cliente que habían terminado, con éxito, los meses de arduo trabajo y que ya era hora de mostrarle al mundo su gran creación, el sistema estaba listo. Hasta que Max apareció.
¿Por qué hoy?, se preguntaban los desarrolladores. No pudo haber ocurrido hace unas semanas cuando habían aparecido varios de los más duros bugs que habían tenido que atender. Sin embargo, pese a la gran molestia que les causaba ver una nueva tarjeta en su tablero, de color rojo y con forma de bug, decidieron no darse por vencidos. Debe ser algo sencillo de corregir, dijeron. Arreglemos esto y nos vamos a celebrar.
Max los escuchó hablar, al principio quiso sentirse mal porque lo estaban menospreciando. Él no tenía la culpa por nacer. Pero entendió que debía sentirse feliz y orgulloso por existir, ya que había una razón para estar ahí. Soy importante, se dijo.
Un desarrollador de nivel mid, muy valiente dijo, yo lo arreglo. Les aviso cuando termine. Tomó a Max, leyó tu título y sin esperar mucho tiempo, abrió el código de la aplicación y comenzó a probar cosas. Probaba y cambiaba y el tiempo seguía su marcha. Al cabo de unas horas, su líder técnico le preguntó si había terminado, a lo que el desarrollador respondió, no he logrado arreglarlo.
Sorprendido, el líder técnico le pidió a su programador más experimentado que le ayudara a su compañero, pensando que de esa forma lograría resolverlo más rápido. El programador senior no quiso ni siquiera volver a ver a Max. Le preguntó a su compañero qué había hecho y que faltaba y con esa información continuó la faena.
Mientras tanto, Max hablaba con otros bugs del tablero. Ellos le contaban todo lo que habían vivido ahí. Sam, el más viejo, con mucha experiencia, dijo: Chico, acá encontrarás toda clase de bugs, hay que tener cuidado con algunos ya que podrían bloquearte por mucho tiempo. Aunque creo que tú eres de los que ellos, señalando a los programadores, consideran más sencillos. Yo te digo algo chico, que los sencillos, son los peores. Los demás bugs temblaron con esas palabras, pero Max les dijo, no teman, soy inofensivo, he venido solamente para disfrutar mi momento, ser feliz.
Las horas pasaban y los dos desarrolladores seguían intentando diferentes alternativas para lograr encontrar la razón del problema. El correo que se supone debía llegar no aparecía por ningún lado, sin embargo, la lógica se veía bien, el código se ejecutaba, al menos eso lograban verlo al recorrer el código, pero no entendía ese comportamiento.
Mientras tanto, Max seguía conversando con muchos bugs del tablero. Se dio cuenta que existían diferentes estados, él tenía el estado Pendiente, otros decían En Progreso, también había una larga lista en Revisión de Código y QA y finalmente había varios con el estado Cerrado, y eran, de paso, los que menos hablaban, de hecho Max no logró saber nada de ellos hasta que el viejo Sam le explicó lo que significaban esos estados.
Entonces, dijo Max, yo debería estar en estado En Progreso, pero por qué sigo en Pendiente, a lo que Sam le indicó que los desarrolladores no acostumbraban actualizar los estados frecuentemente, lo que generaba confusión entre los bugs ya que sabían que estaban listos, ya no eran un bug, ahora eran una funcionalidad útil para el usuario, pero seguían apareciendo como pendientes. Por eso los bugs en estado Cerrado no hablaban, porque no se podían relacionar con los bugs, ya que ellos habían dejado de ser un bug hace mucho tiempo.
Max preguntó si todos los bugs traían un bolso como él, lo veía curioso, pero sabía que algo podía ser útil dentro de él. Sam le dijo que los programadores los llaman Archivos Adjuntos y que sabía que algunos bugs traían varios de esos a sus espaldas, algunos muy pesados, pero que el de Max era muy pequeño, quizás sea lo único que se requiere para corregirte. Al escuchar eso, Max dijo que él se sentía bien siendo un bug, no quería cambiar. Lastimosamente, dijo Sam, no podemos ser eternos, tarde o temprano debemos dejar de ser un error para convertirnos en una funcionalidad útil. Somos como las mariposas, primero son gusanos que nadie quiere y luego se convierten en ese bello insecto volador que todos admiran. En nuestro caso primero somos este feo error del que todos se quejan y luego nos convertiremos en una gran funcionalidad que ayudará a muchas personas.
En su continua curiosidad, Max seguía preguntando acerca de todo lo que veían en su tarjeta de tablero. Sam, dijo Max, por qué tienes ese número. Ah este que ves acá? Respondió Sam, es lo que los programadores llaman Estimación. Pero no todos tienen ese número, cómo lo ganaste, preguntó Max. Lo gané cuando nací, dijo Sam, hace mucho tiempo atrás. Si pones atención verás que los bugs más viejos lo tienen, pero poco a poco los programadores dejaron de asignarlo, por eso no lo tienes. Esa estimación era muy emocionante para nosotros porque teníamos una idea de cuando un bug dejaría de ser un error y celebramos cada vez que eso sucedía. Ahora, sin este valor, no sabemos cuándo un bug será resuelto.
Pese a no tener esa información, Max no dejaba de sonreír, sabía que había llegado a este mundo para cambiar algo, para ser útil. Y que algún día se convertiría en esa mariposa que dijo Sam.
El líder técnico, preocupado por no obtener una respuesta satisfactoria por parte de sus desarrolladores, decidió meterse de lleno para ver qué era lo que ese bug estaba haciendo que el proyecto no terminara. Decidió hacer una video llamada con sus programadores para escuchar qué tenían que decir. No había buenas noticias. El líder técnico les dijo, comencemos por el principio, leyeron bien lo que dice el bug? Sí claro, dijo el programador mid, dice que no llega el mensaje de correo electrónico. Y ese archivo adjunto no ha servido de nada?, preguntó el Tech Lead. En ese momento hubo un silencio entre los dos desarrolladores.
Ninguno quería hablar, hasta que el senior dijo, yo la verdad, no había abierto el tiquete, asumí que mi compañero había revisado todo. El otro desarrollador apenado dijo, yo leí el título pero no revisé los adjuntos. El Tech Lead, sin querer ampliar más el caos generado por ese bug a último momento, compartió su pantalla y abrió el archivo adjunto que los desarrolladores no habían prestado atención. El ingeniero de QA lo había adjuntado para mostrarles la diferencia entre el ambiente de pruebas y el ambiente de producción, de tal forma que pudieran, rápidamente, hacer el ajuste para publicar todo el sistema lo antes posible.
Atónitos, los programadores no podían creer lo que estaban viendo en ese adjunto. El dominio del servidor de correo tenía una letra de más, una simple “p”, que se había cambiado de último momento para hacer la distinción entre desarrollo y producción y la habían definido de esa manera para precisamente no confundir ambientes. Rápidamente el desarrollador mid hizo el cambio y le informó al ingeniero de QA que probara de nuevo.
El ingeniero de QA probó inmediatamente y le agradeció mucho al programador por realizar el cambio. El Tech Lead decidió calendarizar una reunión de retrospectiva para hablar de este caso y de varias cosas que no estaban bien en el manejo de los tiquetes en el tablero de trabajo.
Max seguía conversando con Sam y otros bugs cuando sintió algo extraño. Se elevaba en el aire como una mariposa y pasaba por encima de los demás bugs. Esperando siempre lo mejor, Max solo acataba a saludar a todos los bugs que dejaba atrás. El desarrollador, frustrado y encolerizado por lo que había pasado, no quería ver más ese bug que le había causado un dolor de cabeza y decidió moverlo en el tablero lo antes posible.
Max, feliz como siempre, sabía que su estado ahora era distinto, había sido finalizado, era una mariposa, una funcionalidad útil; pero en el fondo sabía que siempre seguiría siendo un bug, uno que nadie olvidaría.