Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tabla de Contenidos
Este es la primer gua, de las tres que estn en carpeta sobre el tema Agile & Scrum.
Aqu vas a encontrar las definiciones formales pero tambin muchos consejos
prcticos aprendidos de aos trabajando en este tipo de proyectos. Espero que te
resulte entretenido.
Atentamente
Otras veces son factores externos los que hacen el proyecto insufrible. En particular
proyectos largos, donde el objetivo se pierde, y ms que avanzar estamos da tras
da luchando con estructuras muy fijas, etapas, documentacin, plazos tallados en
piedra que fueron poco realistas desde su concepcin; a veces meses antes.
De ah que surgi una nueva forma de trabajar; de esto ya casi quince aos: La
metodologa gil. Aunque algunos tambin la llaman XP (Extreme Programming), o
Programacin Extrema, entre otros nombres.
Confieso que hasta hace muy poco yo pensaba que era una de esas formas de
trabajo, medio bohemia y "a lo que salga, que poda ser utilizada solo en empresas
pequeas, con proyectos poco importantes. Pero en realidad Qu es Scrum?
Todos los proyectos que vena haciendo yo en consultora, por ms de quince aos,
fueron solo en Cascada, y no solo eso: Cascadas muy pero muy elaboradas, como
la de la Compaa de Energa, que tena su propio manual de metodologas tipo
PMP para la entrega de proyectos.; eso sobre el Manual que ya llevaba yo de mi
propia empresa de como entregar proyectos en cascada segn nosotros. PERO
al final - ESTABA EQUIVOCADO AL PENSAR AS.
Tuve oportunidad de hacer cursos de SCRUM, tanto como DESARROLLADOR como
tambin de SCRUM MASTER (el que facilita y lleva a trmino cada una de las
iteraciones); el Jefe de Proyectos de la forma de trabajo SCRUM.
Para que lo entendamos con claridad. Una vez que tenemos el objetivo que nos da
el cliente (una pgina web, una serie de componentes, lo que sea), debemos
sentarnos a preparar el proyecto Scrum, conseguir el equipo adecuado, y dividir el
trabajo que nos pide el Dueo del Producto (Product Owner, o PO) normalmente
el cliente - , trozndolo en tareas ms pequeas en una Lista de Producto (Product
Backlog). Todo el equipo hace un ejercicio de estimacin de esfuerzo para cada una
de esas tareas, al menos las iniciales. Se decide cuantos Sprints (o Iteraciones)
haremos, de acuerdo al tiempo de proyecto, y por ende cuantas Entregas (Releases,
a produccin). Por ej.: Un proyecto de 8 semanas, con Sprints de dos semanas y
dos releases, una a la 4 (cuarta) y otra a la 8 (octava) semana.
Entonces cada lunes que comienza un sprint de dos semanas, se rene el equipo y
elige que tareas de la Lista de Productos va a realizar durante esas dos semanas, en
esa iteracin. Las tareas se reparten intentando cubrir las prioridades dadas por el
Dueo del Producto, pero no hace falta tomar la #1. Entonces de una lista de 100
tareas totales, elegimos 10, por ejemplo, de distinta complejidad. La estimacin del
esfuerzo que hicimos antes nos permite intuir que podemos hacer entre todos los
del equipo unas 2 tareas complejas, 4 de mediana complejidad, y 4 simples.
Entonces cada uno trabaja en esas tareas con el objetivo de terminarlas bien, de
darlas por Terminada, testeada, integrada, potencialmente entregable al usuario
final (sino no se considera terminada por ms que casi casi ya este). Hay reuniones
muy cortas todos los das llamada el Scrum Diario (el Daily Scrum), y cada miembro
del equipo tiene la oportunidad de contar lo que hizo el da anterior, lo que espera
hacer hoy, y que obstculos le preocupan. Es tarea del Scrum Mster el quitar esos
obstculos del camino (llamados tambin impedimentos); luego se encarga de
promover el dialogo, facilitar el trabajo.. y por ultimo no menos importante
ocuparse de escudar/proteger el equipo de cualquier interaccin con el mundo
exterior, el cliente, o nuevos requerimientos, hasta que las dos semanas se
terminen.
Al ser un marco, no una metodologa que hay que seguir a rajatablas, SCRUM puede
ser adaptado a las necesidades del proyecto, es flexible, y tiene en la mira
permanentemente el tema de la mejora incremental del producto que se pretende
entregar.
Empirismo
Es la palabra clave que describe de que se trata SCRUM. Que en realidad significa
que conoceremos mejor aquello que experimentamos, por tanto iremos
mejorando nuestra calidad, cantidad, capacidades, y muchos otros parmetros tras
cada iteracin del proyecto.
Y entonces se apoya en tres pilares que hay que tener siempre en cuenta:
TRANSPARENCIA, INSPECCION y ADAPTACION
Transparencia:
Que todos los interesados, el equipo, el dueo del producto (el cliente); todos
sepan cmo est la situacin en cualquier momento dado. Que las reglas sean
claras, por ejemplo la de los criterios que usaremos para dar por Terminado un
trabajo. Tiene que haber sido testeado? Tiene que haber sido revisado por un
colega? etc. Todo muy claro, si es posible, impreso y a vista de todos en la oficina.
Inspeccin:
Adaptacin:
Para trabajar en un proyecto Scrum tenemos que entender cules son los pilares
de los proyectos Scrum. Y estos son: Compromiso, Concentracin, Franqueza,
Respeto y Coraje... lo necesario para ir a cualquier batalla.
Compromiso
Que el equipo tenga un deber con la calidad; con la colaboracin y el deseo de
aprender e intentar ser cada da mejores, ms eficientes en su trabajo. Que no sea
una obligacin pero un acuerdo ser profesionales, auto-organizarse, y el
compromiso de entregar un software funcional, ni ms ni menos.
Concentracin:
Franqueza:
Ser transparentes sta es una palabra clave en Scrum -. Ser sinceros en el estado
actual de nuestro trabajo. Y ser abiertos a dar una mano al compaero que puede
necesitarla. Dar opiniones leales, y aceptar valoraciones de nuestro trabajo por
parte de otros miembros del equipo.
Respeto:
Estar siempre consciente que todos somos distintos. Y en organizaciones globales,
especialmente, el hecho que los miembros del equipo pueden provenir de culturas
distintas. Y, en particular, respetar la experiencia y forma de pensar del otro; sus
derechos y sus responsabilidades.
Coraje:
Mostrar audacia por ejemplo en no hacer una tarea que no aporta ningn valor
al producto final. Bravura en ser sinceros y transparentes, aunque nos afecte.
Admitiendo que nadie es perfecto, y que podemos equivocarnos Y cambiar de
rumbo si fuera necesario. Y, por ltimo, en saber pedir ayuda.
El Equipo Scrum
Los equipos auto gestionados eligen ellos que trabajo hacer; cmo hacerlo; y que
criterios usar para darlo por Terminado en cada Entrega Incremental
El Dueo de Producto
Lo dicho, normalmente es parte del cliente, pero puede ser una persona que
conoce muy bien el negocio, y el sistema a ser entregado; lo suficiente como para
definir granularmente las tareas a ser completadas. Es la nica persona que es
RESPONSABLE de gestionar la Lista de Producto (Product Backlog) o sea, la lista
discreta de tareas que el Scrum Mster y el Equipo de Desarrollo debe entregar
sprint a sprint. Aunque puede delegar esa tarea, la responsabilidad no se delega.
Al ser el nico responsable, es tambin el nico que puede venir con nuevos
requerimientos de parte del cliente. Y es trabajo del Scrum Mster de controlar que
esos nuevos pedidos no interfieran con lo que el equipo ya esta haciendo en este
periodo (sprint)
El Equipo de Desarrollo
Son las personas que tienen que entregar las tareas de cada iteracin o sprint en
un formato Terminado. No a medias tintas.
En cuanto a su nmero, se acuerda que tiene que estar entre 4 y 9 miembros (ni
tan pocos como para que haya problemas de capacidad al realizar las distintas
tareas, ni tantos como para que no puedan trabajar en equipo). A esto hay que
agregarle que no podemos agregar nuevos miembros durante el sprint porque
rompe con la sinergia del grupo (y obligatoriamente debemos re-comenzar el
sprint si as fuera)
El Scrum Mster
En otras palabras, es quien debe dar la cara ante la Organizacin, pero por sobre
todo llevar el librito bajo el brazo para explicar una, y mil veces, que es Scrum y
cmo sacarle mayor valor a la experiencia de utilizarlo.
Lista de Producto en Scrum (Product Backlog)
No hay nada peor en Scrum que tener un Dueo de Producto (Product Owner) que
no le da importancia a la Lista de Producto en Scrum (Product Backlog).
Cada uno de esos items suele llamarse PBI (Product Backlog Item) o ILP (tem de la
Lista de Producto).
Cada Item debera tener las siguientes caractersticas:
Mediante las historias de usuario que son de un nivel muy alto podemos
extrapolar acciones, y de esas acciones, finalmente tareas (que son las que
necesitamos en nuestro PBI.
Las Historias de Usuario, en general tienen una estructura estable: Como un <tipo
de usuario>, necesito <alguna funcionalidad> con la finalidad de <razn o
resultado>.
Imagen de Ejemplo:
La Lista de Tareas de Sprint (o de una iteracin o ciclo) est muy unida a la Rapidez
(Velocity) de nuestro equipo. Cunto trabajo puede dar por "Terminado" en el
perodo de tiempo convenido del Sprint.
El plan debe tener suficiente detalle como para poder ser seguido, evaluado,
mientras avanza su desarrollo durante el Sprint. Para eso es comn utilizar una
pizarra con columnas, as nos vamos ubicando en qu estado est cada tem en un
momento dado.
Cada vez que se identifica una nueva tarea (por ejemplo: la correccin de una
funcionalidad entregada anteriormente, un nuevo bug, puede ser agregada a la
Lista de Tareas del Sprint. Slo el Equipo de Desarrollo puede agregar tareas
durante el Sprint (nunca el Dueo de Producto, que debe saber esperar; ni mucho
menos el Scrum Mster, que est slo para facilitarle las cosas al equipo).
La Lista de Tareas de Sprint es muy visible, ya que casi siempre est puesta en la
pared, con sus papeles de colores movindose hacia la columna de "Terminado".
Siempre hay riesgo que el equipo tome demasiados tems (o por el contrario muy
pocos) durante los primeros ciclos o Sprints. Esto sucede hasta que encuentre su
"Rapidez" y pueda pronosticar mejor cunto trabajo puede realizar en ese perodo.
Cmo lograr una mejor seleccin de las tareas que vamos a hacer en un Sprint?:
Una alternativa son las reuniones de Refinamiento de la Lista de Producto
Hay una nueva corriente de pensamiento que cree que en crear una reunin
semanal peridica, de "Refinamiento de la Lista de Producto". Una reunin
donde todos (incluso el Dueo del Producto) puedan sentarse a discutir y agregar
detalles a cada una de las tareas. Hay un alto riesgo que ser termine con ms tems
en la cola de tareas, as que hay que estar muy atentos.
Esta reunin puede ayudar a la hora de elegir las Tareas que vamos a incluir en
un Sprint.
Una lista de tareas bien definidas. No es necesario que sean todas las del
Sprint
o Logran una buena estimacin del esfuerzo.
o Un entendimiento profundo de cada tarea, al punto que el equipo de
desarrollo pueda tomarla sin miramientos,
Importante: No perder mucho tiempo en el diseo. Recordemos
que en Scrum, todo es incremental.
o Dividir las tareas donde haga falta.
o Agregas Historias de Usuarios y Detalles.
Lograr que haya suficientes detalles en los tems de la Lista de Producto, que
el equipo pueda tomar esos tems en - por los menos - dos futuros Sprints.
El Sprint o la Iteracin en Scrum
No existira Scrum si no fuera por los Sprints. Eso est claro.
Los Sprints deben tener una duracin estable durante a lo largo del proyecto. Y un
nuevo Sprint comienza ni bien termina el anterior, tantas veces como se haya
decidido al principio.
Dentro del Sprint se definen una serie de Eventos que son todos fundamentales:
Durante un Sprint, no puede haber cambios que afecte el Objetivo del Sprint. Por
ejemplo, no puede agregarse ms gente al equipo - por ms que se pudiera pensar
que eso es algo favorable. La naturaleza dinmica y complementaria de las
capacidades del grupo hace que el agregar un nuevo componente rompa la
relacin del grupo (ya que no sabemos probadamente que capacidad aporta).
Tambin eso implica que el riesgo de prdida - o el costo de lo que se haya hecho
mal, decrece a un mes.
Una prctica comn es comenzar un Sprint los martes, mircoles o jueves. Ya que
los lunes y viernes son considerados das menos productivos.
Pero no es necesario que estas se lleven a cabo el mismo da, ni mucho menos.
Planificacin del Sprint
Como ocurren en los proyectos en Cascada, cuando se planifica mal, se acaba mal.
La Planificacin del Sprint es igualmente importante. Despus de todo es - como
decamos antes - un mini proyecto en s mismo.
El trabajo que tenemos que realizar durante una Iteracin, o Sprint, se planea
precisamente en la reunin de Planificacin del Sprint. Todo el equipo debe
participar: El Equipo de Desarrollo, el Dueo del Producto y el Scrum Mster.
Como todos los dems eventos en Scrum, la reunin de Planificacin del Sprint
tiene un tiempo muy acotado, en promedio de 8 horas por cada mes de Sprint (as
que si tenemos Sprints de dos semanas, debemos sentarnos en esta planificacin
el primer da, y por un mximo de cuatro horas).
Por cierto, no s si lo mencion antes, en Scrum el "Resultado" que se entrega al
final de cada Sprint se llama "Incremento".
Despus que el Equipo de Desarrollo haya decidido que tems incluir en la Lista de
Tareas del Sprint, tienen que ponerle nombre a la "Meta del Sprint". Por
ejemplo: Mejorar la experiencia del usuario en las Pginas de Mis Pedidos.
La Meta del Sprint es un objetivo que se debera alcanzar, si se finalizan todas las
tareas que pusimos en la Lista, y proveen una gua al Equipo de Desarrollo
como referencia de porqu est creando ese Incremento en particular. Una
orientacin y motivacin.
Otros ejemplos:
Hacer que la aplicacin funcione tanto en la Web como en un telfono mvil.
Mejorar la habilidad del Panel de Control
Mejorar los tiempos de respuesta de la Aplicacin.
Como vemos, las Metas de Sprint suelen ser bastante "generales" o difusas, Y AS
DEBEN SER. La idea es que si bien nos podemos ver forzados a quitar un tem de
la Lista porque no llegamos con el tiempo, podamos decir al Dueo del Producto,
en la Revisin del Sprint, que la Meta ha sido cumplida.
El Scrum Diario Daily Scrum
El Scrum Diario, el momento en que comentamos cmo va la serie o la peli que
vimos la noche anterior. Naah, es broma. Es en esta mini reunin (de quince
minutos, no ms) en la que nos ponemos al da de cmo va el proyecto.
Consejo: El scrum diario tiene que ser siempre en el mismo lugar y a la misma
hora. Es ms, propongo hacerlo de pie, que sea dinmico, frente a la pizarra. Que
nadie se ponga cmodo.
En el scrum diario tienen que estar todos, el Dueo del Producto, el Scrum Mster,
y claro... el Equipo de Desarrollo. Puede haber otros invitados, pero estn slo para
observar. Es el momento donde se discute todo lo que hay que hacer en el da, el
momento de informarse qu es lo que tiene que pasar hoy.
El scrum diario - o daily scrum - no es para "controlar" lo que cada uno est
haciendo. Sino el momento donde cada miembro del Equipo de Desarrollo se
compromete, cara a cara, a hacer lo que dice. Este punto es muy importante, es
donde nuestro compromiso queda grabado en la memoria de todos. No podemos
fallarles.
Otra alternativa, en vez de ir persona por persona, es ir tem por tem en la Lista de
Tareas. Asi hay ms oportunidades de interactuar para cada persona.
La reunin de scrum diario debe ser de 15 minutos, no ms. No hay que perder el
tiempo. Lo que necesite ms tiempo para ser discutido debe ser agregado al listado
de tareas y punto.
Y recuerda, si eres Scrum Mster, ests all slo para facilitar, no para gestionar ni
asignar tareas.
En Scrum, el proceso de Retrospectiva (que se hace al final del Sprint, luego de que
se enseasen los resultados al Propietario del Producto - el cliente -), es un ejercicio
para re-alinearse con las nuevas lecciones aprendidas. En particular, tiene que ser
una charla abierta, sincera y honesta, entre todo el equipo.
Preguntarse:
Qu funciono bien?
Qu cosas deberamos intentar mejorar en la prxima iteracin (sprint)?
Qu lecciones hemos aprendido?
Y MUY IMPORTANTE: contarle al Scrum Master, el Facilitador, cuales son los
obstculos previstos (para que se ponga a trabajar en removerlos)
Lo que suele suceder - lamentablemente - es que mucha gente dentro del proyecto
piense que el ejercicio de Retrospectiva no sirve para mucho, y entonces
desperdician ese tiempo (aunque suelen reservar ese espacio ya que creen que es
una de las partes necesarias - por definicin - de un Scrum).
Hay varias formas de hacer las Retrospectivas entretenidas y hasta divertidas; hay
muchas diferentes tcnicas tambin, ninguna en particular ms til que la otra.
Como la de la Estrella de Mar (que veremos luego).
Pero tambin es un problema hacerlo "divertido"; Hay muchos consultores, o
programadores, que se toman sus trabajos muy enserio y que suelen esconderse o
desconfiar si ven alguna actividad de grupo que parezca divertida. Pero
necesitamos de esas cosas. Est claro.
No solo se trate de escuchar lo que el equipo dice, sino tambin de lo que no dicen,
de los gestos corporales, las inquietudes aparentes, o el tono de voz.
El consejo que Norm Kerth - un gur en estos temas - da, respecto a Retrospectivas,
es intentar que todo el equipo vaya a ellas con el pensamiento de que cada uno de
los dems presentes ha hecho lo mejor posible para lograr sus objetivos; evitar
estar a la defensiva, pensando en los prejuicios o pre-conceptos que tenemos de
esa persona, o que tienen una agenda (o plan ulterior) y que no es sincera. Es como
que nos pusiramos filtros, y realmente no "escuchamos".
Revisin del Sprint Sprint Review
Al fin y al cabo, lo nico importante en Scrum es lo que est "Terminado", lo que el
cliente puede empezar a usar ya mismo si quisiera. Para eso, debemos pasar la
Revisin del Sprint - Sprint Review. La reunin de "presentacin" del Incremento, o
en otras palabras, de lo que hemos logrado, del resultado del ciclo.
Como decamos, es sta una reunin informal, para mostrar progresos y captar
comentarios; refinar si acaso el Backlog.
Es durante la reunin de Revisin del Sprint tambin que todos evalan si la META
del Sprint se ha cumplido o no. ??Recuerdan? La meta es aquel nombre - un tanto
genrico - con el que bautizamos el objetivo que tenamos para ese ciclo.
KANBAN
Un placer tener que escribir sobre Kanban. Pocas veces uno se encuentra con un
sistema "nuevo" - por as decirlo - que pueda agregar mucha productividad a un
equipo de trabajo. As de til result ser, en Proyectos giles, una pizarra Kanban.
En las metodologas giles, como en Scrum, una de las partes importantes de cada
ciclo o Sprint es cuando los desarrolladores escogen una tarea (o ms) de la Lista
de Pendientes. En Scrum esto se suele hacer de modo voluntario, de acuerdo a las
capacidades de cada persona en el equipo. Ellas se encargan de llevar esa tarea a
un nivel necesario (definido por lo que el equipo considera como "Terminado".
Hasta ah lo que sabamos, y nos iba muy bien.
En una pizarra Scrum, normal tenemos una columna para las tareas:
La ventaja que tiene este modelo es que vamos generando tems finalizados
constantemente.
Aqu algunos ejemplos (podemos ver arriba, donde est el nombre de la columna,
la cantidad de tems que puede aceptar)
La caracterstica principal que tiene Kanban, es que limita el trabajo que se puede
hacer en un momento dado. Es ms realista que otros paradigmas.
Los primeros - conocidos - en utilizar Kanban, aunque no lo llamaran as, fueron los
equipos de produccin de Toyota, con sus entregas "Just in Time" o JIT (en el
tiempo preciso). Los tems, ordenes, tareas, entran en una cadena de pasos que
fluye haca su entrega o culminacin, pero es consciente de las limitaciones que
puede haber para trabajar en un nmero de piezas o tems en una misma maquina
o proceso (para nosotros son columnas).
Para mi, personalmente, es una adicin a los conceptos de Scrum que mejora la
metodologa. Esto no es decir que Kanban es mejor que el Scrum tradicional. De
hecho, en la prctica, Kanban es ms lento, pero constante. A veces eso puede ser
importante para el cliente.
Otro gran valor de Kanban es que hace que el equipo de trabajo aprecie cun
importante es terminar lo que se comienza. Porque Kanban necesita que los tems
vayan movindose para hacer lugar a otros. Como una autentica cadena de
produccin.
La nica crtica que tiene Karban, en general, es que la estructura es tan dinmica
y la secuencia de pasos tan explcita, que se pierde un poco el sentido de urgencia
en algunas tareas. Muchos equipos optan por hacer otra lnea en la pizarra
marcando las urgencias y as contrarrestar ese efecto.
En conclusin: Si van a empezar un proyecto gil. Prueben con Kanban, al menos
un par de Sprints o Ciclos. Se pueden llevar una sorpresa muy agradable.
MUCHAS GRACIAS