http://migueljaque.com
Notas sobre Metodologías Ágiles
Estás en:   Inicio Metodologías Programación Extrema Valores y Principios
Valores y Principios PDF Imprimir E-mail
Miércoles, 19 de Marzo de 2008 07:40

La Programación Extrema busca una forma de trabajo sostenible a largo plazo. Es decir, una forma de trabajo en la que los programadores no se quemen y en la que los proyectos no se vuelvan inmanejables por su complejidad.

¿Suele pasar esto? Lo cierto es que sí. A medida que los sistemas sobreviven en el tiempo, su mantenimiento los hace cada vez más complejos: se ponen parches para corregir errores, se deja de lado su documentación, se añade funcionalidad con arquitecturas de diseño diferentes... Y al final sólo unos pocos programadores, a veces solo uno, son capaces de meter mano al código. Eso hace que se quemen, todos los días trabajando en el mismo código antiguo, mal estructurado, con tiempo sólo para poner parches, sin poder hacer un trabajo de calidad... ¿Quién no se quemaría?

Para evitar estos problemas del largo plazo, la Programación Extrema enuncia cinco Valores.

Valores

Estos Valores se reflejan en la elección de las técnicas y la forma de aplicarlas. Son:

  • Comunicación
  • Sencillez
  • Feedback
  • Valentía
  • Respecto

Comunicación

Muchos de los problemas en un proyecto están causados por fallos de comunicación. Alguien no le dice a otro algo que éste necesita saber o alguien no es capaz de hacer la pregunta correcta para conseguir la información que necesita.

La comunicación no se puede normalizar. No puedes imponer un procedimiento en el que el jefe de proyecto deba comunicarse con sus programadores 20 minutos al día. La Programación Extrema busca técnicas que fomentan una comunicación informal, pero intensa sincera y constante. Así, la técnica de Programación en Parejas fomenta la comunicación entre programadores, el Juego de Planificación pone en contacto a usuarios y programadores y la técnica de Cliente In Situ lleva la comunicación hasta el extremo de trabajar codo con codo diariamente.

Sencillez

No hay duda, puedes programar cualquiera parte del código, ya sea una pantalla de datos o una simple función de ordenación en un tiempo infinito. Siempre habrá algo más que añadir, que perfeccionar, que parametrizar...

La Programación Extrema evita estos excesos de código con una regla sencilla: ¿Qué es lo más sencillo que puede funcionar?

