Mostrando entradas con la etiqueta Scrum. Mostrar todas las entradas
Mostrando entradas con la etiqueta Scrum. Mostrar todas las entradas

miércoles, 27 de enero de 2010

Sprint #2 - Aceptando el riesgo


Os presento la segunda planificación del ScrumBlog. Si no leistéis la primera planificación podéis echarle un ojo ahora (Allí explico un poco los roles de Scrum y las fases de la planificación). Doy eso por sabido y me meto directamente a planificar.

Planificación de la iteración
Voy a intentar que todas las iteraciones duren lo mismo, por lo que esta también durará 15 días. Quedan las fechas del sprint como siguen:
Planificación - Miércoles 27 de Enero
Inicio de Sprint - Jueves 28 de Enero
Fin de Sprint - Jueves 11 de Febrero
Retrospectiva - Viernes 12 de Febrero

Disponibilidad del equipo
Tal y como señale en la retrospectiva, la velocidad del equipo es de 11 puntos de historia cada 15 días. Dado que la disponibilidad del equipo es la misma que en la iteración anterior, fijamos los puntos de historia en 11.

Estimación de las historias
Veamos el estado de la pila de producto:



El equipo ha estimado las historias pero, si os fijáis bien, la historia de FitNesse aparece con un símbolo de exclamación. Esto es debido a que dicha historia tiene un factor de riesgo alto debido al desconocimiento del equipo en la tecnología a utilizar. La idea es hacer un ScreenCast cuando nunca he hecho ninguno. Es muy probable que mi estimación sea mala pero, es la mejor que puedo hacer.
¿Qué hacemos con este tipo de historias? Existen varias alternativas. Las que yo considero más adecuadas son las siguientes:

  • Fijar un limite de tiempo a dedicar a dicha tarea (en este caso 4 horas) de forma que, si mientras estamos investigando como realizar dicha historia nos damos cuenta de que la complejidad es mucho mayor que la que estimamos, dejemos dicha historia para la siguiente iteración.
  • Dividir la historia en dos. Por un lado tendríamos una historia para la formación del equipo y otra historia para la ejecución.
En este caso, tras hablarlo con el dueño de producto optamos por la primera de las opciones (algo más arriesgada). Si al final se lía la cosa el cliente como el equipo tendrán claro el por qué.

