lunes, 18 de febrero de 2008

El síndrome del código mortal

Este post tiene su origen en el telefilm que empecé a ver en la pesada sobremesa de ayer domingo. Estaba empezando a cerrar los ojitos, cuando de repente, una voz en off proveniente de la tele pronunció de forma más que impactante: "Código mortal". ¿A que suena cañero? Era el título de la pseudo-película "de punto negro" en cuestión, pero a mí que soy informático me dejó traspuesto, y dejando a un lado el tema de la traducción mejor o peor del título original, en seguida asocié el título con esos marroncillos que todo informático ha heredado alguna vez; sí, esos pequeños trozos de código llenos de trampas inesperadas y auténticas bombas de relojería, en pocas palabras, código mortal.

Y es que a todos nos ha tocado alguna vez bailar con la más fea. Aparte del sentido literal que pueda tener la frase, me refiero a cuando te encasquetan un código:
  • que no es tuyo y que ha sido desarrollado por un programador "aficionado" que ya no está en la empresa
  • que ha sido escrito en un lenguaje de programación del paleolítico superior
  • que no funciona ni de coña
  • en el que la documentación brilla por su ausencia
He aquí los cuatro pilares básicos del código mortal, lo que nos convierte en HRADs, es decir, en High-Risk Application Developers. No vamos a negarlo, este tipo de herencias tecnológicas están a la orden del día en cualquier empresa; pasen y lean la siguiente fábula tecnológica:

Jefe: "Oye Miguel, ¿te acuerdas de aquella mini-aplicación que hizo Paquito en Visual Basic? Sí, la que acabó de desarrollar el muy cabrón justo antes de irse a la competencia...Era un módulo que se comunicaba con el ERP, y blablabla...".

Miguel (para mis adentros, cruzando los dedos mientras el jefe sigue hablando): "Menuda ponzoña de aplicación, nunca llegó a funcionar...".

Miguel: "Sí, algo me suena....pero aquello al final se dejó porque no funcionaba, ¿no?".

Jefe: "¡Bah! No creas que iba tan mal...la idea era muy buena...además, no te preocupes porque Paquito era muy ordenado y dejó un Word explicando al dedillo el funcionamiento interno de la aplicación; en seguida te traigo el documento para que le eches un vistazo. Ya sé que no te gusta mucho Visual Basic, pero seguro que si te pones, en un par de días haces birguerías con ese código. Además, siendo el cliente que es, habrá que hacerlo, ¿no crees?".

Miguel (para mis adentros, visiblemente contrariado): "¿Ordenado? ¡Pero si sólo hay que ver la mesa que tenía el jodío! Y al cliente..., al cliente ¡que le den por culo! Joder, es que ¡siempre acabamos bajándonos los pantalones ante los mismos de siempre!"

Miguel: "Hombre, yo no lo veo tan fácil. Es más, veo muy complicado volver a poner en marcha aquella aplicación, ha pasado mucho tiempo, no es mi código, el cliente ha migrado su base de datos ..., por cierto, ¿para cuándo sería?"

Jefe: "Para finales de la semana que viene, SIN FALTA. Por cierto, aquí tienes el Word del que te hablaba. Ponte desde ya mismo con eso y mañana me paso y me cuentas, ¿ok? ¡Venga Miguel, ánimo, que tú puedes!".

Miguel (para mis adentros, en modo ira = true): "¡vrhfrejbfe kjrebfwebrce rjkfbwkjrbf fjbwer klernoqr...!" (la traducción de este bloque son una serie de juramentos en afgano-talibán).

Miguel (alto y claro, cuando el jefe ya no puede oir nada): "¡vrhfrejbfe kjrebfwebrce rjkfbwkjrbf fjbwer klernoqr...!" (la traducción de este bloque también son una serie de juramentos en afgano-talibán).

Como diría un amigo mío, si es que somos putas del teclado ;-). Desgraciadamente, de forma paralela al final de esta fábula suele empezar el calvario particular del programador. Por ello, con el firme propósito de evitar el síndrome del código mortal a otros compañeros que en un futuro tengan que leer o modificar las (eficientes ;-)) líneas de código que actualmente escribo, al igual que hice en Septiembre del 2007, prometo que voy a programar cada día mejor. Y sobre todo, voy a pensar en otros compañeros de profesión y voy a documentar todo lo que pueda en el propio código, que es donde muchas veces más se echan en falta los comentarios explicativos. Va en serio...espero que vosotros también os unáis a esta cruzada anti código mortal.

SaludoX.


6 comentarios:

BeLioN dijo...

Yo como siempre, aportando "valor", jeje

Se te ha olvidado comentar una herramienta imprescindible en esto de comentar código ... THE COMMENTATOR

When a star footballer makes an winning play, he doesn't stop to explain it to the team beforehand. He makes the move. Scores the points. Gets on with the game. No time for talk.

Im-prezionante, con sus múltiples modos y personalidades. Un ejemplo para comprobar sus virtudes:

FUD=9, verbosity=6

int sum = 0;
//avoid using the reverse "i >= 0; i--" style loop here,
//it would obviously be more efficient, but blows up in gcc
//under linux and solaris
for (int i= 0; i < a.length; i++) {
//always use += where possible, its faster
sum += a[i];
}

BeLioN dijo...

Se me había olvidado el link:

BeLioN dijo...

Oooops, prometo que en la vista previa se veía bien:

http://www.cenqua.com/commentator/

Anónimo dijo...

Está claro, un poco de humor nunca viene mal en situaciones de tensión y crisis ;-). Eso sí, al "heredero del marrón" al principio le hará ilusión ver que el código está comentado, pero cuando vea que está comentado con el humor de Ballmer a tope y las profanaciones religiosas activadas, puede pasar de la risa al llanto en cuestión de segundos ;-). Ni al peor enemigo...

SaludoX.

Jack dijo...

"voy a documentar todo lo que pueda en el propio código,"
No podrás, por que llegará tu jefe y te dira:
-Miguel, esto tiene que estar para ayer. Asi que deja la documentación para despues.
Cuando termines y te digas: "voy a documentar ahora", llegará tu jefe y te dira:
-Miguel, esto otro tiene que estar para ayer, etc etc.

Anónimo dijo...

Gracias Jack por ese comentario tan lleno de sátira como de cruel realidad. Es triste admitirlo, pero suele ser así. Siempre hay algo más importante que dedicar un tiempo a documentar el código fuente y dejar todo más o menos bien "ordenadito y guardadito".

Por lo menos lo seguiremos intentando...hasta sintamos el aliento del jefe en la nuca ;-).

SaludoX.