Tag Archives: scrum

Kanban y Scrum

En este blog he escrito bastante sobre estos temas, y ahora, después de haber terminado de leer un gran libro, escrito sobre uno de los autores que más ha aportado a estas metodologías con su trabajo incansable, hablo de Henri Kniberg, me complace poder aconsejar la lectura de este libro, que se puede descargar libremente.

Kanban And Scrum

El libro, escrito por Kniberg y Mattias Skarin (otro personaje dentro del mundo de las metodologías ágiles), explora ambas metodologías desde el punto de vista de la comparación. Vamos, que las compara entre sí para sacar los mejor de ambas en cada elemento específico, o cada situación en la que ambas pueden emplearse.

La lectura es muy amena y está plagada de imágenes que ilustran todas las situaciones que se van sucediendo a lo largo del libro, por lo que engancha de principio a fin.

La segunda parte del libro, además, es un ejemplo, con un proyecto real, de cómo se puede emplear kanban en el mundo real. Los problemas que pueden surgir y como este grupo los solventó.

No olvido también el mencionar que está disponible la versión en castellano (y en francés) tal y como la propia página oficial del libro informa. Así como agradecer a la comunidad ágil en español que se coordinase tan bien, bajo la dirección de Ángel Medinilla, para darnos la posibilidad de poder leer tan gran obra en nuestro idioma.

Recomiendo la lectura a todos aquellos que tengan o pertenezcan a un grupo de trabajo.

Conferencia: Metodologías Ágiles en la Práctica

ayer dicté la conferencia con el nombre del título de este post en la Universidad de Córdoba ante unos 40 alumnos y algunos profesores de la misma universidad.

Las metodologías ágiles no es un tema muy de moda en los ambientes académicos y universitarios, puesto que el desarrollo de software no es algo que se haga de forma práctica en esos entornos (se realizan más actividades de tipo docente e investigación), por lo que el tema les sonó a todos nuevo y fresco.

Fuera de aburrir al personal, la charla, aunque larga (hora y media), abarcó muchos aspectos de lo que se refiere al desarrollo del software e incluí una visión práctica de cómo lo tengo montado en la empresa en la que trabajo.

Quizás una futura presentación la haga realizando un scrum de verdad seleccionando a algunos asistentes y proponiendo una actividad a realizar que, aunque no tenga que ver con la programación, se pueda llegar a emplear un tablero sin probleas, así como asumir los roles específicos de dueño de producto, scrum master y el resto de integrantes del equipo.

Dejo la presentación aquí:

NOTA: la presentación en sí, aunque tiene algunas diapositivas explicativas y un montón de imágenes, no aporta todo el texto que se dictó, por lo que, es muy posible que resulte incompleta, extraña y carente de sentido en algunas partes.

Scrum Casero

Vale, vale, lo sé, es un poco freaky, pero la verdad es que ayuda bastante en varios aspectos:

  • Por un lado, ayuda a interiorizar el sistema, usándolo fuera del contexto habitual, dándole un matiz más desenfadado a las tareas del hogar,
  • por otro lado, las tareas del hogar se hacen más dinámicas y divertidas… ¡los niños hacen lo que sea por mover ticket!

Tablero de Scrum de andar por casa

Para realizarlo tan solo hace falta enumerar las tareas de la casa a realizar, si sois como yo en casa, que dejamos la mayoría de las tareas para el fin de semana (lavadora, barrer, fregar, …) vuestro tablero será grande, si por el contrario sois metódicos durante la semana, incluso podéis mantener el tablero para hacer iteraciones semanales, con demostración el sábado y retrospectiva el domingo :-)

El gráfico de burndown, si se hace todo en un día, se puede montar por horas, en lugar de por días, y marcar los puntos que se van consiguendo a cada hora. Para saber, sobretodo, si al final del día se tendrán todas las tareas hechas o no. Si se hace durante la semana, se puede saber a media semana si habrá que ser más constantes, o se podrá tener un poco más de relax antes de terminar la semana.

