Tag Archives: desarrollo ágil

Calidad Interna

el tema de la calidad ha llenado páginas y páginas de la literatura informática en todos los idiomas. Es tal la necesidad de la búsqueda de la calidad, que hay estudios, técnicas y departamentos dentro de empresas, e incluso empresas, que se dedican en cuerpo y alma a establecer parámetros de calidad a los productos y proyectos que se realizan en las empresas de desarrollo de software.

Dentro del tema de la calidad, visto como un amplio abanico de elementos que la conforman, nos topamos con uno bastante confuso y complejo al principio: la calidad interna.

¿Qué es la calidad interna?

Cuando se desarrolla un software, se desarrolla con una calidad medida según sus requisitos que pueden determinar su alto grado de calidad, midiendo una serie de parámetros. Pero estos parámetros no reflejan ni tienen en cuenta la calidad del proceso de creación del software en sí, ni la calidad del software escrito, solo la calidad externa, es decir, la función que realiza el software.

La calidad interna, sin embargo, mide y tiene presente la forma en la que se ha desarrollado el código de modo que pueda mantenerse (corregirse, ampliarse y adaptarse) de forma rápida y sencilla, gracias a un diseño e implementación limpia, simple y clara.

La importancia que tiene este tipo de calidad se muestra de manifiesto en varios textos como Scrum y XP desde las trincheras (de Henrik Kniberg) y algunos blogs como el de José Manuel Beas, Joseba Enjuto, una entrada de Diego Gómez en la web Dos Ideas, o incluso en el propio estándar ISO/IEC 9126.

¿Por qué es tan importante?

Para un desarrollador, la calidad interna es tan o más importante que la calidad externa, puesto que si un software hace lo que debe, pero una de cada 1000 veces no funciona, puede deberse a un fallo interno difícil de detectar que, pueda incluso verse agravado por la mala calidad con la que se ha desarrollado (diseñado o implementado) el sistema en sí.

En base a tiempo, un software desarrollado con una calidad baja o nula, puede ser desarrollado en un tiempo muy pequeño, ya que no se tiene en consideración muchos aspectos necesarios y útiles, como por ejemplo, una buena orientación a objetos, modularización del código, reutilización, algoritmos excesivamente complejos u ofuscados, etc.

Cuando, por un fallo (mantenimiento correctivo) hay que volver al código para corregir un defecto, y se detecta un error de diseño, modificar un código mal oliente, es más complicado que corregir un defecto en un código que está mejor desarrollado en base a patrones y reglas básicas de análisis, diseño o codificación.

En otras palabras: un programa con calidad interna baja es un programa que generará deuda técnica.

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.

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ó?

Extreme Programming explained

Este es uno de esos libros pioneros que hacen que nos planteemos muchas de las cosas que hacemos y, sobretodo, el cómo lo hacemos.

Extreme Programming Explained
Kent Beck; Addison-Wesley Professional 1999

La metodología de la programación extrema fue acuñada por Kent Beck, como un conjunto de buenas prácticas y una forma de realizar los desarrollos, siempre basándose en dar el mayor valor al cliente, tal y cómo se supone que debe de ser siempre.

No obstante, el propio Beck sabe que esta metodología, al igual que las demás, tiene sus ventajas e inconvenientes, ya que si se intenta seguir de forma inflexible, puede resultar en que los proyectos terminen siendo, en algunos casos infructuosos. En este sentido, Beck, nos llama hacia la agilidad como una forma de sacar nuestro sentido común y emplear nuestro saber hacer, y no los procedimientos tipo que aplicar.

Buen libro, de principio a fin, enseña no solo las bases y teorías, sino que plantea, desde el comentario de cómo funcionarían equipos dentro de la metodología, escenarios de cómo se puede aplicar.

TDD, ¡libro en castellano!

Ayer leí un email de la lista de TDD en la que se anunciaba el publicación del libro TDD de Carlos Ble.

Diseño Ágil Con TDD

