viernes, 1 de abril de 2016

Agilidad o Adaptación en el desarrollo de software



De todos es conocido, por lo menos para los que nos encontramos en la industria del desarrollo de software, que satisfacer las necesidades de los clientes no es una tarea sencilla y mucho menos cuando se trata de entregar resultados en lapsos de tiempo muy corto. Ya no existe tiempo para hacer un levantamiento exhaustivo de requerimientos, hacer uso del UML en todo su esplendor o elaborar especificaciones de casos de uso antes de digitar las primeras líneas de código, el tiempo hoy es un recurso limitado para lo cual el equipo de trabajo tiene como misión imposible comenzar la construcción de algo que apenas va teniendo forma por lo obtenido en sesiones cortas con el cliente y los usuarios finales.

La agilidad propone que el equipo de desarrollo de software se enfoque más con la premisa de entregar software funcional en iteraciones de tiempo relativamente cortas, por lo que los principios, técnicas y especificaciones de los métodos agiles se acoplan perfectamente a aquellos clientes que esperan tener una herramienta potencialmente usable en un lapso de pocas semanas. Construir software no es una tarea sencilla, el surgimiento de los métodos tradicionales como cascada o RUP surgieron para poner un poco de orden en el caos existente durante mucho tiempo en esta industria pero las reglas del juego han cambiado vivimos en un mundo donde los cambios ya no se dan en años si no en cuestión de meses, los mercados y las tendencias se mueven a una velocidad vertiginosa para lo cual la industria, las instituciones y las empresas de servicios tienen que renovarse constantemente para ser más competitivos, atraer más clientes o simplemente sobrevivir, los productos innovadores son requeridos en lapsos de tiempo muy tempranos y es aquí es donde la Agilidad hace su aparición como una opción para enfocarse en lo que realmente es importante.

Agilidad puede sonar como algo muy radical para construir software entendiendo que los métodos tradicionales surgieron para controlar las variaciones o incertidumbre mediante la ejecución de unas efectivas primeras etapas de compresión del dominio y diseño los requerimientos, pero cuando se trata de tener algo usable en tiempo record es cuando se requiere buscar otros medios. El concepto de Agilidad no pude tener mucho sentido si no hablamos que va tomado de la mano con la Adaptación. Agilidad y Adaptación son dos poderosas herramientas para crear software evolutivo e ir mitigando riesgos o la incertidumbre sobre los cambios drásticos de los requerimientos o alcance del proyecto.

Durante las primeras iteraciones del ciclo de desarrollo (preferentemente en lapsos no mayores de dos a tres semanas) es conveniente entregar el “core” de la solución, durante estas primeras entregas el cliente puede ir identificando si se ha entendido la esencia de la aplicación o existen requerimientos adicionales que se requieren incluir, dado el caso lo construido puede irse ajustando en las siguientes iteraciones, incrementado y dando forma de poco a poco al producto final, en otras palabras respondiendo rápidamente (Agilidad) y ajustando (Adaptabilidad) sobre la marcha.

Es importante recordar que agilidad no significa caos y desorden más bien ser práctico y veloz en la ejecución así como flexible en los ajustes, no solo del software sino también al proyecto y del equipo.

Enlisto a continuación a grandes rasgos como puedes usar la agilidad y adaptación en el día a día en tus proyectos:

1.-Inicialmente clarifica y aterriza la visión del producto final con el promotor del proyecto, mínimo a un alto nivel.

2.-Descubre, define, aclara y clasifica cuales son los requerimientos clave para que la solución pueda ser considerada exitosa.

3.-Planifica y ejecuta tus entregas en ciclos cortos. Trata de que en la primera iteración se construya el esqueleto de la arquitectura del software, sobre este esqueleto se irán agregando las capas de funcionalidad en las posteriores iteraciones.

4.-Durante la ejecución involucra activamente al promotor del proyecto para que en las entregas se tenga retroalimentación y se pueda evaluar si se están alcanzando las expectativas de los usuarios finales, de no ser así adapta el software, adapta el proyecto y adapta la forma de trabajar de tu equipo para obtener los mejores resultados posibles.

No hay comentarios.:

Publicar un comentario