Selección de las historias del sprint
Estas 4 historias suman 12 puntos y solo tenemos 11 disponibles. Volvemos a encontrarnos con que no entran todas en el sprint. Sin embargo, esta vez, después de acaloradas discusiones entre el equipo y el dueño de producto, se decide aumentar el nivel de compromiso del equipo para que entren las cuatro historias en la iteración, por lo que las proximas entradas del blog serán:

  1. Principios ágiles #5. Importancia de la motivación de, la confianza hacia y el apoyo a las personas involucradas en el proyecto.
  2. How To: Primeros pasos con FitNesse. Mi primer ScreenCast. Espero que no sea el último :D Además, este ScreenCast lo añadiré al resumen de la reunión de Madrid para completarlo un poco más.
  3. Principios ágiles #6. Comunicación cara a cara como método más eficiente y efectivo para que fluya la información.
  4. How To: Mockeando llamadas asíncronas con easymock. ¿Os habéis planteado como hacer TDD con llamadas asíncronas? Intentaremos explicarlo en esta entrada.


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 28 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. Voy a intentar escribir la entrada sobre el quinto principio ágil. Al menos el primer borrador
  2. Reunión Diaria (Scrum Diario) del 29 de Enero
    • ¿Qué hiciste ayer? Comence con el quinto principio, pero avancé menos de lo que esperaba. Me quedan un par de horitas todavía
    • ¿Qué vas a hacer hoy? Hoy espero terminar la entrada
    • ¿Algún impedimento? No
  3. Reunión Diaria (Scrum Diario) del 30 de Enero
    • ¿Qué hiciste ayer? Nada :( Las cañas de los viernes pudieron al blog
    • ¿Qué vas a hacer hoy? Hoy espero terminar la entrada
    • ¿Algún impedimento? No
  4. Reunión Diaria (Scrum Diario) del 31 de Enero
    • ¿Qué hiciste ayer? Pues hice un poquito más de la entrada de los principios. pero aún le falta una horita
    • ¿Qué vas a hacer hoy? Nada
    • ¿Algún impedimento? No
  5. Reunión Diaria (Scrum Diario) del 1 de Febrero
    • ¿Qué hiciste ayer? Pues jugar al COD. Menudo vicio.
    • ¿Qué vas a hacer hoy? Hoy acabo la entrada sí o sí
    • ¿Algún impedimento? No
  6. Reunión Diaria (Scrum Diario) del 2 de Febrero
    • ¿Qué hiciste ayer? ¡Terminé la entrada!
    • ¿Qué vas a hacer hoy? Pues investigar un poco como va lo de los screencasts
    • ¿Algún impedimento? No
  7. Reunión Diaria (Scrum Diario) del 3 de Febrero
    • ¿Qué hiciste ayer? Pues al final no me dio tiempo a hacer nada.
    • ¿Qué vas a hacer hoy? Creo que tampoco me va a dar tiempo a hacer nada, pero igual preparo el guión del screencast
    • ¿Algún impedimento? No
  8. Reunión Diaria (Scrum Diario) del 4 de Febrero
    • ¿Qué hiciste ayer? Terminé el guión del screencast.
    • ¿Qué vas a hacer hoy? Hoy me voy de concierto, así que nada
    • ¿Algún impedimento? No
  9. Reunión Diaria (Scrum Diario) del 5 de Febrero
    • ¿Qué hiciste ayer? Nada
    • ¿Qué vas a hacer hoy? Hoy voy a ver a los Arctic Monkeys, así que nada
    • ¿Algún impedimento? No
  10. Reunión Diaria (Scrum Diario) del 8 de Febrero
    • ¿Qué hiciste ayer (y antes de ayer y antes de antes de ayer)? Pues no pude ponerme con el screencast porque vinieron invitados a casa pero al menos saqué tiempo para avanzar con el sexto principio ágil. Le queda una horia más a esa entrada.
    • ¿Qué vas a hacer hoy? Quiero intentar el screencast, a ver si tengo tiempo.
    • ¿Algún impedimento? No


Foto de "portada":  Galería de boo_licious en Flickr, bajo licencia Creative Commons.

lunes, 25 de enero de 2010

Retrospectiva #2




Bueno, pues parece que hemos terminado la primera iteración del ScrumBlog :D Vamos a "retrospectivar" un rato sobre dicha iteración.

¿Por donde empezamos?
Vamos a empezar calculando la velocidad del equipo y su eficacia. Para ello vamos a basarnos en el burndown de la iteración. Podemos ver que la velocidad del equipo se corresponde a 11 puntos de historia y su eficacia es de un 100%. Estos datos nos servirán como base para la próxima planificación.

Parece que ha sido una buena iteración ¿no? Veamos que opina el equipo (Como ya hicimos en la retrospectiva anterior, vamos a hacer a basarnos en 3 preguntas para llevar la retro).

¿Qué nos ha gustado de este sprint y queremos seguir haciendo?
  • El compromiso. Ha sido "duro", pero ha merecido la pena.
  • Por fin hemos metido una historia técnica. No se si os habrá gustado, a mi sí :D. Me parece una idéa muy interesante, la verdad. Además, el tener una historia técnica me ha servido para iniciarme en git.

¿Qué estamos haciendo mal?
  • La priorización de las historias. No puede ser que la segunda historia más prioritaria no pueda empezarse hasta un par de días antes del final de la iteración
  • Aunque hemos aumentado la tasa de entradas, sigue siendo un poco baja.
  • Los Scrum diarios no han sido tan diarios :D Ha sido un poco despendole...
  • La plantilla del blog no permite leer bien el código :(

Acciones
  • Las historias bloqueantes hay que priorizarlas teniendo en cuenta dicho bloqueo.
  • Fijar una hora para realizar el Scrum diario. Si es posible, por la mañana
  • Modificar la plantilla del blog para que el código se pueda leer decentemente.

¡Que poquitos problemas! :D Se nota que esta primera iteración ha salido bien. Veremos las siguientes...
Si queréis proponerme algún tema para la próxima iteración dejad un comentario en la entrada antes de la planificación de mañana :D De momento, en lo más alto de la pila están el quinto principio ágil y una introducción a FitNesse.

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.

lunes, 4 de enero de 2010

Retrospectiva #1


Desde que entré en esto del agilismo he aprendido muchísimas cosas. Una de las más importantes es kaizen, más conocido por mejora continua. En este caso, quiero mejorar mi forma de llevar el blog.
Una de las formas de mejorar es reflexionar sobre lo que has hecho. Para eso (y muchas más cosas) sirven las retrospectivas. Hay infinidad de formas de realizar una retrospectiva. Actualmente en los equipos en los que estoy lo hacemos como sigue:
  1. ¿Qué estamos haciendo bien y queremos seguir haciendo? Empezar por lo que se hace bien ayuda a crear un buen ambiente en la reunión y sirve para celebrar los pequeños éxitos (a nadie le amarga un dulce)
  2. ¿Qué estamos haciendo mal? Es necesario identificar en qué nos estamos equivocando para intentar evitarlo en un futuro.
  3. Acciones para mejorar lo que hacemos mal. Si queremos mejorar debemos actuar. No vale con identificar los errores, hay que solucionarlos.
Siguiendo estos pasos voy a hacer una retrospectiva de lo que llevo de blog (un par de meses, creo). Animaos y contribuid a la retro, los comentarios están abiertos :)

¿Qué estamos haciendo bien y queremos seguir haciendo?
  • Sin duda, lo mejor ha sido empezar el blog :D Pensaba que no iba a darle continuidad y, aunque debería escribir más, no está del todo mal. Ocho publicaciones en dos meses :)
  • Otro puntazo fue que Lisa Crispin leyera el post sobre su libro y lo publicitara en twitter :) Que buena gente. Realmente, le pedí permiso y, tras dármelo, me pidió el enlace al post, pero aún así :D
  • Publicitar las entradas en twitter me parece dabuti. Muchos de vosotros retwitteais y ayudáis a difundirlo. Gracias a todos ;)
