viernes, 6 de junio de 2008

Panic Mode siempre a mano

Por desgracia panic mode no es un término que haya tenido yo el honor de acuñar; sin embargo, poco a poco me voy dando cuenta de que forma parte ya de mi vocabulario informático, de mi diccionario tecnológico elemental (...querido Watson). En mi caso, utilizo panic mode para definir aquella situación altamente embarazosa y de alto riesgo que se produce cuando hay que hacer una demo importante de una aplicación software (se podría aplicar a otros campos) e inexplicablemente el software que hasta hace cinco minutos funcionaba, misteriosamente deja de funcionar. ¿Os suena verdad? En el mundillo de los programadores, este escenario también se conoce como "efecto demo". Seguramente tod@s hemos vivido alguna vez esta situación que deja tus conocimientos de informática o de lo que sean a la altura del barro.

Te puede ocurrir en una demo ante tu jefe en la que te juegas el aumento de sueldo; imprevisiblemente puede aparecer cuando estás a punto de cerrar un contrato con ese cliente tan importante al que ya has engatusado con una buena mesa y buen vino; o peor aún, hace acto de presencia cuando estás a punto de "ilustrar" a tus propios compañer@s, con los que, con toda la razón del mundo, quedarás como el culo ;-).

La mayoría de las veces la catástrofe viene provocada por una tontería, un fallito mínimo que con calma descubriríamos en pocos minutos, pero lo cierto es que nos ha tumbado todo el sistema, y la situación y sobre todo, tu cara, lo dice todo. Es una situación agónica en la que por lo general la mente del programador se queda en blanco y no es capaz de pensar en ningún tipo de solución de forma rápida. Sólo quiere que termine el mal rato e irse para su casa...donde cenando o dándose un baño revitalizante se le iluminará la bombilla y se dará cuenta de por qué ha fallado su maldito software. Los juramentos en arameo que vienen a continuación forman parte del clásico pack del programador cabreado ;-).
A grandes males, grandes remedios, por lo que paso a explicar lo que hago yo para minimizar o solventar en la medida de lo posible estas situaciones nada agradables que sufriremos durante nuestra larga vida como desarrolladores. Significar que más que una solución, os voy a explicar lo que últimamente acostumbro a hacer para intentar remediar el temido efecto demo.

Se trata simplemente de tener preparada siempre una puerta trasera, una escapatoria como las del circuito de Mónaco. Todo esto viene gracias a que soy bastante fanático (queda mejor metódico) con los ficheros de configuración de las aplicaciones de software, de hecho, siempre intento que gran parte de la aplicación sea configurable por parte de los usuarios y que puedan cambiar ciertos parámetros de la aplicación sin tener que recompilar de nuevo todo. Es muy útil y versátil eso de que un usuario pueda poner los iconos e imágenes que más le gustan, pueda configurar el path donde se genera ese fichero temporal, o cuando se actualiza una URL a la que el programa llama, sólo tenga que cambiar ese parámetro, guardar el fichero y listo. Se dice que las aplicaciones que permiten esto soportan "cambios en caliente", es decir, que no hay que recompilar la aplicación para que coja los nuevos valores. El formato o base estándar de estos ficheros de configuración es en la mayoría de los casos XML, aunque hay variantes como los .properties de Java o los .config de Microsoft .NET.

A lo que voy es que en todas mis últimas aplicaciones he incluido en el fichero de configuración un parámetro denominado "PanicMode", just in case. Su funcionamiento es bien sencillo: si su valor es "0", el modo de funcionamiento de la aplicación es el normal, el esperado; en cambio, si editamos el fichero y ponemos el flag a "1", quiere decir que ha ocurrido una catástrofe, que activamos el plan de emergencia ya que estamos en pleno panic mode. Claro, no es sólo cambiar este valor y listo. ¿Qué implica poner este parámetro a 1? Que en el programa hemos preparado con anterioridad un camino seguro de ejecución por el que sabemos que no va a (debería) haber errores.

Imaginemos por un momento que en plena demo crucial para el futuro de la empresa nos tenemos que conectar a un web service externo securizado que nos devuelve una clave. ¿Qué ocurre si por lo que sea en ese momento se cae el web service o se cae nuestra LAN? Adiós demo y adiós cliente. Con lo fácil que es ser un poco precavido y emplear un poco de tiempo en guardar esa clave en el propio fichero de configuración (por ejemplo le llamaremos "PanicKey"), o en otro fichero temporal que tenemos preparado y escondido dentro de la maraña de carpetas del proyecto. Nadie se va a enterar, y aunque la demo puede que no quede tan espectacular ni dé tanta sensación de inmediatez, la aplicación funciona y te salva la papeleta...y la pataleta del cliente. Simplemente implica haber programado en la aplicación una sentencia condicional del tipo if (panicMode ==1). En este caso, la ejecución del programa estaría prevista, es decir, tendría un recorrido marcado por el que se saltaría la llamada al web service y cogería el valor directamente desde el fichero.

Os aseguro que esta clase de previsiones no es ninguna tontería y que te pueden sacar de muchos apuros. Además, no es muy costoso y haces que la aplicación sea muy configurable, cosa que muchos clientes y usuarios agradecen enormemente.

Aquí se despide un fan incondicional de la doctrina panic mode, una doctrina que todos los desarrolladores deberían admirar, venerar y por supuesto...¡implementar!

Así que ya sabéis, más vale panic modear que lamentar y llevarse malos ratos como esta señorita ;-)

SaludoX.

No olvides suscribirte al feed RSS para enterarte de todas las actualizaciones del Txoko de Lonifasiko .


4 comentarios:

des dijo...

¡Hola lonifasiko! Realmente es un muy buen truco para salvar una demo en el producto en que estés trabajando, yo hacía algo así (aunque menos elaborado).

Pero quiero hacer una puntualización... y es que, si esta configuración especial y el código necesario para que funcione, se deja en la aplicación cuando va a pasar a producción, podría ser un problema de seguridad, una puerta trasera que un atacante podría explotar.

Slds!

Anónimo dijo...

¡Aupa des! Ahí te he visto fino, velando por la seguridad ;-). Está claro, este "truco" es única y exclusivamente para demos, ferias, eventos, o en general, situaciones muy comprometidas en las que hay que enseñar "algo" y no funciona "nada".

Al pasar a producción, el parámetro "PanicMode" y sus amiguetes, así como el "código guiado" de la aplicación, han de ser historia, es lo primero que hay que acordarse de eliminar. Si no, imagínate que un usuario se encuentra en el fichero de configuración un parámetro denominado "PanicMode". A mí desde luego me entrarían ganas de habilitarlo ;-).

Gracias y saludoX.

des dijo...

xD! Tenía que decirlo, no fuera a ser que algo tuyo saliera en http://www.eeggs.com/ . Slds!

Miguel Loitxate "Lonifasiko" dijo...

Quita, quita, espero no ver nunca publicado un "huevo de pascua" sobre un software que yo haya programado. Podría ser una tumba, una mancha negra en el CV, aunque depende de que sea, podría resultar hasta gracioso ;-).

SaludoX.