Es de agradecer que se haya publicado en castellano un libro sobre esta metodología (o técnica) de programación que es el desarrollo dirigido por pruebas (o test driven development). Casi que puedo asegurar que es el único libro escrito hasta el momento en castellano sobre este tema, que ya abordaba hace muchos años Kent Beck, en su libro Xtreme Programming Explained.

El libro de Carlos está cargado de información sobre lo que significa la programación ágil, ser ágil y las ventajas que ofrece, sobre el modelo tradicional este tipo de técnica de programación, que roza a ser incluso una disciplina, la importancia de aprender y renovarse, así como una crítica y justificación al sistema de enseñanza universitario con respecto a la informática, con el cual coincido.

Además, las aportaciones de los co-autores realizadas al libro son de gran calidad, desde el prólogo, escrito por J.M.Beas hasta el Apéndice sobre integración continua, de Fran Reyes Perdomo, así como las aportaciones y correcciones de Juan Gutiérrez Plaza y Gregorio Mena.

Lo mejor es que el libro no es solo teórico, sino que aporta muchos escenarios y ejemplos, con lo que constituye uno de los mejores libros que he leído sobre el tema en bastante tiempo. Por lo que recomiendo su lectura, de principio a fin.

La Técnica Pomodoro

pomodoroLa técnica de pomodoro al igual que GTD (getting things done) o ZTD (zend to done), son técnicas para realizar las tareas diarias de forma ordenada y evitando distracciones.

Esta técnica debe su nombre a un reloj de cocina con forma de tomate (pomodoro), ya que, la propia técnica se basa en la medición del tiempo con un cronómetro, como los utilizados en la cocina.

La lista de tareas

Básicamente, hay tres artecfactos que se emplean para poder realizar esta técnica:

  • Inventario de Actividades: donde habrá que recoger todas las tareas a realizar.
  • Tareas para Hoy: las tareas que se han planteado para hacer hoy. El criterio para su selección puede ser la prioridad, dificultad o antigüedad.
  • Registro: donde, diariamente se apuntarán las tareas realizadas, junto con los pomodoros empleados para su compleción.

La gestión del tiempo

La técnica en sí, se basa en la gestión del tiempo mediante cortos periódos de dedicación exclusiva. Esto quiere decir que, cuando se comienza un periódo, se debe de estar completamente dedicado a esa actividad hasta que suene la campana.

Para desarrollar la técnica con precisión, necesitaremos un cronómetro o un sistema que nos alerte de cuando comienza y termina un pomodoro. Como su origen indica, puede ser un cronómetro fijo y real en la mesa del trabajador (lo cual puede ser algo incómodo en una oficina con muchas personas trabajando) o uno informático como este.

Los pomodoros (entendidos como los periódos de tiempo) deben de ser de no más de 30 minutos, con lo que, lo ideal, sería tener períodos de 25 minutos, con 5 minutos de descanso y, cada 4 períodos, hacer el descanso extensible de 15 a 30 minutos.

Cada tarea puede ocupar no solo un pomodoro, sino varios, esto se registra al final en el registro, poniendo las tareas realizadas, junto con el número de pomodoros invertidos en su realización.

Las interrupciones

Cuando se está trabajando en una tarea concreta y entra otra distinta con mucha prioridad, tanto que no puede esperar al final del pomodoro actual, se anula el pomodoro en curso y se comienza otro nuevo con la nueva tarea.

Este es el punto débil, quizás, de esta técnica, ya que si la dinámica de trabajo es hacerlo con incidencias y/o peticiones, podría producirse un momento en el que ningún pomodoro pudiese completarse en ninguna tarea, con lo que, llegamos al punto de que no se usa, realmente, esta técnica.

Conclusiones

Para las tareas de desarrollo y sobre todo en proyectos, sin incidencias, esta es una gran técnica equiparable a GTD y ZTD. No obstante, si el entorno de trabajo es más orientado a eventos, a interrupciones, esta técnica no aplica, puesto que las propias interrupciones son las que van marcando los tiempos a poder aplicar.