Se mire por donde se mire, es una buena técnica, y más completa que solo hacer GTD, ZTD o pomodoros ;-)

Scrum y XP desde las trincheras

Un año y medio después de haber comenzado con las tecnologías y metdologías ágiles, no tengo más que recomendar el libro que me ayudó a comenzar y que ha sido una guía durante todo este tiempo.

Scrum And XP From The Trenches
Henrik Kniberg; Lulu.com 2007

Este libro (y su traducción al castellano), han supuesto una guía práctica de cómo comenzar en el desarrollo ágil tomando a Scrum como referencia y empleando, en lo que se refiere a técnicas de programación, algunos ejemplos de la metodología de Xtreme Programming.

El libro brinda la visión personal de Henri, una persona que ha estado empleando estas metodologías como consultor con muchos grupos de trabajo a lo largo de muchos años de trabajo y, gracias a ello, y a su excelente labor pedagógica, ha conseguido escribir un buen libro, claro, conciso y bastante corto para todo el material que contiene. Son libros que se leen de forma rápida y te preguntas, cuando llegas a su última hoja: ¿ya se acabó?

Entrenador (Coach) de Desarrollo de Software

El término de entrenador (coach) de desarrollo de software es un papel que suele ser muy importante en el quehacer diario de una empresa que tiene desarrollos de software, ya sean internos o para clientes externos.

¿Qué hace el entrenador (coach)?

Los cometidos del entrenador son dos, que pueden parecer contrapuestos, pero que se pueden combinar para conseguir lo mejor de cada una de ellas, según el momento en que se necesiten emplear:

  • El mentor, de las tareas propias de desarrollo, indicando e incluso enseñando con el ejemplo, el cómo se hacen las tareas. De este tipo, aunque no se suelen dedicar exclusivamente a esto, hay algunos en las empresas de software actuales.
  • El entrenador, propiamente dicho, se encarga de trazar la estrategia y encauzar a los jugadores dentro de la misma a hacer lo que mejor saben hacer para conseguir los mejores resultados. Realmente, cualquier jefe o mando intermedio se encarga de estas tareas mediante órdenes. El trazado del plan estratégico a seguir, el plan de proyecto, es algo que pocos jefes o mandos intermedios hacen.

La faceta del mentor

La labor de enseñanza es algo intrínseco al mundo de la informática, ya que todo avanza tan rápido, que es necesario ponerse cada poco tiempo al día de las nuevas tecnologías, y sobre todo, las que nos ayuden a mejorar el ritmo de desarrollo de nuestras labores cotidianas.

Por tanto, para hacer la labor de enseñanza, el perfil de coach debería de ser técnico, ya que, además, en el mundo en que vivimos, decir a un subordinado, ya estresado por el trabajo, que aprenda solo una tecnología y la aplique a un proyecto, puede ser el detonante principal de quedarse, poco a poco, sin equipo.

Por otro lado, si la formación es impuesta por el coach mediante ejemplos en el propio proyecto de desarrollo, ya sea por él mismo o por gente subcontratada que dé el primer paso (en caso de que el coach no tenga un perfil técnico). Como se suele decir predicar con el ejemplo.

La faceta del entrenador

Como es normal, un gestor de proyectos, es necesario e imprescindible que gestione de la mejor forma posible los recursos humanos y los proyectos que hay que realizar, dados por prioridades, para que cada uno de ellos se consiga terminar en el menor tiempo posible.

El gestor de proyectos debe de facilitar, al igual que el perfil de Scrum Master con su equipo, todo lo necesario para que su equipo pueda realizar sus proyectos.

Conclusiones

El coach es el perfil que estaría, en Scrum, jerárquicamente, por encima del Scrum Master y que ayudaría a los equipos a su gestión y promoción para su mejora.

Se encarga de la recepción de los proyectos, la valoración con los equipos o equipo específico, y su apilación en la lista de proyectos a realizar. Esta es, quizás su faceta más importante.

