1

Planning poker

Posted by David Doctor on lunes, diciembre 07, 2009 in , ,
Hemos comenzado un nuevo proyecto y el otro día tuvimos la primera sesión de estimación de las historias de usuario, en nuestro caso utilizamos planning poker como método de estimación, cada componente del equipo que va a desarrollar tiene una baraja de cartas y cada carta tiene un estimador. Los estimadores siguen una serie de Fibonacci para que seamos conscientes de que una estimación nunca será exacta y se transmita la incertidumbre que tenemos sobre el proyecto.



En nuestro caso esta estimación se hace al principio del proyecto para proporcinarle al dueño del producto los puntos de usuario de cada una de sus historias, evidentemente se harán más reuniones de este tipo a medida que aparezcan nuevas historias de usuario.

La técnica ya se explicó en un post anterior, pero después de la cantidad de reuniones que hemos tenido de este tipo quiero compartir algunas conclusiones:

1.- Si haces reuniones muy largas la convergencia en las estimaciones empiezan a aparecer sencillamente porque la gente está cansada, cuando veáis que en la primera tirada cada uno saca un estimador y terminan convenciéndose sin casi argumentos es hora de dejar la reunión para otro día

2.- No siempre es posible que todos coincidan en el estimador, para eso hay diferentes tiradas y cada uno va explicando su razonamiento pero en un momento dado (tras 3 o 4 rondas) es el Scum Master el que termina preguntando: ¿te importa aceptar esta estimación? tomando como resultado el valor más votado. Hasta ahora no me he encontrado a nadie que diga: no, creo que yo tengo razón y vosotros no tenéis en cuenta esto y esto.


3.- Evitar que el dueño de producto y el equipo se centre en detalles. La última vez nuestro dueño de producto hablaba incluso ya del interfaz gráfico de usuario, en mi opinión esto deberá ser discutido cuando se planifique el sprint y aquí solo hablar de funcionalidad. El equipo también termina hablando de si usar un API, un lenguaje , etc y siempre les intento centrar en que valoren la funcionalidad y complejidad.

La siguiente reunión donde planificamos el sprint y ya no estimamos en puntos de historia sino en horas ideales ya no usamos planning poker, normalmente no nos hace falta a ese nivel y suele agilizar la planificación, de otra forma creo que serían demasiadas horas discutiendo sobre si una tarea tiene 2 o 3 horas ideales.

Me gustaría saber vuestras experiencias: ¿usáis planning poker en estimación del producto y también en la estimación de cada sprint? ¿cómo lográis que haya convergencia?

|
3

Reunión de planificación de un sprint

Posted by David Doctor on lunes, noviembre 02, 2009 in ,
Una vez que se han estimado las historia de usuario (al menos las más prioritarias) ya nos podemos reunir en una reunión de planificación del sprint, en nuestro caso real sería la planificación del primer sprint, el Scrum master convoca a las siguientes personas:

1.- Product owner
2.- Equipo de desarrollo

El orden de la reunión que hemos seguido nosotros es la siguiente:

•11:30 – 11:45. El product owner establecerá la meta del primer sprint y resumirá el product backlog. Se propondrá el lugar, fecha y hora de la demo.

En este caso el dueño de producto nos ha leido las historias más prioritarias y se establece la meta, suele ser una frase corta, en nuestro caso "Permitir búsquedas básicas de fondos de inversión"


•11:45 – 12:00. Se clarificarán las historias de usuario más prioritarias

Se realizan todas las preguntas necesarias al dueño de producto para aclarar dudas y pidiendo más detalles. Lo bueno de las historias de usuario es que permiten,sobre todo, hablar al equipo completo en lugar de leer grandes documentos o, lo que es peor, no tener nada para leer.En la siguiente imagen podemos ver al scrum master y el product owner comentar las historias y sus prioridades.



•12:00 – 12:45. El equipo selecciona las historias que serán incluidas en el sprint.


En nuestro caso como no conocíamos velocidades previas, se seleccionarán aquellas que el equipo considere capaz de realizar en dos semanas que dura el sprint.


•12:45 – 14:00. Se seleccionará la fecha y lugar del daily scrum meeting y las historias serán descompuestas en tareas. Estimación de las tareas en horas ideales.

Aquí podemos ver la funcionalidad comprometida por el equipo y las tareas preparadas para ir al taskboard junto con el burndown chart:



La semana próxima comenzamos el primer sprint y, tan pronto tenga tiempo, actualizaré el blog, creo que es muy buena idea ir mostrando nuestra experiencia casi como un reality show ;-)

|
2

Release planning meeting

Posted by David Doctor on miércoles, octubre 28, 2009 in ,
Hoy hemos comenzado un nuevo proyecto y vamos a seguir usando SCRUM. Aprovecho este comienzo para seguir hablando de estimación ágil y, durante los siguientes posts, ir compartiendo los pasos que vamos siguiendo hasta terminar toda la funcionalidad.

El primer paso fue obtener la funcionalidad usando historias de usuario y el dueño de producto ya las tenía priorizadas, así que ayer mismo se convocó al equipo de desarrollo y al dueño del producto a la reunión de planificación de todo el proyecto que ha transcurrido de la siguiente forma:

1.- El dueño de producto ha dado una visión global de lo que será todo el proyecto para que todo el equipo conociera el contexto.

2.- Por orden de prioridad ha ido leyendo cada una de las historias de usuario

3.- El equipo realiza preguntas de alto nivel, no hay que centrarse en estos momentos en pensar si una llamada se realizará usando AJAX, si se utilizará un API u otra.

4.- El equipo daba una estimación