Para saber más:

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.

Manifiesto Ágil

El manifiesto ágil fue fruto de una reunión que se mantuvo en Salt Lake City en marzo de 2001. Diecisiete críticos de los modelos de mejora del desarrollo del software basado en procesos, convocados por Kent Beck, padre del Xtreme Programming, escribieron el siguiente manifiesto:

Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:

  • A los individuos y su interacción por encima de los procesos y las herramientas.
  • El software que funciona por encima de la documentación exhaustiva.
  • La colaboración con el cliente por encima de la negociación contractual.
  • La respuesta al cambio por encima del seguimiento de un plan.

Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.

Entre estas diecisiete personas estaban: Kent Beck, uno de los tres creadores del Xtreme Programming; Alistair Cockburn, padre de los Crystal Methods; Martin Fowler, gran defensor de la Refactorización; Ward Cunningham, estudioso de los patrones y antipatrones de diseño del software y otro de los creadores de Xtreme Programming; Ron Jeffries, otro de los creadores del Xtreme Programming; Jeff Sutherland, gran promotor de Scrum.

Individuos y su Interacción sobre Procesos y Herramientas

No hay que malentender estas palabras tomándolas en su sentido más radical. La expresión de esta frase se refiere que se valora más la comunicación humana, las reuniones y lo que una persona pueda transmitir a otra, que las herramientas.

Así mismo, se considera más importante la valía de la persona, del programador y del diseñador, que los procesos establecidos en sí.

Software que funciona sobre Documentación exhaustiva

Es lógico que, si tengo un software que no funciona como quiero, da igual lo grande que sea la documentación. Es más útil un programa intuitivo, que hace única y exclusivamente lo necesario y tiene una calidad interna alta (código limpio, claro y con comentario concisos) que un software enrevesado que necesita un manual de no menos de 100 páginas para poder entenderlo.

Colaboración con Cliente sobre Negociación Contractual

La firma de un contrato ata a ambas partes a realizar un cierto desarrollo en un determinado tiempo con un gasto prefijado, solo que estos valores son solo estimados.

El contrato debe de existir, pero hay que colaborar con el cliente en realizarlo de forma más flexible, es decir, que los desarrollos sean de períodos cortos y vayan dando valor al cliente, de modo que, con esas cortas entregas, el cliente pueda decidir el curso a seguir entre iteraciones con sus peticiones y los desarrolladores realizar solo el esfuerzo necesario.

Respuesta al cambio sobre Seguimiento de un plan

Como comentaba, salvo para administraciones públicas, los desarrollos que se realizan a vista de un año o más, no suelen aportar valor al cliente hasta terminado ese período de espera. Una empresa que necesita un software, normalmente no puede dar unos requisitos fijos que, a lo largo de los siguientes meses, no cambien debido a un cambio externo o una necesidad de la propia empresa.

Por este motivo, la respuesta al cambio es vital y muy necesaria y, como indicaba el punto anterior, el hecho de poder hacer iteraciones y dar valor al cliente cada poco tiempo es lo que se persigue con el desarrollo ágil.

Conclusión

Esto se produjo en marzo de 2001, desde entonces ninguno de los diecisiete, más otros igualmente grandes, como Mary Poppendieck o Mike Cohn, no han parado de aportar bibliografía sobre el tema y métodos o matizaciones de los métodos ya existentes.

En este sentido, se puede decir que el desarrollo del software es un terreno vivo, donde no paran de descubrirse y crearse métodos y técnicas, para poder abarcar de una forma más exacta el desarrollo de un proyecto de software.

Kanban: el método Toyota aplicado al software

Después de haber aplicado un alto porcentaje de Scrum en los proyectos de software en los que trabajo, siento curiosidad por todas las demás metodologías ágiles que existen, sobre todo, para saber si hay alguna práctica que pueda emplear que me permita optimizar algún aspecto de la actividad diaria a desarrollar.

