Este es el último post de una serie de cuatro artículos sobre Programación Extrema y los aprendizajes que hemos tenido en estos meses. Puedes ver el primer artículo aqui.
Versiones Integrales
Con versiones integrales me refiero a un conjunto de funcionalides individuales que apuntan todas en la misma dirección. El contrario es cuándo se hacen versiones con un montón de funcionalides pero cada una apuntando a dirección distinta.
Cuándo todo el equipo se concentra en un mismo “tipo” de funcionalidades se logra una sinergia dificil de lograr cuándo se realizan funcionalidades inconexas. Esta sinergía además se transmite a toda la empresa, puesto que es mucho más fácil comunicar un concepto que agrupa a todas las funcionalides que cada una de las funcionalidades independientes. Incluso comercialmente es mucho más fácil de comunicar.
Para lograr esto es necesario que en la definición de la versión se defina el objetivo a lograr y se agrupen todas las funcionalides que apuntan a ese objetivo. La forma de agrupar puede variar en cada caso, pero es importante que se tenga un concepto para transmitir.
Creo que como ejemplos de estas versiones integrales podrían ser cosas como “Mejoramiento del API” (todo el mundo concentrado en mejorar el API), “Conexión con Facebook” (todo el mundo concentrado en crear funcionalidades relacionadas con Facebook), etc. En las dos últimas versiones hemos tenido foco en “Optimización en manejo de Volúmen” e “Implementación de Campos Relacionales”.
La sinergía se logra en que todo el mundo resuelve problemas similares en el mismo período de tiempo; entonces las soluciones encontradas por los primeros se transmiten más fácilmente a los demás. El código se puede encapsular más fácilmente. Los problemas se pueden resolver fácilmente entre varios. Se evita el retrabajo, etc.
Este concepto tambien a ayudar a definir más fácilmente que se puede posponer. Todo lo que no apunta en el concepto de esta versión se puede pasar a otra versión.