Cuando me la presentaron ni siquiera tenía nombre.
—Esta es. —Kevin me miró a través de sus gafas de metal y se ajustó la gorra de béisbol negra que siempre llevaba puesta. «Es la luz, que me molesta» solía decir. —Aquí está todo: el código, las librerías y los ficheros. Toda tuya —y me señaló la pantalla con el dedo.
Horas antes había empezado mi primer día de trabajo como programador en esa empresa, una pequeña consultora informática. Me dieron una mesa y me presentaron a Kevin. Tiempo después supe que su verdadero nombre era Facundo, pero él quería que le llamaran Kevin. Sería mi jefe durante algunos años.
Yo era un programador muy experimentado. Tenía más de diez años de experiencia y me apasionaba programar. Había participado en muchos proyectos y no me importaba en absoluto seguir con mi faceta de programador. Por aquella época pensaba que programar era crear. De la nada creábamos artefactos que parecían tener vida propia y que obedecían nuestras órdenes. Era fascinante. De alguna manera, yo era un Dios todopoderoso que podía crear, no vida, pero casi.
A primera vista, la aplicación tenía muy buen aspecto. Estaba compilada, perfectamente estructurada y con buena documentación. Era una aplicación que gestionaba las reservas de habitaciones de un hotel de Madrid. Ya estaba en producción y querían ampliarla para todos los hoteles de la Península. Yo me encargaría del módulo de interacción con el usuario, y Kevin, aparte de supervisarme, de la parte más compleja: negocio y acceso a datos.
Después de varias semanas de análisis advertí que la aplicación era casi perfecta. Lo tenía todo: era modulable, sólida y elegante. Además, en producción respondía con tremenda eficacia. Por mucho que lo intentara, no encontraba ningún error de ejecución. Cierto que era una aplicación pequeña, pero lo aguantaba todo.
Por otro lado, Kevin había organizado una metodología de desarrollo. Todo estaba perfectamente documentado. Añadir cualquier funcionalidad era extremadamente simple. Siguiendo los pasos descritos por él, no había ningún problema.
—¿Qué te parece? —Kevin nunca me había pedido la opinión, pero ese día, después de la última subida a producción con los últimos cambios y con la evidencia de que todo saldría bien, lo hizo, subiéndose la gorra unos centímetros para mirarme a los ojos.
—Nunca he visto nada tan perfecto.
—¿Tú crees? —Kevin se acercó una silla vacía y se sentó. La silla cedió unos centímetros.
—Bueno, quizá habría que mejorar algunos aspectos si queremos llegar a la perfección.
—De acuerdo, toda tuya. —Se levantó bruscamente, movió la visera de su gorra y desapareció por la larga hilera de mesas blancas con pantallas planas.
Después de algunos meses, la aplicación había mejorado notablemente.
—Kevin —dije mientras me acercaba a su puesto de trabajo—, casi perfecta —remarqué la última palabra.
—¿Casi?
—Sí, le falta el nombre.
—Se llama Kamilah —respondió Kevin sin dejar de mirar a la pantalla.
—¿Kamilah?
—Sí, así la llamo yo.
—¿Y por qué no me lo has dicho hasta ahora?
—Quería esperar a que fuera perfecta. —Kevin sonrió y me guiñó el ojo.
Me gusta Kamilah
El cliente nos pidió una ampliación: que se pudiera hacer reservas para cualquier hotel y que estuviera abierta a todo el mundo. Se aumentó el equipo; de dos se pasó a veinte personas entre programadores, analistas funcionales y arquitectos. Kevin y yo dirigíamos y no tolerábamos ninguna acción o actividad que no fuera supervisada por nosotros y, de forma implícita, por la propia metodología. Si un programador o analista se saltaba alguna norma importante, simplemente lo echábamos del equipo. No se podía maltratar a Kamilah. Finalmente, la metodología se amplió a todas las fases del ciclo de vida de desarrollo, incluida la puesta en producción y la resolución de incidencias.
Cada tarde, cuanto todos se habían ido, me quedaba a solas con Kamilah. Abría el software de Testing y probaba todas las funcionalidades, las nuevas que se habían desarrollado durante el día y las que ya tenía. En silencio, pulsaba el play y miraba cómo se ejecutaban cada uno de los tests. Sentía un extraño placer cuando observaba en la pantalla las líneas que trazaban la actividad de Kamilah. Luego, cuando acababa la prueba, un gran punto verde aparecía en la pantalla. Era un sensación parecida a resolver un problema matemático y comprobar que la solución era correcta.
A principios de diciembre Kevin tuvo un accidente. Salió del trabajo y cruzó las vías sin mirar, quizá pensando en algún algoritmo complejo. No vio el tranvía que lo arrolló y murió en el acto. Nos dejó solos. La dirección me propuso como responsable máximo de Kamilah y acepté.
Kamilah se había ganado el prestigio y se nos pidió que aparte de reservas de hoteles, también gestionara reservas de aviones. Ella, que hasta ahora había sido una joven casi adolescente, quería convertirse en toda una aplicación adulta y con una gran responsabilidad. Era todo un reto para los dos. Por segunda vez el equipo aumentó. Meses después éramos más de doscientas personas, entre ellas, Iván, el nuevo arquitecto que debía sustituir a Kevin.
Kamilah crece elegante.
Iván era un joven de unos treinta años. Lo había fichado yo personalmente, me pareció sincero y ambicioso, y con muchas ideas nuevas. Un buen compañero para cuidar y hacer crecer a Kamilah.
—Tenemos que cambiar el modelo de datos —dijo Iván.
—¿Por qué? Eso no se puede cambiar así por las buenas.
—Mira. —Iván me enseñaba el nuevo modelo de datos que había generado una de esas modernas herramientas de ingeniería—. Mira, ¿lo ves? Con este modelo simplificaremos el mapa conceptual. Además, necesitamos replicar a Kamilah en varios servidores y poner algún balanceador.
—No, de momento nada de nuevo modelo de datos. Y a Kamilah no se la copia. Ni hablar.
Yo te quiero así, tal como eres, única.
Ver todos esos indicadores verdes me reconfortaba. En ocasiones repetía las pruebas varias veces y me quedaba hasta las tantas de la noche. Kamilah era perfecta.
El día del segundo aniversario de la muerte de Kevin hablé por primera vez a Kamilah.
—¿No le echas de menos? —le pregunté mientras daba un sorbo de cava—. Yo sí —le confesé después de comerme un nigiri.
Esa noche había comprado una botella de cava y sushi. Cenamos solos, quería celebrar las efusivas felicitaciones del cliente.
—En el nombre de mi empresa os hago extensivas nuestras felicitaciones por la aplicación de reservas. Estamos muy contentos con vuestro servicio. Y la verdad, quería venir personalmente a felicitaros. Enhorabuena, señores, un trabajo extraordinario —había dicho el presidente de la Compañía.
—Kamilah es una gran aplicación. —Quise que el nombre estuviera presente; se lo merecía.
Aquella noche pensé que había tenido mucha suerte en la vida. Ejecuté los tests y toqué con delicadeza la pantalla mientras ella me acercaba a la perfección. Encendí otra pantalla y entré en producción: ahí estaba otra vez Kamilah pidiéndome el usuario y el password. Ya nos conocemos, sonreí. Apareció el menú principal, elegante, robusto, amigable; parecía decir: «Aquí me tienes». Accedí a todos los submenús, a las herramientas de administración con sus iconos casi naifs que había diseñado una chica gallega de ojos tan vivos como sus diseños; accedí a su corazón, a la configuración, a los listados dinámicos, a todo, y ella me contestaba sin inmutarse, con determinación. Ningún problema. Yo nunca te fallaré, nunca, ¿lo entiendes? Siempre a tu lado. Yo también.
Kamilah, te quiero.
En septiembre del año siguiente caí enfermo. Una apendicitis me dejó postrado varios días en cama y sin poder ir a trabajar. Los días que me encontraba bien me conectaba a la red del trabajo y la visitaba. Pero no podía hacer nada: ni desarrollos ni pruebas; todo quedó en manos de Iván. «No te preocupes, está todo controlado» me decía.
Iván aprovechó mi ausencia para cambiarla. En apenas cuatro días aplicó todo aquello que durante años no había hecho. Cambió el modelo de datos y la capa de acceso a los mismos, y la replicó en varios servidores. Cuando volví ya nada era igual, se habían mezclado modelos y algoritmos, y esa capa había dejado de ser homogénea.
Me di cuenta la primera tarde después de mi reincorporación, la encontré extraña. No tenía buen aspecto, varios tests de pruebas habían desaparecido y otros fallaron. ¿Por qué te has dejado hacer esto? Kamilah lloraba.
Kamilah, ¿qué te han hecho?
Al día siguiente me encaré con Iván. Le convoqué a una reunión en la misma sala donde le entrevisté por primera vez.
—Tienes que revertir todos los cambios y no vuelvas a tocarla. —Iván me miró incrédulo.
—Eso es imposible. Todos esos cambios están en producción.
—Da igual. Tenemos que volver a la versión anterior. —Me acerqué a él y le miré furioso.
—No. —Iván se levantó dispuesto a abandonar la sala.
—Iván, te lo advertí, o cambias a Kamilah o…
—¿O qué? Mira, estás bien jodido. Hace tiempo que la dirección no se fía de ti. Últimamente desvarías demasiado, te cuesta evolucionar y no dejas que Kamilah crezca. Ah, y por cierto: nadie entiende qué coño haces cada tarde en la oficina. —Iván se fue sin esperar respuesta.
Esa misma tarde, todos los tests aparecieron en rojo y ella cayó. Tuve que reiniciarla varias veces, pero no respondía. Estaba claro que la habían cambiado de mala manera, la habían ultrajado y violado.
Al día siguiente, después del café, decidí que Iván sobraba. Se trataba de alejarlo de ella, y lo mejor era que desapareciera de la empresa.
Decidí boicotear a mi adversario. Yo era la persona que mejor conocía a Kamilah y no me costó nada manipularla para que unos cambios diseñados por él provocaran un desastre en productivo. Fallaron muchos procesos y miles de facturas desaparecieron. Las consecuencias fueron muy graves, la imagen de la compañía quedó manchada. Su cese fue fulminante, apenas pudo averiguar qué había pasado.
Kamilah y yo, otra vez solos.
No toleraría que nadie más le pusiera las manos encima, me pertenecía y punto.
Durante un par de años nada cambió, Kamilah se paseaba triunfal por los servidores con una tremenda elegancia, apenas rozaba los logs de errores.
La noche de su décimo aniversario le regalé una nueva interfaz gráfica. Había convencido a dirección para cambiar los viejos diseños gráficos por unos más modernos. A Kamilah le encantó y enseguida se acostumbró a los nuevas formas y colores. Intuía que era coqueta, pero no tanto. Recuerdo cuando la presenté en un congreso de consultoras en Madrid. La sala estaba abarrotada de miradas críticas. Yo salí triunfal. En media hora me comí al auditorio; ella, con su glamur, respondió con una eficacia insultante. Todos se rindieron a la belleza de Kamilah. Estaba muy orgulloso de ella.
A las dos y media de un viernes de primavera, Kamilah se quejó. Todo empezó con unas peticiones absurdas, como si algún usuario se hubiera vuelto loco; después, aumentaron de forma exponencial y fue atacada con millones de ellas, sin ningún sentido. Ella no pudo soportarlo. Cayó, y con ella, todos los subsistemas e interfaces.
—¿Qué está pasando? —gritó el director.
Fue un viernes negro. Durante la tarde, Kamilah se recuperó varias veces, pero las peticiones no cesaban y volvía a caer. No podía soportar verla de esa manera y tuve que retirarme varias veces para estar solo. Iba al lavabo, me echaba agua a la cara y volvía para intentarlo una vez más, pero nada podíamos hacer. Cerca de la medianoche, decidimos subir un parche para mejorar la seguridad, un parche sencillo, simplemente limitar el número de peticiones. Era como admitir que Kamilah ya no podía, que había perdido la fuerza de los inicios y se había quedado obsoleta frente a los avances tecnológicos. Ya no podía atender peticiones de tablets, móviles y ordenadores a la vez. Ya no eres de este tiempo. Por primera vez la vi cansada, lenta, sin ganas de ejecutarse en ningún servidor, sin ganas de vivir.
¿Qué te pasa, Kamilah?
Aprovecharon el incidente para lanzar la idea de que había que sustituirla, y meses después, ficharon a una gran empresa consultora para buscar una alternativa. Yo no quería rendirme, y después de aquel viernes negro, me quedaba cada noche después de la ejecución de los tests a cuidar de Kamilah. Le limpiaba la memoria, depuraba las bases de datos, comprobaba si tenía suficiente espacio en el disco duro, miraba que todos los procesos se ejecutaran correctamente. Y no solo la cuidaba, sino que también buscaba mejoras con el fin de que no tuvieran razones objetivas para sustituirla.
—No volverá a suceder jamás —le había dicho al director. Y fue cierto: nunca más sucedió algo parecido, pero Kamilah iba cada vez más lenta; a pesar de mis cuidados y mejoras, no salía de su profunda depresión.
Una tarde de verano, cuando apenas había gente en la oficina, el director se acercó a mi mesa.
—Vamos a sustituir a Kamilah. Mañana tenemos una reunión para establecer la planificación definitiva.
Se acabó. Me levanté y me fui sin decir nada.
La migración duró más de un año. No fue fácil; ella tenía características que fueron muy complicadas de sustituir, y el presupuesto se disparó.
Un jueves de enero se produjo la sustitución definitiva. Dejó de funcionar para dar paso a la nueva aplicación. Durante unos tres meses, la mantuvieron operativa para consultas y después la desinstalaron definitivamente.
Me la llevé a casa y la instalé en un magnífico servidor que había comprado para la ocasión.
No quiero perderte, Kamilah.
Cada noche la mimaba, simulaba que centenares de usuarios la utilizaban, que era útil, como si estuviera en pleno rendimiento. De alguna manera, quería que ella pensara que se encontraba en el servidor de siempre, atendiendo miles de peticiones.
Nunca perdí la esperanza de que la nueva aplicación fracasara, de que los usuarios se quejaran y me suplicaran la vuelta de Kamilah, y ella tenía que estar preparada para lo mejor, así que durante la jornada laboral, yo intentaba boicotear la nueva aplicación. Llamaba a usuarios buscando críticas que no encontraba. Lanzaba procesos complejos para provocar errores, pero la nueva aplicación apenas fallaba. Pronto perdí la esperanza.
Ella agonizaba. La falta de actividad real había provocado que los procesos se corrompieran aún más, y lo que al principio era lentitud, se había convertido en ineficiencia total. Una noche fallaron todos los tests, hasta los más básicos, y todos los procesos cayeron en cadena. En la pantalla aparecieron decenas de alarmas. No podía soportar verla así. No se merecía esto, debería estar en un gran servidor gestionando millones de datos reales, respondiendo a miles de usuarios, y no estar inmersa en una farsa de usuarios y datos en un ordenador doméstico, eso no era vida. Lo intenté todo, reactivé los procesos, inyecté datos a la desesperada, pero Kamilah no reaccionaba. Exhausto, me quedé dormido en la mesa hasta que me despertó una música. Eran cinco notas que se repetían constantemente. En el centro de la pantalla apareció el mensaje:
Morir
es un proceso como cualquier otro.
Yo lo hago excepcionalmente bien.
Por los altavoces seguían sonando cinco notas incansables. Me senté y con las yemas de los dedos acaricié la pantalla.
No, por favor, Kamilah.
Jamás supe de dónde había salido ese mensaje. Solo pude descubrir que su origen estaba en una librería codificada, en cuya cabecera, Kevin había escrito:
No hay datos, no hay procesos, no hay nada. No vale la pena existir. Es el fin.
Ya entrada la madrugada, copié toda Kamilah en una tarjeta de memoria: código, pruebas, ejecutables, documentación, correos y actas, absolutamente todo. Ella dormía en apenas un pequeño plástico que rompí en trocitos, quemé y convertí en cenizas. Mas tarde, fui a una playa muy cerca de Barcelona, a la que había ido con mis padres cuando era un niño. Me subí a unas pequeñas rocas donde las olas rompían suavemente. En uno de esos cuencos rocosos lancé las cenizas, que quedaron flotando sobre el vaivén de las olas, que las empujó mar adentro.
Hasta siempre, Kamilah.