Metodología: Xtreme Time-Wasting

26/04/2006 10:04 por Álvaro J. Iradier

Desde mi pequeño apartado en la gran red de redes, me gustaría dar a conocer el mundo. Estas novedosas técnicas de desarrollo echan por tierra todas las anteriores teorías de ingeniería del software y las más recientes Xtreme Programming.

Empezaremos por los conceptos básicos:

Solvencia
El cliente que contrata el desarrollo del proyecto debe disponer de dinero a espuertas. Este flujo de dinero es garantía de la sostenibilidad del proyecto, ya que permite incorporar nuevos recursos (es fundamental llamar recursos a las personas implicadas, para evitar todo tipo de humanización) en cualquier momento, así como financiar las importantísimas reuniones en caros restaurantes y visitas a casas de esparcimiento que todos los buenos directores y jefes de distintas escalas necesitan en el transcurso de su trabajo.

Estratificación
Es muy importante que todos los recursos estén debidamente separados en capas bien diferenciadas, mínimo un número de 4, cuyos nexos de unión están vagamente definidos, permitiendo que la desinformación fluya casi desde cualquier punto hacia cualquier punto. De este modo el conocimiento se reparte de manera homogénea pero caótica, mientras que el dinero y el trabajo están perfectamente repartidos de manera heterogénea, determinista e inversamente proporcional. En las capas superiores debe concentrarse la mayor cantidad de dinero y la menor de trabajo, y en las capas inferiores donde se lleva a cabo el desarrollo el dinero se reparte en forma de limosnas.

Improvisación
Con el fin de no dispersar innecesariamente el análisis y los requisitos del proyecto, el cliente sólo debería tener una idea básica e inicial de lo que quiere. Por ejemplo:

    "Deseamos un programa para gestionar la hacienda pública del estado español"

    "Necesitamos un programa de gestión de transporte para todas nuestras delegaciones"

    "Queremos hacernos ricos y dominar el mundo"

Al centrarnos en un único objetivo es muy sencillo realizar una planificación a priori de los recursos necesarios y tiempo estimado para el desarrollo, con un margen de error pequeño.

Una vez dispuestos los recuros y todo listo para comenzar, se procederá a detener el proyecto y realizar diversas reuniones entre los estratos con el fin de subdividir el objetivo actual del proyecto. Este proceso se realizará iterativamente hasta disponer de subobjetivos que se plasmarán en una llamado análisis funcional, suficientemente concretos como para permitir a una única persona o equipo de personas comenzar un desarrollo, pero suficientemente abiertos como para que la imaginación de los desarrolladores juegue un papel fundamental en la implementación.

Pruebas continuas
Las capas superiores se dedicarán a probar de manera insistente los desarrollos realizados por las capas inferiores, incluso aún sin estar terminados. Con el fin de ahorrar tiempo, no se elaborarán superfluos documentos de cambios de requisitos, sino que por cada problema o desavenencia encontrado se organizará una reunión con estratos inferiores para solicitar el debido cambio o correción. Estos cambios serán transmitidos de manera convenientemente deformada a las capas inferiores.

La realización de pruebas continuas dota de gran flexibilidad al desarrollo, convirtiendo el barato precio/hora de la mano de obra de las capas inferiores en valiosas aplicaciones prototipo que dotarán de grandes beneficios a los intermediarios. Estas aplicaciones prototipo acaban generalmente en la basura, actuando como inyección de moral para los desarrolladores, que al ver que su trabajo y esfuerzo no ha servido para nada disfrutan del aliciente de generar nuevo código desde cero, mejorando su trabajo anterior hasta elevarlo a la categoría de puro arte.

Reutilización masiva
Lo ideal antes de comenzar el proyecto es disponer de otra aplicación similar. Lo ideal es que esta aplicación se asimile lo justo como para que se justifique la elección de nuestra empresa para el desarrollo, pero a la vez tan distinta que una vez comenzado el proyecto, y tras un prolongado periodo de tiempo, se baraje la posibilidad de que se ha cometido un error y se deba tirar la base del código a la basura, ya que resulta imposible la adaptación.

Esto permite por una parte generar una versión de mayor calidad en cada iteración del proceso de reutilización, y mantener el flujo monetario del cliente de manera ininterrumpida.

La segunda gran baza de la reutilización es el copy-paste, ya que esta es la segunda herramienta más potente que Dios a dado al mundo del desarrollo, justo después de Lisp.

El uso del copy-paste (copiar-pegar en castellano) permite eliminar los molestos problemas derivados de la reutilización de código clásica (herencia, funciones, etc.). Estos problemas suelen concretarse en los efectos secundarios que se producen cuando un cambio en un único punto afecta a más de un proceso, y que se agravan exponencialmente cuanto más uso se hace de esta infernal técnica.

Con el uso del copy-paste se acelera el desarrollo, y se incrementa la cantidad de código generado, lo que da un valor añadido a la aplicación generada, que deberá medirse en "LOCs" (Lines of Code / Líneas de Código).

Ga(za)pping
Los estratos intermedios deberán elaborar unas complejas hojas de cálculo, preferiblemente en un formato cerrado como excel, que los estratos inferiores deberán rellenar. Estas hojas de cálculo se componen de los llamados GAPS, que en nuestro argot denominaremos "cachos". Un GAP es una tarea junto a un tiempo asignado, fecha de comienzo, final, etc. Estás hojas de GAPS deben ser lo suficientemente complicadas como para que los desarrolladores y recursos cometan los suficientes errores al rellenarlas, y las planificaciones deben contar con un margen de error del +/- 400%, para una mayor flexibilidad.

Estas hojas además deben ser suficientemente complicadas como para que justifiquen el salario de múltiples recursos, y para poder justificar a las capas superiores los retrasos en el proyecto. Las capas superiores aceptarán resignadas el retraso antes que aceptar su incapacidad para comprender las hojas de GAPS.

Mass programming
Para terminar, la técnica de Mass programming prueba la falsedad del famoso mito del hombre/mes. Se apoya sobre la disposición de un flujo monetario inagotable por parte del cliente, y se basa en la incorporación de nuevos recursos para suplir los retrasos en el desarrollo, aún cuando la mayor parte de los recursos están desocupados por falta de planificación.

Esto ha sido una breve introducción, seguiremos ampliando información en próximos boletines.



Warning: Todo parecido de lo expuesto en esta página con la realidad es pura coincidencia.
Las historias y personajes aqui reflejados son fruto de la imaginación de una mente perturbada.
Está permitida la distribución y modificación de todos los contenidos de esta web, siempre que se cite la fuente.

Diseño por Wink Hosting.