Se supone que al final de esta reunión se iba a obtener todas las historias de usuario estimadas y las que iban a ser desarrolladas por cada sprint, esto segundo no se ha logrado. Como el equipo era nuevo no se conocía su velocidad (ej. 30 puntos de historia por iteración) hemos optado por hacer un sprint 1 y obtener esta velocidad, a partir de ahí se obtendrá un plan completo.

La pregunta ahora es: si no tenemos la gran suerte de poder probar y obtener datos del primer sprint ¿que hago?. Las posibilidades son varias: podemos usar una velocidad previa de otros proyectos, otra opción es empezar a dividir la historia de usuario ya en tareas y estimarlas en horas ideales, el equipo decide hasta donde puede llegar a implementar y esa sería la velocidad inicial que tomaríamos, por ejemplo, si el equipo dice "en el primer sprint nos comprometemos a la funcionalidad A,B,C y D" sumamos los puntos de historia y esa será nuestra velocidad. Como siempre, en el futuro veremos que va ocurriendo y re-estimaremos.

Como podéis leer, en el punto 4 el equipo estimaba usando puntos de historia, ¿cómo hemos estimado? Se suele recurrir siempre a una persona "experta" y se le pregunta pero todos estamos de acuerdo en que debe estimar aquel que va a realizar el trabajo, una técnica muy buena y ágil es planning poker, estos son los pasos a seguir:

1.- Cada participante tiene un juego de cartas con un estimador escrito en cada una de ellas
2.- Cliente/Product owner lee una historia y se discute brevemente
3.- Cada participante escoge una carta
4.- Se vuelven las cartas a la vez
5.- Se discuten diferencias
6.- Se re-estima hasta que exista convergencia


La verdad es que la estimación ha ido muy bien y mañana planificamos el primer sprint.

|
3

Certified Scrum Practitioner

Posted by David Doctor on sábado, septiembre 26, 2009 in , ,
Hoy estoy muy contento, después de más de año y medio practicando Scrum para desarrollar proyectos software he recibido de la Scrum Alliance mi resultado de la evaluación realizada para ser Certified Scrum Practitioner y he superado el proceso!.

Hay bastante controversia montada en la red sobre la validez de este tipo de certificaciones, ya que con solo asistir a un curso (bastante caro) te certificas como CSM pero creo que eso demuestra que, al menos, has tenido una mínima formación para empezar.

Con esta certificación se intenta demostrar que has estado un año practicando los principios de Scrum y os aseguro que lo mio me ha costado completar el documento que hay que enviar para su evaluación, un mes después y el trabajo se ve recompensando.

Los siguientes pasos son seguir trabajando para convertirme en CST o CSC, el nivel más alto, además creo que en España soy el primer CSP.


|
0

Abraza a un desarrollador

Posted by David Doctor on jueves, agosto 13, 2009
Creo que todos los que nos dedicamos a esto lo necesitamos:


|
0

Herramientas ágiles

Posted by Roberto M. García on martes, agosto 04, 2009 in ,
Las metodologías ágiles, como cualquier otro paradigma, necesitan de un conjunto de herramientas para apoyar la ejecución de las tareas definidas. Scrum propone tarjetas de cartón, un panel de cartulina, post-it, en definitiva, material de oficina como una posible alternativa.

Recientemente tuve la ocasión de evaluar tinypm (tiny effort, perfect management), una herramienta sencilla que facilita el proceso de desarrollo con prácticas ágiles a equipos de trabajo. La herramienta da soporte de manera directa al Backlog, User Stories, Iteraciones, Burndown chart, etc. La posibilidad de mover “user stories” de una iteración a otra, o al Backlog haciendo uso de drag & drop es muy intuitiva y se asemeja mucho al uso de tarjetas en un panel de cartulina.



En el blog asociado a la web de la herramienta tinypm, hay una entrada “Why a bug tracker is not a good tool for agile Project management” que me gustaría destacar. En dicho artículo se hace un repaso al uso del Backlog y a sus diferentes visiones dependiendo de nuestro lado en el proceso productivo. El Backlog define lo que el producto final deberá ser. El punto a tratar es cuando en el proceso de desarrollo surgen incidencias o bugs y estas son incluidas en el Backlog junto con el resto de características deseables del producto.

En mi trabajo actual utilizamos varias herramientas de “tracking” (Mantis y Trac), dependiendo del estado de desarrollo de los proyectos. El workflow del trac ha sido adaptado para poder gestionar los estados de “Pending”, “In Progress” y “Done” que propone Scrum. Para realizar el seguimiento del avance de las “User Stories” tenemos creados informes personalizados que permiten visualizar las tareas en curso.



Trac cuenta con una tipología de “Tickets” que permite flexibilizar su uso extendiendo su significado a conceptos tales como “Característica deseable”, “Característica obligatoria”, “Bug”, “Mejora”, facilitando la priorización de los desarrollos. Lo único que se echa en falta es algún mecanismo más intuitivo para la definición del trabajo a realizar por cada iteración (si bien en Trac existe el concepto de “Milestone” como una agrupación de tareas para la consecución de un hito o entregable).

En mi opinión el uso de herramientas de bug tracking (o no), no es un indicador del grado de agilidad de un equipo de trabajo. Las herramientas no dejan de ser apoyos para el desempeño de nuestra labor. Una herramienta como tinypm puede ser utilizada (mal utilizada) para medir el trabajo realizado por cada persona individualmente, en lugar de medir el avance del desarrollo de las historias de usuario.

Si alguien está interesado en la adaptación de herramientas de bug tracking puedo proporcionar más información al respecto.

|
0

Introducción a SCRUM

Posted by David Doctor on jueves, julio 30, 2009
Me he dado cuenta que tanto hablar de SCRUM y lo más básico no lo hemos tratado, aquí os dejo una presentación que utilizo para introducir a SCRUM, es una traducción y adaptación de la que hay en la página web de mountain goat software.


|