No obstante, la labor de enseñanza, hacer de mentor o facilitar mentores para sus equipos, no es nada desdeñable y debe de considerarse también como un punto importante en las tareas a desempeñar de este rol.

Scrum: 7 sprints y 3 proyectos después

Mi última entrada sobre Scrum, hablaba de la implementación del gráfico Burndown, de esto hace ya casi 3 meses, aunque realmente, comenzamos la andadura en algo antes.

En principio, tengo que tener presente que he estado usando algunas otras metodologías, como la Espiral de Boehm y Metrica-3, con lo que, he podido ver y sufrir en mis propias carnes, lo que significa e implica usar una metodología ágil, las ventajas que aporta y lo fáciles que tienden a ser, realmente.

Después de haber realizado siete iteraciones, o sprints, y haber completado tres versiones de un proyecto, ya en producción, y otros tres proyectos más casi en producción, puedo dar mis conclusiones acerca de esta metodología de planificación del desarrollo de software:

  • Scrum permite el desarrollo ágil, esto es, sobre todo, basándonos en un diseño global, y aplicando un poco la metodología de los prototipos evolutivos, conseguir una versión simple, lo más rápidamente posible y que asiente las bases de lo que será la aplicación futura.
  • Las iteraciones cortas, de dos a tres semanas, permiten una supervisión de lo que se va haciendo cada poco tiempo, pudiendo cambiar el rumbo entre sprint y sprint, para adecuarse a los cambios de requisitos funcionales o cambios de prioridad que puedan surgir a lo largo del desarrollo del programa.
  • El gráfico de burn-down es una muy útil herramienta que permite tener una visión dinámica de la velocidad con la que se va produciendo el desarrollo y prepararse, de forma anticipada, a posibles variaciones en las fechas de entrega, ya sea resumiendo o eliminando funcionalidad. En caso positivo, si la marcha del proyecto va más rápido, permite agregar otras tareas no planificadas o prioritarias que se pensaban hacer en futuros sprints.
  • Las tarjetas y el tablero de juego que plantea esta metodología, le da una visión lúdica al trabajo y hace que se convierta en un juego. Las tareas se suceden y, todos saben lo que hace cada cual. Incluso los directivos inmediatamente superiores, en lugar de interrumpir el trabajo, con solo mirar el tablero, ya saben cómo va el proyecto.
  • El hecho de partir tareas, hace que se puedan paralelizar mejor, con lo que aumenta la potencia del trabajo en equipo, pudiendo hacer varias personas tareas sin solaparse. En esto, el trabajo con metodologías de tipo Xtreme Programming, programando por parejas, tareas concretas de corto espacio de tiempo y basándonos en el desarrollo orientado a pruebas hace que sea más óptimo.

A todo esto, sumamos el orgullo de poder presentar los proyectos en la fecha pactada, junto con la sensación de que el trabajo se ha realizado en el tiempo adecuado, sin quemar a nuestro personal, y tenemos una combinación muy óptima.

¿Qué es lo siguiente? En principio me planteo seguir profundizando en las técnicas de Xtreme Programming para integrarlas en el desarrollo de las tareas individuales que propone Scrum, ya que así son completamente compatibles y muy potentes. Así mismo, adentrarme más aún en los frameworks de pruebas unitarias tanto para PHP, como Ruby, Erlang y C. Espero así, conseguir incluso hasta mejores resultados, ya no hablando de tiempos, sino de calidad de producto.

Gráfico Burndown (más de Scrum)

En estos días, después de haber pasado más de 24 horas en el último Sprint, sin descansar, donde comenté la experiencia de haber usado Scrum y XP en otro artículo, volvemos a la carga.

Esta vez, con dos semanas de Sprint, bastante más tiempo, podemos realizar algunas técnicas más para poder medir cuánto vamos a tardar realmente en terminar el proyecto que tenemos entre manos.