En este aspecto, he descubierto en Kanban un interesante aliado para aspectos de la metodología que quedaban algo descolgados, y son los procesos rutinarios, o solo tener presente la continuidad de las tareas, ya que las tareas que se realizan en Kanban pueden aparecer en el backlog en cualquier momento e ir haciéndose, según su importancia y/o prioridad.

¿Qué es Kanban?

La palabra kanban (en kanji 看板, en katakana カンバン) parte de las palabras kan (看 o カン) que significa visual y ban (板 o バン), que significa tarjeta o tablero. La idea surge en el seno de la metodología de Lean, la cual fue desarrollada por Toyota, para mejorar la producción, basándose en técnicas como just-in-time (JIT).

Los principios que se promueven son:
 

  • Calidad perfecta a la primera. Todo lo que se hace, debe de intentar hacerse bien, no rápido, ya que cuesta más tiempo hacer algo rápido y tener que arreglarlo después, que hacerlo bien desde el principio.
  • Minimización del despilfarro. Hacer lo justo y necesario (y hacerlo bien, como se decía antes) y no entretenerse en otras tareas secundarias o no necesarias (principio YAGNI).
  • Mejora continua. Ir mejorando continuamente los desarrollos, según los objetivos a lograr y alcanzar.
  • Flexibilidad. Lo siguiente a realizar se decide del backlog pendiente, con lo que las tareas entrantes se pueden priorizar y condicionar según las necesidades puntuales.
  • Construcción y mantenimiento de una relación a largo plazo con los proveedores.

 
En el desarrollo del software, el sistema kanban se puede resumir como la visualización de las tareas mediante un tablero, en el que se van moviendo entre los sectores delimitados, con el objetivo de tener siempre presente el trabajo a realizar y lo que hace cada uno. Que nadie se quede sin trabajo y que todas las tareas importantes se realicen primero.

foto-kanban

El tablero visual

El tablero de kanban, el cual debe estar visible a todo el equipo de trabajo, tiene la peculiaridad de ser un tablero continuo. Esto quiere decir que, no se rellena con tarjetas y se van desplazando hasta que toda la actividad ha quedado realizada (como pasa en Scrum), sino que a medida que se avanza, las nuevas tareas (mejoras, fallos o tareas del proyecto) se van acumulando en la sección inicial, en las reuniones periódicas con el dueño de producto (o el cliente) se priorizan las más importantes, y se encolan en las siguientes zonas.

Además, las secciones que se pueden incluir en el tablero, además de diseño, desarrollo y pruebas, son las de paso a producción, con lo que, se tendrían todas las tareas en un seguimiento exhaustivo, desde que se piensan que deben de hacerse, hasta el punto en que se ha llevado a producción.

project-kanban

Como se puede ver en la figura, cada sección vertical, puede anidarse en conjuntos, de modo que la tarea de desarrollo, por ejemplo, pueda descomponerse en otras más significativas como: en cola y en desarrollo.

Los grandes grupos verticales, pueden pertenecer incluso a grupos de desarrollo diferentes, por ejemplo, un grupo de desarrollo puede encargarse del desarrollo, y otro de las pruebas y subida a producción, o incluso entre departamentos, tomando un último grupo para puesta en producción o incluso un primer grupo para la toma de propuestas y priorización de tareas.

Lo más corriente es que exista un grupo inicial, el dueño del producto, que se encargue de organizar las propuestas o entradas, y sea el propio cliente o incluso, si es para desarrollos internos, los departamentos de comercial y/o marketing. Depende de la empresa.

Las tarjetas

La importancia de la identificación rápida de tarjetas, en un tablero de amplias dimensiones es vital para ahorrar tiempo, con lo que, se pueden asignar colores, como pueden ser: verde para las mejoras, amarillo para las tareas del proyecto y rojo para los errores.

