jueves, 1 de marzo de 2012

SCRUM y desarrollo de software ágil.


SCRUM y desarrollo de software ágil.

El mundo del desarrollo de software tiene características que son totalmente contrarias a la lógica de negocios de otras industrias, para explicar esto en un ejemplo muy sencillo, podemos compararlo con una comercializadora de productos al mayoreo, cuando el volumen de venta aumenta, el proveedor puede castigar un poco su precio ya que el volumen de venta le dará finalmente una ganancia mayor, por el contrario en el desarrollo de software cualquier ingeniero podría caer en el error de pensar que al ofrecer la construcción de un sistema que sea de un tamaño significativo en la misma lógica que la comercializadora, el ingeniero podría ofrecer un precio menor, pero resulta que un software mientras mas grande sea, su nivel de complejidad aumenta en ocasiones exponencialmente, esto significa que mientras mas grande sea el producto a desarrollar, se deben considerar costos mayores, no hacerlo desemboca en el fracaso.

Buscando darle la vuelta a este problema se han  desarrollado técnicas para minimizar la complejidad del desarrollo de sistemas, todas estas técnicas se han agrupado en lo que conocemos como Ingeniería de Software, al cabo de los años se ha pasado por muchas etapas, cada una con sus claro-obscuros, podemos encontrar en un extremo el ingeniero que considera que el documentar el desarrollo de software es una perdida de tiempo, que esto solo repercute en el costo final y que prefiere sin realizar un análisis documentado  pasar directamente al diseño y desarrollo del producto, por lo general esto lo hacen compañías pequeñas que desarrollan también productos reducidos, en el otro extremo encontramos a los ingenieros y compañías que incluso cuentan con certificaciones tipo CMMI (Capability Maturity Model Integration) que lo que certifican es que se tienen las mejores prácticas en el desarrollo incluido lo concerniente a la Ingeniería de Software.

Recientemente mentes audaces y creativas se han dado a la tarea de romper estos paradigmas y encontrar soluciones que integren lo mejor de ambos extremos dando origen a las técnicas de desarrollo ágil, ¿de que se trata esto?, los métodos tradicionales de desarrollo como puede ser el Método Espiral (analizo, diseño, desarrollo, pruebo, analizo, diseño, desarrollo, pruebo, analizo, diseño, desarrollo, pruebo, etc.) o el Método Cascada (analizo hasta el mínimo detalle, documento hasta el último detalle, diseño hasta el último detalle, y finalmente implemento con una seguridad mayor) implican como sus detractores lo indican una gran inversión de tiempo para poder llegar a el termino del producto final, y muchas veces toda la documentación que se genera queda en el entredicho su real utilidad y por el lado contrario los que acostumbran no realizar ninguna documentación, cuando el desarrollo empieza a ser de tamaño considerable convierten esas implementaciones en verdaderas bestias muy difíciles de dominar para agregar ampliaciones de funcionalidad o mejoras.

Aquí es donde entran la técnicas agiles, una de las mas populares es la Programación Extrema (Extreme Programming) que se basa en el levantamiento de historias o requerimientos pequeños, simplificar su documentación, atacarlos inmediatamente, y levantar los requerimientos al mismo tiempo que se esta haciendo el desarrollo, de esta manera se soluciona el problema de el “siempre presente” cambio de requerimientos que no se puede evitar, ya que si se esta levantado el requerimiento mientras se desarrolla, se tiene mas flexibilidad y se pueden hacer modificaciones sobre la marcha de una manera menos costosa.
La Programación Extrema ya fue un avance, pero en mi experiencia personal todavía resultaba muy compleja pues considero que es muy difícil medir el avance de los proyectos y tener una visión global de los mismos.

Pero las mentes audaces y creativas cuando realmente lo son, no paran y ahora ha surgido el SCRUM, lo he implementado y tengo resultados verdaderamente significativos, SCRUM es una metodología ágil, pero tiene una sencillez bárbara, verdaderamente esto logra que lo complejo del desarrollo del software sea su programación y no la administración del proyecto.

Es tan sencillo que se los describiré en un párrafo, si conocen las post-it, imaginen que tienen un pizarrón dividido en tres secciones, la primera sección es para las tareas que se tienen por hacer, la segunda sección es para las tareas que están en proceso, y la tercer sección es para las tareas que ya están terminadas, los post-it servirán para anotar cada una de las tareas por hacer (issues), cuando se tengan todas, se pegan en el pizarrón y se inicia el trabajo, y se van colocando los post-it en el lugar que corresponda según el proceso en que se encuentre, de entrada esto nos brinda una visión muy realista y global del avance de nuestro proyecto, SCRUM es ideal para equipos de desarrollo y para esos grupos o empresas que tienen una motivación baja porque no ven que alcancen sus metas y objetivos, con SCRUM todos pueden ver el avance del proyecto y eso da una motivación extra al equipo, parece poco, pero motivación es uno de los ingredientes esenciales para el éxito de proyectos grandes, se puede asignar una serie de issues a determinado desarrollador y se puede hacer un seguimiento de su avance, en el equipo se definen Sprint´s que son metas de desarrollo que van de una a 4 semanas, no mas de este tiempo para que sea una meta sencilla de alcanzar, se establecen juntas diarias de 15 minutos en donde se comentan los avances y problemas que se han tenido al jefe del proyecto y de esta manera se actúa con oportunidad ante los problemas imprevistos y no hasta que ya implique una gran inversión de tiempo corregirlos.

En lo personal una de las cosas que mas me gusta de SCRUM es la grafica de avance, en un solo vistazo podemos observar como va nuestro proyecto, existen software que nos ayudan a manejar  SCRUM por ejemplo Jira que es muy sencillo y su costo es muy reducido.

Los invito a investigar más de este tema, ya que esta explicación es muy superficial, recuerden que el mundo necesita de mentes audaces y creativas que nos den soluciones como esta, no olvidemos que todo es susceptible de mejora.

I.S.C. José Antonio Herrera Jiménez.
Gerente Comercial.
Evolución T.I. S.A. de C.V.
www.evolucionti.com.mx

Coordinador Académico del Área de Ingenierías
Universidad Vasco de Quiroga
www.uvaq.edu.mx

No hay comentarios:

Publicar un comentario