Para esto, hemos hecho uso de un gráfico burndown.

Burndown

El gráfico de burndown se caracteriza por tener en su eje X el tiempo, solo los días laborables que se vayan a trabajar (sino el gráfico saldría algo extraño) y en el eje Y los puntos de tarea que se van a completar en el sprint.

Pila de Producto, Pila de Sprint y Puntos de Tarea

La pila de producto es la cantidad de características que nos piden que incorporemos a un producto software. Estas tareas son funcionales, generalmente.

La pila de sprint es una primera criba que se toma de la lista total de características, a modo de poder desarrollar una versión 0.1. Esto se realiza para que, al final del sprint, que no debe de ser un período de tiempo muy prolongado, se tenga algo palpable para el cliente (o dueño de producto) y pueda replantearse el resto de peticiones en función de lo que está viendo.

Los puntos de tarea son, en sí, la dificultad y el tiempo que se puede llegar a invertir en la tarea en sí. Es una unidad de medida relativa que no implica en sí tiempo, pero está bastante ligada a él.

Por ejemplo, si hacer un alta de cliente implica una sola consulta a base de datos y retornar el valor de resultado, esa tarea podemos estimar que tiene 1 punto. El caso de la modificación, implicaría tomar los datos, mostrarlos, tomar los cambios y hacerlos efectivos. Esa tarea se puede estimar en 2 ó 3 puntos. Ahora, hacer el balance de todos los clientes dados de alta y los ingresos que tuvieron en el año pasado, todo ello paginado… puede ser una tarea con una puntuación de 10, relativamente con respecto a las anteriores.

Datos en el gráfico de Burndown

El gráfico se traza para cada sprint. Se estima el tiempo que se puede o quiere tardar en realizar una serie de características. Al comenzar, el primer sprint, no se sabe la velocidad del grupo, realmente, por lo que se puede comenzar sin estimación precisa. Esto se va ajustando con el tiempo.

En principio, se comienza el trabajo, se comienzan a realizar tareas.

Al día siguiente, se hace revisión de las tareas acabadas y se apunta en el gráfico el día anterior y los puntos que se avanzó. El gráfico, al crearlo, se suele trazar una línea que cubre la diagonal de la esquina superior izquierda hasta la esquina inferior derecha. Si los puntos van cayendo sobre la línea, ya sabemos lo que se va a ir tardando en realizar el proyecto.

En caso de que los puntos vayan cayendo en el rectángulo superior, eso será indicio de que hay que eliminar historias. Si se mantiene siempre en el bloque inferior, se pueden agregar más historias.

Conclusiones

Después de un par de jornadas, se puede ver la velocidad del equipo y se tiene una percepción real de lo que se hace, lo que se tarda y las tareas que hay que ir acelerando o postergando para llegar a la fecha, sin necesidad de estar cerca de la fecha de entrega. Es, sin duda, uno de los mejores métodos de estimación de tiempos a corto plazo… para el sprint.

Hablaré en los próximos artículos sobre las estimaciones a largo plazo, gestión de hitos y más sobre la pila de producto.

Scrum y XP en la práctica

Hace un tiempo escribí sobre Srum y XP, en ese mismo artículo, comentaba que estas técnicas, tanto Scrum como XP, eran dos técnicas que me gustaban mucho y que probaría en un futuro… bueno, pues ese futuro ya es presente :-)

La semana pasada, tuvimos, en la empresa en que trabajo, la presión de entregar un proyecto de forma rápida. Pensé que, en estos casos, lo que más se necesita es, como no, la organización. No se puede estar haciendo una actividad de desarrollo entre varias personas y estar con la cabeza preguntando siempre: ¿qué queda por hacer?; así que, me lancé, cogí dos tacos de post-it, uno de tamaño normal para las partes a desarrollar y otro de tamaño más pequeño, para las tareas que hay dentro de cada una de las partes.

Scrum

