Professional Documents
Culture Documents
Todo esto que cuento no puede parecerle a nadie ni medio complicado. No lo es.
De hecho, las operaciones se parecen mucho a un carrito de la compra. Sin
embargo, de un tiempo a esta parte, la aplicación se ha ralentizado hasta
límites inaceptables.
La base de datos no es. Aquí mi colega el MKII ha sacado los diplomas Emecé, los
ha puesto encima de la mesa y ha tuneado la base de datos puesto que el servidor
de bases de datos fue forjado en Mordor. De hecho, la base de datos responde
ahora como un puto tiro. Me voy a tener que hacer un Emecé para aprender cosas
tan chula. No quisiera quitarle méritos a MKII por nada del mundo. Es un tío
formado y serio. Pero que digo yo que se tiene que notar el aumento de
rendimiento si pones índices coherentes a las tablas de la base de datos. Aunque
sea uno. Porque no tenía ni un mal índice. Nada.
La memoria no era tampoco. Había memoria libre para aburrir. El disco tampoco
estaba muy ocupado, la verdad. La red local estaba tocando las palmas y los
enlaces al exterior relajados y con capacidad testada. No era tampoco.
Aquello tenía pinta de que iba a ser el pin siete del RJ45 o que habíamos
encendido el servidor con el dedo en ángulo de doce grados en lugar de
dieciséis. Vamos, que sólo nos quedaba un sospechoso: el programa.
Nos miramos fijamente a los ojos. Él con el puño aún en la mesa. Yo, con la mano
a diez centímetros de la cabeza y la palma hacia arriba.
El ingeniero ingenioso se fue con las manos en los bolsillos as fast as he came.
Dejando en mi correo electrónico un precioso informe de dos líneas redactado al
vuelo con su Ladrilloberry. Eso es un usuario móvil avanzado, amigos.
Casi podía apreciar cómo la ira se abría camino desde la vésicula biliar de
$Hyperboss hacia su garganta y cómo el hombre, en un esfuerzo de autocontrol la
retenía ahí.
-Wardog… ¿cómo se llama eso que decís los informáticos para tocar los programas?
-¿Dedo? – juego con él.
-No, coño. Lo de programar.
-Ah. Código fuente.
-Si os consigo el código fuente, ¿podéis mirar qué coño le pasa a la aplicación?
-Podemos intentarlo. Pero no le van a dar el código fuente.
-Ya te digo yo que sí me lo dan.
Abro primero “srv” y veo un proyecto de Mordor Cé Cross Plus. Abro el proyecto y
ante mí se muestra en toda su grandeza. Siempre me maravillo cuando veo un
programa hecho con un lenguaje orientado a objetos que no implementa ni una
clase. De hecho, el programa principal parece ser un monolítico fichero. Todo
corre en un gigantesco loop cuya única condición de salida es, al parecer, un
valor uno en una variable de nombre “salir”.
Empiezo a leer mientras MKII gestiona cosas, pero tanto me oye bufar que se trae
la silla a mi puesto y se pone a leer en la pantalla.
-Mira, tenemos seis scrolls completos sólo para las variables globales. No está
mal, ¿eh?
-¿Y por qué hay tantas variables globales?
-Y yo qué sé. Espera, espera, terrible sospecha. Mira, ahí está.
-¿El qué?
-¿No lo ves? ¡Todas las funciones devuelven void!
-¡No jodas!
-¡Claro! ¡Son unos cracks! ¡Si todas las variables son globales no hace falta
pasar parámetros ni devolver valores!
-Pero eso no es eficiente.
-¡Porque tú lo digas! ¡Es súper efectivo! ¡Efectivo que te defecas haciendo
estrellitas!
-¿Hablas en serio?
-No. Ah, mira, ¿ves? Aquí hay funciones que no devuelven void. Desde luego, qué
malpensado somos.
-Oye, pero esa función…
-Sí, ¿qué pasa? Suma dos variables globales y devuelve el resultado. Y te callas
que te veo un poco talibán del Mordor Cé Cross Plus.
-¿Hablas en serio?
-Que no, coño, pero es que si no relajo tensiones con las coñas me van a empezar
a sangrar los ojos.
-Espera, espera, ¿qué es eso?- me dice MKII abriendo mucho los ojos y señalando
la pantalla. Me da palmaditas con su mano helada en el antebrazo.
-Oh. $deity desdoblado.
Con los ojos a punto de salírsenos de las órbitas nos levantamos sin decir nada
en busca de bálsamo caliente. Por el pasillo nos encontramos a $Hyperboss. Le
miramos con nuestra cara de espanto.
Salimos corriendo gritando mucho con los brazos levantadaos. Bueno, esa fue mi
primera intención; y sé que MKII me hubiese imitado, pero no. Permanecimos con
nuestra cara de espanto estoicamente.
MKII y yo nos miramos inmediatamente. Claro, por eso las etiquetas de los gotos
se llaman Labelx. Trozos de manual.
Buscamos la llamada a print. Resulta que no, que no se puede sobreescribir dicha
variable de entorno porque resulta que la llamada a print está detrás de un
bucle del que sólo se sale si otra variable de entorno está a cero: la variable
“PUEDIMP”. Así, tal cual la escribo. Cuando PUEDIMP tiene el valor apropiado (no
parece ser booleana, sino otra cosa, tal vez trileana con valores sí, no y psá)
se imprime y se cambia de nuevo el valor para indicar que está dispuesta a
imprimir otra vez. Un semáforo un poco rústico y sobre todo, muy seguro.
-La madre que los parió. ¿Y tú sabes lo que ha costado esto, Maqui?
-Lo sé. Y por eso sufro más que tú.
-Al comercial de esta casa hay que juzgarlo en Estrasburgo.
-En fin. Sigamos. Esto está feo, pero no afecta a la velocidad. Vamos a ver el
cliente qué hace.
No pasa mucho rato hasta que veo el problema de lentitud de todos los clientes.
El problema residen en la comunicación con la base de datos.
-Muy fácil: iteramos todos los valores de la consulta y nos quedamos con el que
nos coincida. ¡Es genial!
-¿Cómo? ¿Cómo?
-¡Es genial! Y si necesito una subconsulta… ¡repito el proceso!
Una risa nerviosa se apoderó de nosotros y nos tuvo fuera de combate durante una
hora.
¡Bimbambidubi! ¡Dubi!
-He llamado a unos cuantos usuarios para comprobar que va bien y me han dicho
que ya va como al principio. ¿Qué coño le pasaba al programa?
-Técnicamente a este problema se le conoce como “Rendimiento diferencial demo-
producción” o “Mal del becario”.
-¿Y eso qué es?
-Pues que si un programa hace lo que tiene que hacer no necesariamente está bien
hecho.
-Explícate.
-El programa fue bien cuando tenía pocos datos que manejar. Conforme la base de
datos creció, resultó no estar bien preparado para manejar tantos datos.
-¿Y cómo lo habéis solucionado?
-Limitando los registros devueltos por la base de datos. ¿Pero por qué le
interesan los detalles técnicos? Normalmente ésto le importa una mierda.
-Para decírselo al ingeniero de Bullshitsoft.
-Ah, yo les mando un informe.
-¿No te importa?
-En absoluto.
-Vale, gracias, Wardog.
-De nada. Oiga, una curiosidad. ¿Cómo consiguió el código fuente tan rápido?
-¿Conoces a Astaroth?
-¿El abogado?
-Él se lo trajo en un pendrive en dos horas.
-Joder.
Yo seré BOFH, pero éste no veas lo cabrón que llega a ser en el mundo real.
Astaroth es a los abogados lo que un volcán a un mechero de gas. Es capaz de
acojonar a Satanás.
Para: jefazos@bullshitsoft.es
CC: higiniero@bullshitsoft.es
Enviar.