Además de esto, las tarjetas de kanban suelen tener bastante más información, ya que el método consiste en tener todo visual, para saber de forma rápida la carga total de trabajo, ya sea de los grupos, como del departamento, etc.

Se suelen emplear tarjetitas con fotos o caricaturas que se ponen junto con la tarea que está desempeñando en cada momento cada persona, así como emplear post-it sobre las propias tarjetas para indicar observaciones sobre la tarea, o bloqueos que se puedan sueceder, es decir, que la tarea no se pueda realizar porque depende de algún factor no resuelto aún.

tarjetas

Es importante reseñar que las tarjetas debe de tener la estimación de tiempo que tiene asignada la tarea, así como se pueden anotar las fechas de entrada en cada cuadrante, para tener información, al término de la tarea, de si ha sido una buena estimación, así como obtener el rendimiento del equipo de trabajo.

Control del Flujo

El sistema kanban, a diferencia de scrum, no se dedica a llevar la pista de un solo proyecto, sino que se pueden entremezclar tareas y proyectos. El método se basa en tener a los trabajadores con un flujo de trabajo constante, las tareas más importantes en cola para ser realizadas y un seguimiento pasivo, a modo de no tener que interrumpir al trabajador para saber qué hace en cada momento.

Por otro lado, se puede seguir la pista del trabajo realizado por el grupo de trabajo almacenando los datos que las tarjetas nos proporcionan, una vez llegan a el sector final (cuando ya están en producción), con una gráfica de este estilo:

cfd

En el gráfico de áreas apiladas, se ve claramente el tiempo dedicado a cada sector. En el caso expuesto, por ejemplo, se ve que las tareas pasan más tiempo en backlog (el sector de propuestas o esperando a comenzar su desarrollo) que en la zona de desarrollo, propiamente dicha.

Conclusiones

El sistema de kanban tiene ciertas ventajas con relación a otras metodologías que ya había visto, ya que permite no solo llevar el seguimiento de un proyecto de forma individual, sino también de las incidencias que se van sucediendo, así cómo otros proyectos paralelos que tenga que hacer el mismo equipo de desarrollo, por lo que, nos damos cuenta de que, de lo que se lleva la pista en sí, no es de los proyectos, sino de los equipos de trabajo.

Lo veo indicado, sobre todo en sitios donde las operaciones (incidencias, tareas repetitivas y aisladas) son más comunes que el desarrollo puro y duro de proyectos, es decir, en entornos que necesiten de flexibilidad en la entrada de tareas, así como un seguimiento de las mismas, un sistema de priorización, control de un equipo de trabajo e informes de dedicación.

Planificación de Póker

Leyendo un artículo de una página de una empresa suiza (Crisp), he visto a lo que se refiere la planificación de póker. Voy a traducir gran parte del artículo para explicarlo.

Introducción

La estimación es una de las actividades del núcleo de Scrum y otros procesos ágiles. Este proceso se refiere a darle una duración a cada historia, p.ej. ¿cuánto tiempo tomaría?, ¿cuánto trabajo tiene su implementación?, ¿cómo de caro es?, o cualquier otra cosa que quieras poner.

En Scrum, la estimación es una actividad de equipo. Para cada historia, todo el equipo participa en el proceso de estimación.

La planificación de póker (a veces llamada Scrum Póker) es simple, pero una potente herramienta que hace la estimación de equipo más rápida, más precisa y más divertida. El término fue acuñado por James Grenning y popularizado por Mike Cohn.

Estimación sin Planficación de Póker

Aquí hay un problema típico con las estimaciones de equipo. Cuando estamos en la planificación de un sprint y el Dueño del Producto dice:

Vale, chicos, ¿cuánto tiempo necesitáis para esta historia?

El equipo comienza a pensar acerca de la duración de la historia (en el caso ideal de hombres-día)…

El participante A cree que el sabe exáctamente lo que necesita para hacerse, así que él piensa que puede tomar 3 días. Los participantes B y C son más pesimistas. Los participantes D y E están fuera de la conversación. El participante A dice “3 días”.

