Introducción.
A la hora de diseñar métodos de negocios que requieran una alta efectividad al momento de ser aplicadas, el desarrollo de proyectos y software desde el punto de vista de la Ingeniería de Sistemas es sumamente importante para la organización y optimización de las actividades llevadas a cabo por una empresa, por lo cual es necesaria la aplicación de diferentes procesos ágiles de desarrollo de software y gestión de proyectos, de acuerdo a las necesidades y la actividad que sea necesario realizar. Es por esto que en el presente trabajo se abordará el tema del SCRUM. Se hablará de sus orígenes, características, estructura, roles que participan , ventajas y desventajas para el desarrollo de proyectos y software.
En muchas ocasiones, los modelos de gestión tradicionales no nos sirven para afrontar un reto que hoy en día resulta fundamental: incorporar cambios con rapidez y en cualquier fase del proyecto. Se trata de evitar lo que tantas veces nos ha ocurrido: cuando el proyecto se encuentra bastante avanzado nos damos cuenta de que no vamos por el buen camino o, simplemente, el cliente decide introducir cambios sustanciales, y esos cambios nos obligan a tirar por la borda todo el trabajo realizado hasta entonces, y nos impiden acabar en el plazo previsto.
Dado que los cambios nunca van a dejar de existir, lo que necesitamos es ser capaces de gestionar los proyectos de una forma más ágil. Con ese objetivo, en los años 80 los japoneses Takeuchi y Nonaka estudiaron las prácticas de empresas con buenos resultados de rapidez y flexibilidad en la producción: Xerox, Canon, Honda, NEC, Epson, Brother, 3M o Hewlett-Packard. De ahí extrajeron la base de la metodología SCRUM que, aunque nació en el ámbito tecnológico, ha ido creciendo hasta consolidarse en campos de actividad muy diferentes.
Definición de la Metodología
La
palabra SCRUM procede del vocabulario del rugby y significa melé; es decir, esa
“figura” en la que los compañeros del equipo se amontonan, forman una piña y
empujan todos en la misma dirección.
Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos.
En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales.
Scrum también se utiliza para resolver situaciones en que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.
En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales.
Scrum también se utiliza para resolver situaciones en que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.
Características Principales.
·
Metodología de trabajo ágil.
·
Diseñada para acortar el ciclo de desarrollo.
·
Conseguir una mejor aproximación entre las
funcionalidades del software y los requerimientos del cliente.
·
Evitar la burocracia innecesaria.
·
Mayor versatilidad frente a los cambios.
·
Comenzar el trabajo lo más rápidamente
posible.
·
Manejo más eficiente de los requerimientos
cambiantes en un proyecto.
·
Mejorar la comunicación entre el cliente y el
equipo desarrollador.
·
Aumento de la productividad y de la
comunicación directa entre el cliente y el equipo desarrollador. Recomendado
para equipos de trabajo pequeños (máx. 8 personas).
·
Desarrollo incremental e iterativo producción
frecuente de prototipos para evaluación del cliente.
·
Manejo más eficiente de los requerimientos
cambiantes en un proyecto mejorando la versatilidad frente a los cambios.
·
SCRUM no dice Qué hacer sino Cómo hay que
hacer las cosas.
Estructura o elementos específicos de la metodología.
Control de la evolución del proyecto.
Scrum
controla de forma empírica y adaptable la evolución del proyecto, empleando las
siguientes prácticas de la gestión ágil:
Revisión
de las Iteraciones
Al
finalizar cada iteración (normalmente 30 días) se lleva a cabo una revisión con
todas las personas implicadas en el proyecto. Este es el periodo máximo que se
tarda en reconducir una desviación en el proyecto o en las circunstancias del producto.
Desarrollo
incremental
Durante
el proyecto, las personas implicadas no trabajan con diseños o abstracciones. El
desarrollo incremental implica que al final de cada iteración se dispone de una
parte del producto operativa que se puede inspeccionar y evaluar.
Desarrollo
evolutivo
Los
modelos de gestión ágil se emplean para trabajar en entornos de incertidumbre e
inestabilidad de requisitos. Intentar predecir en las fases iniciales cómo será el producto final, y sobre dicha predicción desarrollar
el diseño y la arquitectura del producto no es realista, porque las circunstancias
obligarán a remodelarlo muchas veces. Para qué predecir los estados finales de
la arquitectura o del diseño si van a estar cambiando. En Scrum se toma a la inestabilidad
como una premisa, y se adoptan técnicas de trabajo para permitir esa evolución
sin degradar la calidad de la arquitectura que se irá generando durante el
desarrollo. El desarrollo Scrum va generando el diseño y la arquitectura final
de forma evolutiva durante todo el proyecto. No los considera como productos
que deban realizarse en la primera “fase” del proyecto.
Auto-organización
Durante
el desarrollo de un proyecto son muchos los factores impredecibles que surgen
en todas las áreas y niveles. La gestión predictiva confía la responsabilidad
de su resolución al gestor de proyectos. En Scrum los equipos son
auto-organizados (no auto-dirigidos), con margen de decisión suficiente para
tomar las decisiones que consideren oportunas.
Colaboración
Las
prácticas y el entorno de trabajo ágiles facilitan la colaboración del equipo.
Ésta es necesaria, porque para que funcione la autoorganización como un control
eficaz cada miembro del equipo debe colaborar de forma abierta con los demás,
según sus capacidades y no según su rol o su puesto.
Ciclo de vida del proyecto.
El ciclo de vida de un proyecto Scrum se basa en unidades
iterativas que deben tener un tiempo fijo en las cuales se planifica,
desarrolla y aprueba el resultado de esa iteración. Estas unidades iterativas
se llaman SPRINTS. Se sugiere que un Sprint tenga una duración mínima de una
semana y una máxima de cuatro.
RITUALES
Se les llama rituales a las reuniones que establece SCRUM que
deben ser cumplidas en esta metodología.
Sprint Planning
Al comenzar un nuevo Sprint se debe tomar la lista de
requerimientos (Product Backlog) y a partir de la prioridad de cada uno se debe
seleccionar un conjunto de estos requerimientos los cuales serán ejecutados por
el Team. Este subconjunto de requerimientos deben generar valor de retorno de
inversión al cliente y debe ser un producto potencialmente entregable. En esta
reunión participan el SM, PO y el Team. El tiempo de duración máxima son 2
horas.
Sprint Daily Meeting
Diariamente el Team debe realizar una reunión en donde cada
integrante tiene 2 minutos para responder a las siguientes preguntas:
1. ¿Qué tareas comprometidas realizó?
2. ¿Qué impedimientos detectó al realizar estas tareas?
3. ¿Qué tareas se compromete a realizar mañana?
En esta reunión debe participar el Team y el SM. Se puede realizar
en cualquier momento del día, eso lo define el Team, una vez definido no
debería ser modificado.
Sprint Review
Al finalizar un Sprint se debe realizar una revisión del producto
concebido en ese Sprint. Para ello deberán reunirse el Team, el PO y el SM.
Esta reunión deberá tener como resultado una aprobación o reprobación del
producto por parte del cliente. Se recomienda una duración máxima de 2 horas.
Sprint Retrospective
Luego de realizar el Sprint Review se deberá realizar otra reunión
entre el SM y el Team. El propósito de esta es realizar un análisis para ver
cómo se aplicó la metodología y realizar una evaluación del resultado en donde
se deberán tener en cuenta las correcciones que se deben aplicar para la
siguiente iteración.
Los roles.
Scrum clasifica a todas las personas que intervienen o tienen
interés en el desarrollo del proyecto en: propietario del producto, equipo,
gestor de Scrum (también Scrum Manager o Scrum Master) y “otros interesados”.
Los tres primeros grupos (propietario, equipo y gestor) son los responsables
del proyecto, los que según la comparación siguiente (y sin connotaciones
peyorativas) serían los “cerdos”; mientras que el resto de interesados serían
las gallinas.
Cerdos y gallinas.
Esta metáfora ilustra de forma muy gráfica la diferencia de
implicación en el proyecto entre ambos grupos: Una gallina y un cerdo paseaban
por la carretera. La gallina dijo al cerdo: “Quieres abrir un restaurante
conmigo”. El cerdo consideró la propuesta y respondió: “Sí, me gustaría. ¿Y
cómo lo llamaríamos?”. La gallina respondió: “Huevos con beicon”. El cerdo se
detuvo, hizo una pausa y contestó: “Pensándolo mejor, creo que no voy a abrir
un restaurante contigo. Yo estaría realmente comprometido, mientras que tu
estarías sólo implicada”.
·
Propietario del
producto: El responsable de obtener el mayor valor de producto para los
clientes, usuarios y resto de implicados.
·
Equipo de
desarrollo: grupo o grupos de trabajo que desarrollan el producto.
·
_Scrum Manager: gestor de los equipos que es responsable del
funcionamiento de la metodología Scrum y de la productividad del equipo de
desarrollo.
Ventajas
- Se obtiene software lo más rápido posible y este cumple con los requerimientos más importantes.
- Se trabaja en iteraciones cortas, de alto enfoque y total transparencia.
- Se acepta que el cambio es una constante universal y se adapta el desarrollo para integrar los cambios que son importantes.
- Se incentiva la creatividad de los desarrolladores haciendo que el equipo sea auto administrado.
- Se mantiene la efectividad del equipo habilitando y protegiendo un entorno libre de interrupciones e interferencias.
- Permite producir software de una forma consistente, sostenida y competitiva.
- Las reuniones se dedican a inconvenientes recientes, evitando el estancamiento
Desventajas
- Requiere delegar responsabilidades al equipo, incluso permite fallar si es necesario.
- Es una metodología que difiere del resto, y esto causa cierta resistencia en su aplicación para algunas personas
- Se obtiene software lo más rápido posible y este cumple con los requerimientos más importantes.
- Se trabaja en iteraciones cortas, de alto enfoque y total transparencia.
- Se acepta que el cambio es una constante universal y se adapta el desarrollo para integrar los cambios que son importantes.
- Se incentiva la creatividad de los desarrolladores haciendo que el equipo sea auto administrado.
- Se mantiene la efectividad del equipo habilitando y protegiendo un entorno libre de interrupciones e interferencias.
- Permite producir software de una forma consistente, sostenida y competitiva.
- Las reuniones se dedican a inconvenientes recientes, evitando el estancamiento
Desventajas
- Requiere delegar responsabilidades al equipo, incluso permite fallar si es necesario.
- Es una metodología que difiere del resto, y esto causa cierta resistencia en su aplicación para algunas personas
Conclusión.
Scrum por sus características no es válido para cualquier proyecto ni para cualquier persona o equipo de personas. Es más, Scrum según muchos especialistas de esta metodología, es óptima para equipos de trabajo de hasta 8 personas, aunque hay empresas que han utilizado Scrum con éxito con equipos más grandes.
Scrum por sus características no es válido para cualquier proyecto ni para cualquier persona o equipo de personas. Es más, Scrum según muchos especialistas de esta metodología, es óptima para equipos de trabajo de hasta 8 personas, aunque hay empresas que han utilizado Scrum con éxito con equipos más grandes.
Se
puede decir que para el 90% de los proyectos y empresas, es una metodología
válida, pero no es una metodología válida al 100%. Es más, no hay metodología
mejor que otra ni válida al 100% para todas las personas y empresas.
Scrum es por lo tanto, una metodología más de las muchas que hay, Scrum no es ni la mejor metodología ni la única, pero es una metodología que está empujando muy fuerte por la facilidad de implantación y por su agilidad en cuanto a cambios y lo que propiamente aporta en comparación con otras metodologías.
Por un lado, Scrum evita la burocracia y la generación documental. No es que con Scrum no se deba o no se pueda documentar, si no que con Scrum no se exige documentar nada para iniciar un proyecto, algo que en otras metodologías es impensable.
Scrum es por lo tanto, una metodología más de las muchas que hay, Scrum no es ni la mejor metodología ni la única, pero es una metodología que está empujando muy fuerte por la facilidad de implantación y por su agilidad en cuanto a cambios y lo que propiamente aporta en comparación con otras metodologías.
Por un lado, Scrum evita la burocracia y la generación documental. No es que con Scrum no se deba o no se pueda documentar, si no que con Scrum no se exige documentar nada para iniciar un proyecto, algo que en otras metodologías es impensable.
Con Scrum por otro lado, la idea principal es la de ponerse a trabajar prácticamente desde el primer momento y empezar a sacar frutos de ese trabajo para que el cliente vaya viendo los avances y se quede satisfecho con lo que se está haciendo y cómo se está haciendo.
La idea de la metodología ágil es fundamentalmente que adopte los cambios, que se pueda reconducir el proyecto en un momento dado, y que afecte lo menos posible a los costes, los tiempos y al equipo de trabajo.
