miércoles, 6 de enero de 2010

Sprint #1 - Planificando enero




Como ya escribí en la retrospectiva, voy a intentar aplicar una especie de Scrum al blog. Tanto José Manuel Beas como Juan Quijano apuntaron en los comentarios de la anterior entrada los problemas que veían al aplicar Scrum para un blog. Es cierto que Scrum está orientado a productos desarrollados por equipos de varias personas y que no cuadra muy bien con un blog personal. Aún así, se que me va a servir para mejorar el ritmo de entradas, que es lo que busco. Además, los post de planificación y retrospectivas pueden ayudar a entender la parte de gestión de Scrum (que no es que sea muy difícil) A ver que tal sale, probablemente sea un "fail", pero voy a probar.

Roles de Scrum
En Scrum hay basicamente tres roles:
  1. Dueño de Producto - Gestiona la pila de producto
  2. Scrum master - Elimina los obstáculos que impiden que el equipo cumpla sus compromisos.
  3. Equipo - Desarrolla el producto.
Normalmente cada persona involucrada en el proyecto tiene asignado un único rol y existen varias restricciones.
  • Solo hay un dueño de producto (Se puede argumentar que puede ser un comité de expertos de negocio los que implementen dicho rol pero vamos, lo más adecuado es que sea una única persona de ese comité el dueño de producto. Personalizar ese rol en una persona ayuda al equipo, que tiene más claro a quien dirigirse).
  • Solo hay un Scrum Master.
  • El equipo está formado por una o más personas (En realidad, el equipo siempre es de más de una persona. He puesto una porque en este caso el equipo soy yo solo).
Yo haré de Dueño de producto, de Scrum master y de equipo :) Me voy a volver loco...


La Pila de Producto
Tenemos nuestro dueño de producto y nuestro equipo. Ahora necesitamos una pila de producto. Para no aburriros con muchos datos, solo voy a contaros los temas que he metido en la pila (si continúo con el blog-scrum la presentaré en futuros posts) mientras llevaba puesto mi gorro de dueño de producto.
Voy a seguir con la serie de principios ágiles y con el resumen del libro "Agile Testing". También he añadido unos cuantos temas técnicos (Orientados sobre todo a testing, aunque hay algo de TDD). Además, he incluido una historia para el resumen de la reunión del día 19 de Agile-Spain Madrid.

Planificación de la iteración
Creada la pila ¡podemos empezar a planificar la primera iteración!
Sigo con el gorro de dueño de producto. Lo primero que tengo que decidir es la duración de este sprint. Como quiero incluir la historia con el resumen de la reunión he pensado en una iteración de dos semanas. Quedan las fechas del sprint como siguen:
  • Planificación - Miércoles 6 de Enero
  • Inicio de Sprint - Jueves 7 de Enero
  • Fin de Sprint - Jueves 21 de Enero
  • Retrospectiva - Viernes 22 de Enero (Creo que esta se puede alargar al fin de semana del 22...)
Ahora toca ver que entra en la iteración. Para ello primero debo conocer la disponibilidad del equipo y las estimaciones de las historias. Me pongo mi gorro de Scrum master y os cuento que, para simplificar un poco, voy a igualar los puntos de historia a horas ideales (Se que no está muy bien, pero voy a empezar así).

Disponibilidad del equipo
Me pongo ahora el gorro de equipo. Como es el primer sprint aún no conozco mi velocidad así que voy a ponerme una a ojo. Una persona durante quince días dedicándole unas seis horas a la semana me dice que, más o menos, mi velocidad es de 12 puntos de historia.
Estimación de las historias
Todavía con mi gorro de equipo estimo las primeras historias de la pila:




Selección de las historias del sprint

Una vez estimadas las historias vuelvo a ponerme el gorro de dueño de producto para decidir que historias de las estimadas entran en el sprint.
Estas 4 historias suman 15 puntos y solo tengo 12 disponibles ¿Qué hago? Tengo varias opciones:
  • Puedo intentar convencer al equipo para que aumente su nivel de compromiso y acepte hacer los 15 puntos. He estado discutiendo conmigo mismo (cambiando de gorro mientras lo hacía, menudo cuadro) y he decidido que el equipo no puede aumentar su compromiso (Hay que hacer más cosas en la vida...)
  • Puedo reordenar las historias de forma que las tres historias con estimación 4 entren en la iteración. El problema de esta opción es que uno de los requisitos era tener al menos una historia técnica por sprint.
  • Puedo regalarle un punto al equipo y que hagan las 3 historias más prioritarias. Me quedo con esta opción.
