Años atrás los procesos utilizados para el desarrollo de productos software eran una tarea tediosa y compleja, donde muchas veces la rentabilidad de la misma estaba muy por debajo de su costo. Eran épocas donde se desarrollaban infinidad de líneas de código y donde cualquier cambio en el proyecto inicial suponía un auténtico quebradero de cabeza para el desarrollador. Estas modalidades no contribuían a generar un ecosistema adecuado para el correcto desarrollo de software.
Ahora, con el paso de los años, fueron surgiendo nuevos lenguajes de programación (en teoría más sencillos…), entornos más amigables, frameworks que facilitaban muchas tareas, conceptos que las empresas dedicadas al desarrollo de software acogieron rápidamente para mejorar la calidad y los plazos de entrega de sus proyectos. Sin embargo, en la actualidad esto llega a no ser suficiente pues en un mundo tan cambiante, donde predominan los tiempos y la rentabilidad, muchas veces las empresas olvidan el tercer factor fundamental: la calidad. Lo que nos hace pensar si es posible meter estas tres variables en la ecuación y obtener un resultado positivo. Si vemos, esto no está muy alejado de la realidad.
En 2001, un grupo de expertos, a petición del ingeniero Kent Beck (creador de las metodologías XP y TDD), se reunieron para debatir la situación del desarrollo de software y acuñaron la expresión “metodologías ágiles”. La expresión hacía referencia a un marco de trabajo en el cual era posible aumentar la calidad del desarrollo, reducir los tiempos, eliminar la incertidumbre, aceptar la tolerancia a cambios… en definitiva, incrementar la satisfacción del cliente.
Posteriormente, se dio paso a lo que se denomina el manifiesto ágil, donde se postulan doce (12) principios, que acoplan o unen las tres variables que hemos descrito: tiempo, rentabilidad y la calidad.
En el mismo orden de ideas, los procesos ágiles son metodologías de gestión que permiten adaptar la forma de trabajo al contexto y naturaleza de un proyecto, basándose en la flexibilidad y la inmediatez, y teniendo en cuenta las exigencias del mercado y los clientes. Los pilares fundamentales de las metodologías ágiles son el trabajo colaborativo y en equipo.
Ahora bien, gracias a la flexibilidad y capacidad de adaptación de las mismas, son muchos los beneficios de incorporar metodologías ágiles a la gestión de las organizaciones. Las empresas llegan a reducir considerablemente sus costos, la rapidez en la entrega de proyectos se vuelve un estándar, el trabajo en equipo y compromiso de todos los miembros del equipo de trabajo se hace más fuerte y forma parte de buenas prácticas, y existe una mayor calidad en el trabajo y en el producto final (ya sea producto o servicio). Por tanto, implementar estas metodologías promete un abanico de oportunidades para avanzar hacia el éxito.
Asimismo, las metodologías de desarrollo sean ágiles, hibridas o tradicionales, se basan en ciertos modelos de desarrollo, que son las bases teóricas por las cuales están regidas estos métodos de desarrollo. Sin embargo, se puede dar el caso en el que un método de desarrollo se base o utilice más de un modelo de desarrollo.
Existen distintos tipos de métodos de desarrollo ágil, pero para el presente artículo, se abordará el método SCRUM como principal tema. Se explica lo referente al cómo nace esta metodología, su estructura, que modelo de desarrollo implementa, sus roles, entre otras cosas a continuación.
SCRUM como Marco de Desarrollo
Ésta es una metodología de adaptación, iterativa, rápida, flexible y eficaz, diseñada para ofrecer un valor significativo de forma incremental en todo el proyecto de desarrollo. Asimismo garantiza transparencia en la comunicación y crea un ambiente de responsabilidad colectiva y de progreso continuo. Es compatible con los productos y el desarrollo de servicios en todo tipo de industrias y en cualquier tipo de proyectos, independientemente de la complejidad.
Una fortaleza radica en el uso de equipos interfuncionales, auto-organizados y empoderados que dividen su trabajo en ciclos de trabajo corto y concentrados llamados SPRINTS (carrera – High Speed Development).
SCRUM fue creado por Hirotaka Takeuchi e Ikujiro Nonaka, a mediados de los 80’s, los cuales partieron de definir una estrategia de desarrollo flexible e incluyente de productos en la que el equipo de desarrollo trabaje como una unidad para alcanzar un objetivo en común. Describieron un enfoque innovador para el desarrollo de productos al que llamaron enfoque holístico o “Rugby”, donde como equipo, pasando el balón hacia adelante y hacia atrás, intentan llegar hasta el final.
Los autores se basaron en los estudios de casos de diversas industrias de fabricación. Takeuchi y Nonaka propusieron que el proceso de desarrollo no debe ser como una carrera de relevos secuencial, sino que debía ser análogo al del juego de Rugby, donde el equipo trabaja en conjunto. Ellos postulan que el desarrollo de productos debe implicar “mover el scrum campo abajo”.
Esta metodología se constituye por roles, equipos, eventos, artefactos y reglas asociadas, donde cada componente tiene un propósito específico. Se basa en:
- Control de Proceso Empírico. Proceso basado en experiencias, asegura que el conocimiento proceda de lo ocurrido y de lo que se conoce.
Dato Importante: Ken Schwaber y Jeff Sutherland desarrollaron el concepto de SCRUM u su aplicabilidad al desarrollo de software durante una presentación en la Conferencia Internacional sobre Programación, Lenguajes y App Orientadas a Objetos (OOPSLA) en el año 95 en Austin, Texas.
Para comenzar, se debe recordar que SCRUM por ser un proceso ágil, se rige por lo que se denomina las Historias de Usuario (BackLogs) que es una metodología para levantar información acerca de necesidades, estas no son escritas por el programador sino más bien el usuario con adiestramiento básico. Asimismo está basada en el modelo de desarrollo iterativo incremental, donde los requisitos y soluciones evolucionan mediante la colaboración de grupos organizados y multidisciplinarios, los cuales son primordiales para estos procesos. También se maneja el proyecto de desarrollo a través de versiones, lo que significa que se programa en función de ciertas historias de usuarios, que luego se convertirán en versiones que finalmente puedan ser modificadas en un futuro. Por último, se debe considerar que la prioridad para los procesos ágiles son los procesos.
Ahora bien, como se explica anteriormente, el trabajo está dividido por SPRINT, que en vista al desarrollo iterativo incremental, una vez finalizado el SPRINT, se comienza otro nuevo y vuelve a repetirse el proceso. Este desarrollo está descrito mediante un ciclo, el cual se denomina el ciclo SCRUM. A continuación se explica en que consiste.
Macro de Trabajo SCRUM
Cada Sprint es una entidad en sí misma, esto es, proporciona un resultado completo, una variación del producto final que ha de poder ser entregado al cliente con el menor esfuerzo posible cuando éste lo solicite.
El proceso tiene como punto de partida una lista de objetivos/requisitos que conforman el plan de proyecto, esto es, toda la información que el cliente proporciona. Asimismo, es el cliente del proyecto (Product owner) el que prioriza estos objetivos (Product BackLog) teniendo en cuenta un balance del valor y el coste de los mismos, es así como se determinan las iteraciones y consecuentes entregas.
Ahora, el primer día del Sprint se divide en dos partes:
- La selección de requisitos (con una duración de 4 horas máximo): el cliente determina de la lista de requisitos, cuales son aceptados por el equipo para realizar la iteración.
- La planificación de la iteración (Sprint Planning Meeting– con una duración de 4 horas máximo): el equipo elabora la lista de tareas a realizar (Sprint Backlog) en la iteración para la consecución de los requisitos a los que se ha comprometido.
Un Sprint puede durar entre 2 a 6 semanas durante las cuales el equipo SCRUM trabaja en la creación de entregables (Delivereables – Trabajo finalizado) en incrementos del producto parcialmente listos.
Cada día, el equipo realiza un Sprint Meeting (con una duración máxima de 15 minutos), donde cada miembro del equipo realiza una supervisión del trabajo realizado por los demás para ver si es necesario realizar alguna adaptación que permita cumplir con el compromiso adquirido.
En el Sprint Meeting responde a las siguientes preguntas:
- ¿Qué has hecho desde ayer?
- ¿Qué es lo que estás planeando hacer hoy?
- ¿Has tenido algún problema que te haya impedido alcanzar tu objetivo?
Durante el Sprint, el Scrum Master se encarga de eliminar los obstáculos que el equipo no pueda resolver por sí mismo y protege al equipo de injerencias externas que perturben su compromiso o su productividad.
El último día del Sprint, se realiza una revisión, que tiene dos partes:
- Demostración (Sprint Review con duración de 4 horas máximo): el equipo presenta los requisitos completados de la iteración, en forma de producto mejorado, realizado con el mínimo esfuerzo. El cliente realizará un examen objetivo de la iteración, ya desde la primera vez, determinando un replanteamiento del proyecto.
- Retrospectiva (Sprint Restrospective con duración de 4 horas máximo): el equipo determina y presenta cuáles son los obstáculos que se ha ido encontrando, siempre con el objetivo de mejorar la productividad. El Scrum Master se encargará de eliminar dichos obstáculos.
Una vez finalizado el sprint, se vuelve al punto de partida, comenzando nuevamente el ciclo SCRUM.
Se recomienda que se le dé un análisis a la siguiente figura, que muestra en resumen, el ciclo SCRUM de forma gráfica.
El ciclo SCRUM (Autor: Scrum.org recuperado el día 12 de Julio de 2018 de http://metodologiascrum.readthedocs.io/en/latest/_images/reuniones.jpg)
La Escalabilidad de SCRUM
SCRUM maneja programa o cartelera que son usados en proyectos grandes. Por tanto, puede usarse para gestionar proyectos de cualquier tamaño. Esto requiere una coordinación entre equipos SCRUM y fácil flujo de información, como una buena comunicación.
Roles
Roles Centrales
- Propietario del producto (Product Owner)
- SCRUM Master
- Equipo SCRUM
Roles No Centrales
- Socios
– Cliente
– Usuario
– Patrocinador - Vendedores
- Cuerpo de Asesoramiento de SCRUM
Vistar el siguiente sitio para mayor información:
Principios
Artefactos
La metodología SCRUM es en la actualidad una de las más utilizadas en el mundo por empresas donde su principal prioridad es satisfacer las necesidades del cliente. Ésta ofrece una gran variedad de posibilidades de llevar al cliente un producto finalizado en un tiempo récord, sin dejar a un lado lo que el cliente espera resolver con dicho producto.
Por otra parte, debido a que se trata de una metodología que tiene a los procesos también, como algo primordial, al contrario de lo tradicional (donde se procura hacer una documentación de forma profunda, creación de diagramas de estados, de actividades, de secuencias) se puede correr el riesgo de que en cierto punto no se tenga a la mano un respaldo de lo que es el negocio y lo que se realiza en él (un documento) para tomar mejores decisiones en cuanto a ciertos cambios que se requieran. Algo que por su parte, le da un punto a favor a las metodologías tradicionales. Sin embargo, en proyectos en donde esto no es predominante, las metodologías ágiles en especial SCRUM, son una gran alternativa. Y no se debe olvidar que como está orientada según al manifiesto ágil, los cambios en el transcurso del proyecto para ésta son aceptados como algo bueno, es muy común y normal. Así, esto hace que SCRUM sea aplicable sin problemas en cualquier proyecto de cualquier empresa.
Página a visitar con información extra: SCRUM
Publicado el 09 de julio de 2019