¡Bienvenidos coders!
RSS

3 abr 2007

Programación ZEN

En el sitio http://www.softwarereality.com/ salió un artículo titulado “How to Choose a Cool Name for a Software Process” (cómo elegir un nombre “cool” para un proceso de software). Vale la pena leerlo, pero para quienes no tengan ganas, hago una síntesis: si usted está inventando su propio proceso de desarrollo y quiere que aparezca mencionado en libros y artículos, lo más importante es encontrarle un nombre “cool”.

Siguiendo ese consejo, yo inventé una metodología, y –siguiendo la filosofía de este blog– la bauticé simplemente “Programación ZEN”. A continuación, una breve descripción de las características de esta revolucionaria metodología.

ZEN (zero engineering necessity) es una metodología que realza los principios espirituales del desarrollo de software, contribuyendo a lograr la comunión de almas entre clientes y desarrolladores. Se basa en cinco valores principales:

* Crecimiento espiritual
* Armonía con el universo
* Auto-conocimiento
* Amor al prójimo
* Fe (en uno mismo y en los demás miembros del equipo)

Un proyecto de desarrollo ZEN se organiza en iteraciones, cuya duración es totalmente variable, y depende únicamente de la necesidad que sientan los usuarios o clientes de pedir nuevos requerimientos, o bien de implementar requerimientos pedidos con anterioridad.
La programación ZEN establece un conjunto de prácticas que deben cumplirse en su totalidad (esta metodología no puede implementarse parcialmente) y son las siguientes:

* Reunión de descubrimiento: al principio de cada iteración, el equipo de desarrollo se reúne con los usuarios en una habitación sin ventanas, iluminada sólo por una vela. Todos se sientan en el suelo en posición de loto. Sólo hablan los usuarios; los miembros del equipo de desarrollo sólo emiten sonidos suaves como de un mantra, y pueden permanecer con los ojos cerrados. Para poder tomar la palabra, cada interesado debe hacer sonar una campana y expresar sus ideas, intereses o sueños con respecto al sistema. Al concluir, debe decir: “Sabrá el desarrollador ver la realidad del sistema más allá de la imperfección de mis expresiones”. Esta frase indica que otro puede hacer sonar la campana y hablar. La reunión dura hasta que la vela se consuma en su totalidad, sin importar que los usuarios hayan o no alcanzado a decir todo lo que querían, o bien se hayan quedado callados mucho rato antes de consumirse la vela. Al concluir la reunión, los miembros del equipo de desarrollo habrán logrado ver en el corazón de los usuarios la perfecta funcionalidad que debe tener el sistema a desarrollar. No se utilizan documentos de ninguna índole para registrar los requerimientos; éstos quedan grabados en la mente colectiva del equipo de desarrollo.

* Meditación grupal: el equipo de desarrollo lleva a cabo una hora de meditación grupal al principio de cada jornada de trabajo, para liberar a sus almas de todo el bagaje de energías externas absorbidas desde la jornada anterior. Luego de la meditación grupal, el equipo estará conectado formando una mente colectiva, y deberá trabajar el resto de la jornada en forma totalmente aislada de las influencias del mundo exterior.

* Programación colectiva: la programación ZEN recomienda que todos los programadores trabajen en conjunto, desarrollando un mismo requerimiento. Cada programador escribe una línea de código mientras los demás observan, y cede la máquina al siguiente, quien también escribe una línea de código y pasa el turno al siguiente, hasta volver a empezar la ronda o terminar el desarrollo del requerimiento. Si el programador al que le toca el turno no sabe qué escribir, significa que se desconectó de la mente colectiva del equipo. Entonces debe cubrirse la cabeza con el manto de la clarividencia, ceder el turno al siguiente y retirarse de la ronda, limitándose a observar lo que los otros programan hasta tanto sienta que se reconectó con el equipo. Es importante que no haya comunicación verbal entre los programadores, para fomentar el mantenimiento de la mente colectiva.

* No-automatización: toda línea de código debe escribirse como si fuera única, como si nunca antes se hubiera escrito, aunque ya se hayan escrito mil veces líneas de código idénticas. En la programación ZEN están prohibidas las herramientas automáticas, tales como los generadores de código. Las herramientas certificadas para programación ZEN impiden por todos los medios posibles el copy/paste. La única forma de agregar líneas de código a un programa es escribiéndolas caracter por caracter.

* Desarrollo sin fin: un proyecto nunca comienza y nunca termina. El sistema esa una entidad en constante cambio. Su puesta en funcionamiento puede realizarse en cualquier momento, cuando el usuario sienta la necesidad de comenzar a utilizar una nueva versión del software, puesto que la programación ZEN da la seguridad de que el sistema es perfecto en cualquier etapa de su evolución.

* Zero-testing (ZT): las prácticas antes mencionadas y la fe del equipo de desarrollo aseguran que el software desarrollado carece completamente de errores, y por lo tanto se hace innecesaria toda actividad de testeo. El usuario, cuando utiliza por primera vez el sistema implementado, puede caer en la oscuridad del error y creer que el sistema no hace lo que él pidió. Es deber del Maestro Zen –uno de los roles dentro del equipo de desarrollo– iluminar con humildad al usuario para hacerle ver que, aún cuando el sistema no haga lo que pidió, sí hace lo que deseaba en su corazón. Al comprender esto, el usuario se conecta con su ser superior y acepta con alegría cualquier efecto que el uso del sistema tenga sobre su trabajo cotidiano. Aún cuando ese efecto le signifique tener que quedarse horas extras terminando su trabajo a mano, el usuario entenderá que ése era su destino, y que el software implementado simplemente cumplió la función de hacer que se cumpla.