Decidido entonces. Las proximas entradas del blog serán:
  1. Principios ágiles #4. Continuamos con la serie sobre principios ágiles. Esta vez toca "Negocio y tecnología deben trabajar juntos" (traducción libre :) ).
  2. Resumen reunión 19 Enero Agile-Spain. Podéis ver toda la información sobre la reunión en esta página. Animaos y venid.
  3. Contract tests. Una idea muy buena que ya leí en "Practical API design: Confessions of a Java framework architect" y que he recordado gracias a este post de J.B. Rainsberger :) Qué son y como se hacen con JUnit.
Burndown
Por último, falta el burndown de la iteración. Iré actualizándolo regularmente con los avances :D






  1. Reunión Diaria (Scrum diario) del 7 de Enero: Al ser la primera, lo único que se hace es que cada miembro del equipo elija la tarea en la que quiere trabajar. Yo elijo la tarea "No hacer nada porque no tengo tiempo". 
  2. Reunión Diaria (Scrum diario) del 8 de Enero
    • ¿Qué hiciste ayer? Nada. Como no hice nada no reestimo la duración de las tareas quedando un burndown plano. Como siga así veras que risa.
    • ¿Qué vas a hacer hoy? Hoy voy a intentar empezar el post sobre el cuarto principio ágil.
    • ¿Algún impedimento? Nop.
  3. Reunión Diaria (Scrum diario) del 9 de Enero
    • ¿Qué hiciste ayer? Empecé la historia de los principios ágiles. Reestimo que me quedan unas 3 horitas. Esta reestimación hace que el burndown de reestimación baje un poquito, hacercandose al ideal. Sin embargo el de terminado sigue plano ya que aún no he acabado ninguna historia.
    • ¿Qué vas a hacer hoy? Voy a continuar con dicho artículo, aunque no se si voy a poder hacer mucho.
    • ¿Algún impedimento? Ninguno, de momento.
  4. Reunión Diaria (Scrum diario) del 10 de Enero
    • ¿Qué hiciste ayer? Pues al final no hice nada. Me pudieron las ganas de darle caña al modern warfare 2. ¡Que vicio!
    • ¿Qué vas a hacer hoy? Hoy voy a avanzar sí o sí con la historia de los principios ágiles.
    • ¿Algún impedimento? No.
  5. Reunión Diaria (Scrum Diario) del 11 de Enero
    • ¿Qué hiciste ayer?
      He creado el esqueleto del post. Yo creo que con un par de horitas más lo acabo
    • ¿Qué vas a hacer hoy? Nada, me parece que hoy toca ver una peli.
    • ¿Algún impedimento? No
  6. Reunión Diaria (Scrum Diario) del 12 de Enero
    • ¿Qué hiciste ayer?
      Nada :(
    • ¿Qué vas a hacer hoy? Hoy espero terminar una primera versión de la entrada
    • ¿Algún impedimento? No
  7. Reunión Diaria (Scrum Diario) del 13 de Enero
    • ¿Qué hiciste ayer? He seguido avanzando en la entrada de los principios y casi la tengo lista :)
    • ¿Qué vas a hacer hoy? Hoy espero terminar la entrada
    • ¿Algún impedimento? No
  8. Reunión Diaria (Scrum Diario) del 14 de Enero
    • ¿Qué hiciste ayer? Terminé la historia de los principios ágiles :D y empecé con la de la reunión, pero no la puedo hacer porque ¡todavía no hemos hecho la reunión!
    • ¿Qué vas a hacer hoy? Hoy puede que empiece con la de "Contract tests"
    • ¿Algún impedimento? No puedo hacer la historia más prioritaria...
  9. Reunión Diaria (Scrum Diario) del 15 de Enero
    • ¿Qué hiciste ayer? He creado el borrador de Contract Test, pero no he podido escribir nada :D Por lo menos me he registrado en github, donde dejaré el código de los ejemplos
    • ¿Qué vas a hacer hoy? Hoy voy a crear los ejemplos para "Contract tests" y, si me da tiempo, escribiré algo
    • ¿Algún impedimento? No
  10. Reunión Diaria (Scrum Diario) del 16 de Enero
    • ¿Qué hiciste ayer? Además de ver perder al Madrid he estado trabajando en la entrada de Contract Test. Con un poco más de esfuerzo la tengo lista para el lunes :D
    • ¿Qué vas a hacer hoy? Seguir con la entrada. Tengo que hacer los ejemplos y poner el código en el post
    • ¿Algún impedimento? No
  11. Reunión Diaria (Scrum Diario) del 17 de Enero
    • ¿Qué hiciste ayer? ¡Acabé la historia de las Pruebas de Contrato!
    • ¿Qué vas a hacer hoy? Hasta despues de la reunión no creo que haga nada :D
    • ¿Algún impedimento? No
  12. Reunión Diaria (Scrum Diario) del 18 de Enero
    • ¿Qué hiciste ayer? Nada. Bueno, preparar la reunión de Agile-Madrid
    • ¿Qué vas a hacer hoy? Nada
    • ¿Algún impedimento? No
  13. Reunión Diaria (Scrum Diario) del 19 de Enero
    • ¿Qué hiciste ayer? Nada. Bueno, preparar la reunión de Agile-Madrid
    • ¿Qué vas a hacer hoy? Nada
    • ¿Algún impedimento? No
  14. Reunión Diaria (Scrum Diario) del 20 de Enero
    • ¿Qué hiciste ayer? Hice la presentación sobre Definition of Done al grupo de Madrid. También he escrito el resumen en el sitio de Agile-Madrid
    • ¿Qué vas a hacer hoy? Hoy terminaré la entrada sobre la reunión en el blog :D
    • ¿Algún impedimento? No
  15. Reunión Diaria (Scrum Diario) del 21 de Enero
    • ¿Qué hiciste ayer? Termina la historia de la reunión de agile Madrid :D
    • ¿Algún impedimento? No
    • Hoy no preguntamos que vamos a hacer porque esta reunión simplemente identifica lo que nos ha dado tiempo a terminar el último día de sprint :D. ¡Nos vemos en la retro!