En la imagen se puede apreciar el cómo quedó la pared de la oficina cuando comenzamos la experiencia. Comento un poco como lo hicimos, aunque la verdad, fue algo muy básico.

Usando Scrum

Lo primero que hicimos fue localizar los grandes grupos a desarrollar. En este caso, lo que había que desarrollar, principalmente, era una interfaz web para un cliente específico. Así que nos encargamos de convertir, cada parte importante de la interfaz en un bloque de tareas.

Dentro de cada uno de los bloques (alrededor), se agrupaban las tareas que había que realizar para completar ese bloque.

Los papeles se ordenan de arriba a abajo, según su prioridad, de más alta a más baja, respectivamente. Todos ellos, a su vez, se colocan en la parte izquierda del marco que se vaya a emplear para el proyecto de scrum. La idea es que, cuando una tarea se esté realizando, se pase a una zona central y, cuando haya sido terminada, se pase a la zona derecha. Nosotros usamos la separación física existente entre vidrio y vidrio, considerando la parte central justo la línea de unión entre ambos.

¿En qué beneficia?, pues básicamente en que cuando una tarea se finaliza, todos ven que se ha finalizado y que, cuando alguien no sabe que hacer, se puede levantar y mirar las tareas que hay por realizar.

Cabe señalar dos aspectos muy importantes y a tener muy en cuenta:

  • Hay que definir, y muy bien, lo que significa terminado. Ya que alguien puede considerar una tarea terminada cuando ha terminado de codificarla (sin probarla), mientras que quien la solicita, considera que se termina cuando ya no se debe de tocar más, ha sido comprobada, validada y está lista para producción.
  • El scrum master es la única persona que debe de mover los papeles, así como agregar nuevos o eliminar, según se dé el caso. Esto es para controlar que, realmente, se ha terminado, como se decía antes, la tarea. Además, el hecho de agregar/eliminar tareas es una actividad muy sensible, que no se debe de dejar a todos, puesto que sino, podrían sucederse situaciones indeseables.

Y un poquito de Xtreme programming

Hay otra práctica que realizamos ese mismo día, y es la del empleo del Xtreme Programming, otra vez, a nivel muy básico. En esencia, se trataba de realizar la programación más costosa (o la que se hacía ya con sueño :-P ) entre dos personas, una haciendo de piloto (al teclado) y otra haciendo de navegante (cabeza pensante).

Los beneficios de esta técnica fueron la velocidad a la hora de desarrollar ciertas partes, puesto que la presión que ejerce el navegante al piloto y la dinámica que se crea, hace que el desarrollo carezca de partes de inactividad y cada tarea se acabe antes.

Algunas conclusiones

Puedo decir que la valoración acerca de estas técnicas, en sus inicios dentro de la empresa, han sido muy positivas, llegándose a conseguir los objetivos deseados, por lo que seguiremos empleando dichas técnicas, así como implementando cada una de ellas de forma más completa para ganar en eficiencia y conseguir que los proyectos se puedan medir de forma más precisa en el tiempo.

Pero de eso ya contaré más adelante… :-)

Scrum y XP

Después de darle un repaso al libro Scrum y XP desde las trincheras, he visto que muchas de las técnicas en las que se basa, son como las que usaban nuestros profesores dinámicos en el colegio para motivarnos a participar en clase.

En esencia, es eso, que cada analista/programador se involucre en lo que está haciendo, llegue a un diseño y una finalidad y, sobre todo, que la información sobre lo que se hace, fluya sin que las interrupciones hagan que el trabajo se pare.

Recomiendo la lectura del documento, puesto que muestra cómo funciona Scrum, XP y algunas técnicas más, en el día a día de varios grupos de desarrollo de Scrum, de la mano de un coach y gerente, encargado de llevar a cabo el desarrollo de productos dentro de una empresa.

Yo, por mi parte, en la etapa en que me encuentro, usaré lo que buenamente pueda para hacer que mi equipo de desarrollo sea más óptimo y, sobre todo, nos divierta lo que hacemos.