¿Qué estamos haciendo mal?
  • La periodicidad de las entradas. Hago una a la semana aproximadamente, pero es de milagro. De hecho, no me había dado cuenta hasta ahora... Menuda potra.
  • Ningún contenido técnico de momento. Soy el programador féliz y todavía no he enseñado ni una linea de código... Eso no está bien.
  • No aplico el agilismo a la hora de crear entradas. Voy a lo cowboy.
  • La interacción con los lectores (clientes) es casi nula. ¡No se qué os gusta y qué no! :P

Acciones
  • Aplicar Scrum con el blog. Ya tengo cliente (vosotros). Voy a tener una pila de producto, voy a hacer iteraciones y voy a hacer retrospectivas. Lo de hacer demo no creo :) Aquí tengo algunas dudas... 
    • ¿Cuanto debe durar la iteración? Voy a empezar probando con iteraciones de un mes, a ver que tal.
    • ¿Publico el plan de cada iteración? Voy a crear un post con el resultado del plan para cada iteración.
    • ¿Hago reuniones diarias? En el post con el plan iré actualizando un burndown. A ver que tal sale :)
  • En esa pila priorizaré algo de contenido técnico. Al menos una entrada técnica por iteración (menudo lío).
  • Dado que voy a aplicar Scrum, necesito un dueño de producto. De momento, el dueño de producto seré yo, pero actuaré como proxy de mis verdaderos clientes, vosotros. Por eso, si tenéis en mente algún tema del que queráis que escriba no dudéis en escribir en los comentarios.
Pues nada, me estoy metiendo en un lío pero merece la pena.
La primera planificación la haré a lo largo de esta semana (Probablemente comience la iteración el miércoles 6 de Enero). Animaos y proponed historias para la pila de producto :D