Foto de "portada":  Galería de Wyscan en Flickr, bajo licencia Creative Commons.

6 comentarios:

  1. Bueno Alberto,

    en menudo jardín te estás metiendo, espero que con tanto cambio de gorro no termines teniendo que ir a un psicoanalista ;-)

    Al final veo que lo que quieres es marcarte un compromiso público de publicación en el blog, lo cual me alegra para poder seguir leyendo tus post sobre los Principios ágiles que he seguido en los 3 anteriores y me han parecido muy interesantes.

    Lamento no poder ir a Madrid a la reunión del 19, pero esperaré con ganas tu resumen para enterarme un poco mas de Concordion y Fitnesse.

    Un saludo,

    Jorge Jiménez

    ResponderEliminar
  2. ¡¡Me ha encantado!! Da igual si resulta un "fail" o no. De momento es un estupendo gancho de marketing de tu blog. Te vas a asegurar unas cuantas visitas regulares más. ;-)

    P.S.
    ¡Si Google no te roba el blog, claro!

    ResponderEliminar
  3. Me parece genial la idea, y además, al leerlo también aclarará mucho sobre el proceso, porque lo has escrito genial. Supongo que es una locura, pero yo empecé a hacer algo así en mi vida con mi pareja (limpieza, deporte, compras, ...) y bueno, no nos va mal.

    ResponderEliminar
  4. Me alegro que os está gustando :D

    La verdad es que me pareció buena idea para enseñar un poco por encima como hacer Scrum. Eso sí, tengo que decir que, a la hora de aplicar Scrum al software soy mucho más taliban :D

    Gracias a todos por los comentarios :)

    ResponderEliminar
  5. ¡Gracias! Una pena que después lo dejara olvidado :(

    ResponderEliminar