Se busca que los programadores se centren únicamente en lo requerido para completar el ciclo, y no en lo que puede necesitarse en un futuro. Nunca se programan cosas para mañana, porque siempre es posible que un cambio en los requerimientos o en la tecnología las haga innecesarias. Una de las técnicas más utilizadas para fomentar la sencillez es YAGNI (You Ain't Gonna Need It - No lo vas a necesitar).

Feedback

El feedback (o realimentación) nos indica si un trabajo está bien hecho. La Programación Extrema busca técnicas para tener feedback rápido y frecuente, para saber si algo está bien o mal hecho nada más terminarlo.

Por ejemplo, la técnica de DDT (Desarrollo Dirigido por Tests) permite a los programadores saber si han hecho bien el código nada más terminarlo. El Juego de Planificación permite saber inmediatamente a los usuarios si las historias que han definido son claras. Y la entrega frecuente de pequeñas versiones permite a los usuarios y programadores conocer el avance del proyecto.

El feedback rápido y frecuente ayuda a mantener el proyecto en el rumbo correcto.

Valentía

Si queremos un código sencillo tendremos que tirar código. Constantemente tendremos que tirar las partes que se quedan complejas y rehacerlas, las partes menos claras deberán ser sustituidas y lo que no funcione fácilmente, reprogramado.

En ocasiones, alguien tendrá una idea para simplificar el código. Pero puede que para aplicarla haya que rehacer el 80% del código... O puede que hayas estado todo el día programando y te hayas atascado con lo que el código que hayas hecho será una bazofia... Sabes lo que tienes que hacer; tienes que tirarlo y rehacerlo.

Tirar el 80% del código en un proyecto que está al 80% de ejecución y que marcha mal de tiempo parece una locura. Pero si es una forma de simplificar el sistema ¡debes hacerlo! La Programación Extrema no sólo fomenta estas actitudes extremas, sino que aporta técnicas como la Refactorización para hacer que sean posibles.

Respeto

El quinto valor de la Programación Extrema se añadió posteriormente para corregir algunas lagunas. No es posible trabajar bien con quien no respetas ni te respeta.

Un programador debe respetar los tests de los otros programadores, puede corregirlos, puede mejorarlos, pero no debe ni ignorarlos ni machacarlos. Lo mismo ocurre con el código. La Programación Extrema propone la técnica de Compartición de Código, pero eso no significa que puedas destrozar el código de un compañero, puedes y debes simplificarlo, mejorarlo, pero respeta su forma de expresión, sus ideas.

Lo mismo ocurre entre programadores y usuarios. Para que el proyecto vaya bien deben respetarse las opiniones de unos y otros. Los programadores no pueden ignorar ni degradar las opiniones de los usuarios respecto a su negocio. Ni estos pueden ignorar ni degradar las opiniones o estimaciones técnicas de los programadores.

Todos los principios se apoyan entre sí. No se consigue la sencillez sin valentía, no pueden tomarse acciones valientes que son necesarias sin un buen feedback que nos garantice que vamos por el camino correcto y no podemos tener buen feedback si no hay buena comunicación. Y nada de esto es posible si no hay respeto entre todos los participantes.

Principios

Los valores son demasiado genéricos para utilizarlos de guía en la elección de técnicas. Para concretarlos un poco más, la Programación Extrema define los Principios. Hay 5 principios básicos:

Realimentación Rápida

Elegiremos las técnicas que más reduzcan el tiempo entre una acción y su medida. Al reducir este tiempo, se mejora el aprendizaje.

Asumir la Sencillez

Trataremos todos los problemas como si tuvieran una solución ridículamente sencilla. Es cuestión de buscarla.

Cambio Incremental

Nada de grandes cambios, no funcionan. Las grandes mejoras se consiguen con pequeños cambios consecutivos.

Aceptar el Cambio

Elegiremos la estrategia que mantenga vivas más opciones durante más tiempo. No hay que cerrarse puertas innecesariamente.

Trabajar con Calidad

Todo el mundo tiene derecho a hacer un trabajo de calidad. Todos haremos un trabajo excelente, y para eso necesitamos tiempo y recursos. Nada de chapuzas rápidas, parches y soluciones para salir al paso.

Estos son los principios fundamentales, pero hay otros...

Más Principios

Estos principios ayudan a tomar decisiones en casos específicos:

  • Enseñar a Aprender: En lugar de dictar reglas, enseña criterios.
  • Pequeñas Inversiones Iniciales: Empezar con pocos recursos ayuda a centrarse en lo importante, ayuda a simplificar el proyecto.
  • Jugar a Ganar: No hagas las cosas para cumplir... ¡sal a ganar! Y, si hace falta, ¡juégatela!
  • Experimentos Concretos: Si tienes dudas, prueba. Comprueba cada decisión de diseño con un experimento de código concreto que resuelva las dudas.
  • Comunicación Abierta y Honesta: ¿La hay de algún otro tipo?
  • Trabajar con los Instintos de las Personas: A la gente le gusta la sencillez, les gusta comunicarse, hacer un buen trabajo... aprovéchalo. Si hay algo que no gusta, quizás esté mal pensado o mal explicado.
  • Aceptar la Responsabilidad: Los trabajos no se asignan, se aceptan.
  • Adaptación Particular: Adapta la metodología a la situación de cada organización y de cada proyecto.
  • Ir Ligero de Equipaje: Estáte siempre preparado para cambiar. Pocas cosas, sencillas y valiosas.
  • Medidas Honestas: No hay nada peor que engañarse a uno mismo, es la receta para el fracaso seguro.

 

Actualizado ( Miércoles, 02 de Abril de 2008 13:05 )
 

Apoyo a la Cultura Libre: Si eres legal ¡¡COMPARTE!!