Esto hace que los participantes B y C queden confusos. Comienzan a dudar de sus propias estimaciones. El participante E despierta y no sabe realmente qué está siendo estimado. El participante D está aún dormido.

El dueño del producto pide al resto del equipo su estimación.

Como se puede ver, el resto del equipo ha sido fuertemente influenciado por el participante A, solo porque él habló primero. ¡Esto es muy arriesgado!, Tanto B como C pensaron que podría tomarse mucho más de 3 días, ¡sus dudas deberían ser aireadas!

Estimación con Planificación Póker

Ahora imagina que cada miembro de equipo tiene una baraja de cartas, conteniendo las siguientes cartas:

Vamos a rehacer la estimación. El dueño de producto dice:

Vale, chicos, ¿cuánto tiempo necesitáis para esta historia?

Una vez de nuevo, el equipo comienza a pensar sobre el tiempo que tomaría la historia.

Esta vez, nadie dice nada. En lugar de eso, todos tienen que presentar una carta, bocaabajo, conteniendo su estimación. Todo el mundo tiene que tener presente una carta, así que los participantes D y E despiertan. El participante D admite que estaba durmiendo y pide que se le repita la historia. Es difícil evadirse cuando se estima de esta forma :-)

Cuando están todos, todas las cartas se destapan simultáneamente, revelando las estimaciones de todos.

¡Oooops! Gran divergencia. El equipo, en particular los participantes A y C, necesitan hablar sobre esta historia y el porqué sus estimaciones son tan diferentes. Después de la charla, el participante A dice que había olvidado algunas tareas importantes que necesitan incluirse en la historia. El participante C dice que, con el diseño que el participante A presentó, la historia parece ser más pequeña de 20.

Después de la charla (3 minutos en total) hacen otra ronda de estimación para la misma historia.

¡Convergencia! Vale, no hay una convergencia completa, pero están de acuerdo en que una estimación de 5 puede ser lo suficientemente cercana. Siguiente historia.

¿Por qué la extraña serie de números?

El más alto de los números tiene menos granularidad. ¿Por qué?, ¿Por qué no hay 21, por ejemplo?

Por varias razones:

  • Acelera el proceso de estimación limitando el número de opciones (p.ej. número de cartas).
  • Elimina una falsa sensación de precisión para estimaciones altas.
  • Potencia al equipo a partir historias grandes en otras más pequeñas.

Una estimación alta (mayor de 20, por ejemplo) normalmente quiere decir que la historia no se entendió bien en detalle. Podría ser una pérdida de tiempo discutir si la historia tiene 19, 20 ó 22,5. Esta es, simplemente, una historia grande y un 20 debería reflejar eso. Si deseas entrar en detalle, rompe la historia en varias historias más pequeñas. Las pequeñas historias pueden ser estimadas en gran detalle.

Cartas Especiales

La carta cero significa esta historia está hecha o la historia es tan corta que se puede hacer en muy pocos minutos de trabajo.

La carta del signo de interrogación significa No tengo ni idea. Debería de ser rara. Si esta carta es usada demasiado frecuente, el equipo necesita hablar las historias más e intentar alcanzar un mejor conocimiento.

La carta del café significa Estoy demasiado cansado para pensar. Vamos a tomar un descanso.

Conclusión

Después de leer el artículo completo, saco en conclusión que, algo como es la capacidad de comunicación, es algo que hay que intentar potenciar en los equipos de desarrollo, a modo de que, no solo todos y cada uno se puedan expresar, sino emplear técnicas como esta para que su expresión no sea opcional, sino parte del juego.

Es importante que la opinión de un miembro del equipo no se vea afectada por la de otro, a menos, hasta poner toda la información sobre la mesa, que es cuando ambos, deben de afectarse por la información del resto del equipo, y llegar a un punto de comunicación e información que le dé consistencia a la estimación.