"Hasta que el código no esté en producción, en realidad no se está generando ningún valor, porque es WIP atrapado en el sistema" #devOps pic.twitter.com/1RwBcvmKYv
— Mauro Strione (@MauroStrione) June 24, 2017
Blog donde se publican las lecciones aprendidas en todas las actividades de desarrollo de software. Busca ser una base de conocimiento para todos aquellos que queremos no repetir nuestros errores ni los de otros. La idea es ayudarnos entre todos, gerentes de proyectos, programadores, arquitectos, tester etc. Adicionalmente en los últimos años con mucho enfoque a las metodologías agiles, scrum, kanban, etc.
viernes, junio 30, 2017
Tweet sobre DevOps
jueves, junio 22, 2017
Antipatrón de Scrum : El Scrum Master Dirige la Retrospectiva en Lugar de Facilitarla
Hola a todos
Una de las disfuncionalidades y punto de mejora que he encontrado en los equipos Scrum, radica en que el Scrum Master (SM) (ya sea que venga del mundo de la gerencia de proyectos, o acostumbrado a un liderazgo impositivo) al momento de realizar la retrospectiva reúne al equipo (1), y aunque realiza las actividades propias de una retrospectiva (2)(3), cada actividad cierra con sus conclusiones, es decir:
- decide cuales fueron las causas principales de por qué les fue bien o mal durante el sprint
- decide cuales son las acciones de mejora, acuerdos y experimentos a realizar
- el equipo esta allí solo para estar de acuerdo con sus decisiones.
Es decir, dirige la sesión en lugar de facilitara.
Problemas de este enfoque
- no permite la auto-organización
- queda el SM como el único responsable de decidir que se hace, y por ende a quien culpar [les sugiero leer este post de Martín Alaimo sobre la responsabilidad del equipo y el único responsable (4)] de una buena o mala estrategia.
- el equipo solo sirve para hacer lluvia de ideas pero no decide, pues el SM decide por el equi
- el equipo no esta empoderado tiene voz pero no voto
- el equiipo no madurará, pues siempre le dirán que hacer y no asumirá consecuencias.
- El SM no es un facilitador, es más alguien que dirige al equipo y este depende de él para todo (se sigue un esquema de Comando y Control - típico de la gerencia de proyectos - )
- Se esta trabajando con un grupo y no con un equipo (4)
Soluciones
- El SM es realmente un facilitador de la reunión(5), es decir el SM esta ahí, para ayudar al equipo a encontrarse, ser su espejo, no dirige sino que facilita, es alguien que cuenta con instrumentos y experiencias para facilitar correctamente la sesión de retrospectiva de su equipo (6).
- Al finalizar cada paso de la retrospectiva (3) el SM invita al equipo a que priorice, reflexione y tome decisiones sobre:
- problemas
- oportunidades de mejora
- experimentos
- planes
- acuerdos
- cambios a realizar entre otros.
Beneficios de la Solución Propuesta
- El equipo se empodera de sus problemas y soluciones
- Todos adquieren un compromiso entre pares, nadie les dice que hacer, ellos acuerdan que ahcer.
- El equipo tiene voz y voto
- Si el equipo falla, el equipo aprende y mejora (en el esquema anterior el SM es el culpable de elegir una mala estrategia)
- El equipo comienza a sentirse responsable y emerge la autoorganización
- Si el equipo durante el sprint no esta tomando las acciones que se comprometieron,
- entre ellos pueden llamarse la atención (es más fuerte la presión social que el compromiso ante una orden) o
- el SM puede interpelarlos con una pregunta poderosa puede hacerlos conscientes de la desviación de lo comprometido por ellos
- El equipo se escucha entre sí (recordemos que las mejores ideas vienen de cualquier parte)
Bueno hasta acá este corto compartir, bienvenido el feedback, los comentarios y las experiencias.
Saludos ágiles
Jorge Abad
Aclaraciones, Notas, Comentarios y Referencias
- Recordemos que el equipo Scrum esta constituido por Product Owner, Equipo Desarrollador (el cual es multidisciplinario), y Scrum Master
- En esta página podrás encontrar cientos de actividades https://plans-for-retrospectives.com/es/
- Recordemos que un buen guión de retrospectiva (según el libro Agile Retrospectives de Diana Larsen y Ester Derby) cuenta con:
- Armar el escenario
- Recolectar datos
- Indagar
- Decidir que hacer
- Cerrar
- Compartiendo la responsabilidad. Hacia Un Equipo Real.por Martín Alaimo (clic aquí)
- Según comparte Martín Alaimo en su libro "Facilitador de Equipos Ágiles: El Camino de un Coach hacia la Agilidad Empresarial"
- La facilitación de grupos: es un proceso por el cual una persona cuya elección es aceptada por todos los miembros del grupo, que es neutral y no tiene autoridad sustancial en la toma de decisiones, diagnostica e interviene para ayudar al grupo a identificar y resolver sus problemas y tomar decisiones y para así, aumentar su efectividad. (Schawarz, 2002)
- La posible agenda de una retrospectiva puede ser algo como [Agenda Scrum] Pasos para Realizar la Retrospectiva
martes, junio 20, 2017
Nexus y la Deuda Técnica
Les comparto el meetup que se realizó el 8 de Junio en la ciudad de Mexico sobre Nexus (un framework para escalar Scrum) y la Deuda Técnica.
https://www.meetup.com/es/Agile-Mexico-Meetup/events/240553474/
Nexus con @jorge_abad https://t.co/zaRqDmeJ8w— Rox (@jeri4queen) June 9, 2017
Dolores de deuda técnica con @jorge_abad https://t.co/ZDcilL3Gxa— Rox (@jeri4queen) June 9, 2017
Sobre el Compromiso del Sprint
El Compromiso no es sobre una promesa o sobre firmar con sangre, es sobre hacer todo lo que está en nuestros medios para tener éxito. https://t.co/P6LL1MGX8o
— Jorge Hernán Abad L. (@jorge_abad) June 18, 2017
Commitment is neither a promise, nor signing with blood, but trying everything you can to succeed ^ @Koen_V pic.twitter.com/ezz9clu8AG
— AgileFortune (@AgileFortune) June 18, 2016
viernes, junio 16, 2017
El Planning, el Tasking, el Tablero Kanban, la Guía de Scrum y un Tip Poderoso para “Oler” Impedimentos
Hola a todos, este es uno de los post que hace tiempo tenía
pendiente por escribir y por fin se alinearon los astros y pude escribirlo.
Empecemos, según la Guía Oficial de Scrum (1) el planning
consta de dos partes:
- Tema Uno: ¿Qué puede hacerse en este Sprint? (conocido como “El Qué”): El cual consiste en la identificación del Objetivo del Sprint y la lista de ítems de backlog que hacen parte del producto que si se completan lograrían el Objetivo del Sprint
- Tema Dos: ¿Cómo se conseguirá completar el trabajo seleccionado? (conocido como “El Cómo”): El cual consiste que el Equipo de Desarrollo decide cómo construirá esta funcionalidad para formar un Incremento de producto “Terminado” durante el Sprint que cumpla con el Objetivo y contenga los ítems seleccionados en el paso anterior más el plan para terminarlos.
Adicionalmente, para el tema 2 dice claramente:
“El Equipo de Desarrollo por lo
general comienza diseñando el sistema y el trabajo necesario para convertir la
Lista de Producto en un Incremento de producto funcional. El trabajo podría ser
de tamaño o esfuerzo estimado variables. Sin embargo, durante la Planificación
del Sprint se planifica suficiente trabajo como para que el Equipo de
Desarrollo pueda hacer una proyección de lo que cree que puede completar en el
Sprint que comienza. Para el final de esta reunión, el trabajo planificado por el Equipo de Desarrollo para los primeros
días del Sprint es descompuesto en unidades de un día o menos.” (Esto último
es conocido en el mundo de Scrum con el Tasking, o la descomposición en tareas
de los ítems de backlog - como la palabra misma lo sugiere-)
Aquí vemos dos cosas:
- Se sugiere que el trabajo se descomponga de forma gradual en unidades, o sea, NO SE DESCOMPONGA TODO A PRIORI en el planning del sprint (ya sea por timebox o conveniencia), sino que se identifique claramente las tareas próximas de lo próximo que se va a hacer y luego se descomponga el resto cuando estemos cercanos a construirlo (esto es conocido en el mundo de gerencia de proyectos como Planeación Gradual o Rolling Wave Planning – la cual empleamos nosotros ampliamente en el mundo ágil –). Acá quiero hacer una precisión, nunca lo he hecho así, siempre sugiero o hago la descomposición de todas las historias de usuario en tareas durante el planning –y nos ha ido bien –, haré el experimento y lo compartiré.
- Lo segundo que me parece MUY PODEROSO es descomponer el trabajo en unidades de UN DÍA O MENOS.
Y es en esto último donde uno dice: “Claro, tiene sentido,
de esa manera todos los días se finalizará algo y de esa forma se sentirá el progreso y se identificarán fácil los impedimentos y puntos de atasque".
Basado en lo anterior vienen los siguientes puntos
Cómo he trabajado el tasking o cómo lo he visto
Este ejercicio de descomponer las historias de usuario en tareas
de un día o menos (léase Tasking), y me he encontrado con equipos que han
decidido manejarlo de diferente manera, el punto no es discutir cuál es la
mejor, es mejor pensar, con cual se siente más cómodo mi equipo, adicionalmente
puede que lo hagan de una forma durante un tiempo y luego cambien a otra
(recordemos el principio básico de la gestión empírica “Inspección y
Adaptación”), volviendo al tema las formas de tasking que he observado son:
Forma de tasking
|
Observación
|
·
Dividir la historia de usuario en tareas de
tamaños de unidades entre 1 y 8, así: 1h, 2h, 3h, 4h, 5h, 6h, 7h, 8h
|
La verdad esta no me gusta, lo que he encontrado es que no somos
buenos estimando en esta forma, pues la precisión aun a nivel de tareas aún
es baja en desarrollo de software, adicional abre el espacio a la
microgestión que limita al equipo y no permite que el equipo aprenda.
|
Esta forma me gusta, brinda amortiguación si se falla en la
estimación.
|
|
·
Dividir la historia de usuario en las tareas
de tamaños de 2h, 4h, 8h
|
Esta es la que más me gusta, por la misma razón de la anterior,
adicionalmente permite que falles, aprender, mejorar, da más libertad al
equipo.
|
·
Dividir la historia de usuario en tareas sin
horas pero garantizando que cada tarea es menor a un día
|
Esta forma la he visto en equipos muy maduros en los cuales la
confianza y transparencia son una constante presente en su día a día.
|
Ahora el Super Tip
Este tip me lo enseño Silvia Lozano (@sila_zenufana) – y me ha servido
montones con los equipos que he tenido la suerte de estar y acompañar –, quien
me sugirió en el tablero kanban poner UN
PUNTO por cada día que permanece la tarea en la zona del WIP (“Work In
Progress” o “Work in Process”) de esta manera se identificará que una tarea requiere ayuda si tiene más de
DOS PUNTOS, pues recordemos que como tenemos por regla (o sugerencia) que
las tareas no deben durar más de un día, si las tareas en el tablero kanban
tienen DOS PUNTOS O MÁS significa que:
- Existe un posible impedimento
- Existe una posible dificultad en desarrollar la tarea
- Existe una posible falta de foco o de habilidad por parte de desarrollador que esta trabajando en ella
- Se estimó de una forma muy optimista o con falta de conocimiento del real tamaño
- Existe un desbordamiento de alcance
- O es un punto de mejora para discutir en la retrospectiva
En cualquiera de los anteriores es un punto donde tanto
Scrum Master como Equipo observan un punto en el que hay que hacer intervención.
OJO: Lo anterior funciona muy bien si tenemos la buena práctica
que siempre haya en el tablero una tarea por persona del equipo – recordemos que
solo somos capaces de hacer una cosa a la vez, o sea en el WIP una persona no
puede tener más de dos tareas – o sea,
que en el WIP si el equipo tiene 4 integrantes a lo sumo existirán 4 post-it (o
pósit (2)) a la vez que representan una tarea por cada uno de ellos.
Cerrando
Espero que lo compartido sea de utilidad en tu equipo
Scrum, y para terminar tres preguntas
- ¿Cuándo fue la última vez que leíste la guía oficial de Scrum?
- ¿Qué descubrimiento has hecho?
- ¿los puedes compartir?
Bienvenida la retroalimentación y sus comentarios.
Saludos ágiles
Jorge Abad
Notas, Aclaraciones, Comentarios y Referencias
- La que se encuentra en Scrumguides.org
- Es correcta esta forma de escribirlo, la RAE lo permite ver acá Pósit http://dle.rae.es/?id=TnfXVsj
Suscribirse a:
Entradas (Atom)