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.
A mi criterio, una de las mejores formas de aprender ciertas técnicas, a parte de experimentarlas, es viendo ejemplos, es por esto que a continuación les comparto tres casos de Agile Inception de productos digitales, el resultado final es un plan de releases del cual se pueden luego detallar las historias de usuario.
El Problema: qué es lo que intenta ser resuelto con el sistema
La Visión: Elevator pitch
El Vecindario: áreas y sistemas con los cuales se relacionará el sistema
Product Vision Board: usuarios, necesidades, productos y metricas
User Story Map con identificación del Producto Mínimo Viable - MVP: Épicas priorizadas con estimación de esfuerzo y asignación de valor
Estimación de Tiempo y Costo
The Go Product Roadmap: Este artefacto también puede ser conocido como el plan de releases.
Historias de Usuario con Criterios de Aceptación: se seleccionaron algunas épicas de forma aleatoria y se les escribieron las historias de usuario, simulando un refinamiento.
Las retrospectivas perderán valor o terminarán perdiendo importancia bajo varias circunstancias:
Las mejoras no se implementan, convirtiéndose en un ritual sin valor.
Similar al anterior, las mejoras escaladas hacia el entorno, es decir, fuera del equipo no son tenidas en cuenta, ni consideradas.
Se vuelven un rito para el equipo, el cual tiene que hacer, porque así lo dice un proceso, pero no se vuelve un espacio de aprendizaje y reflexión.
Cuando se hacen con afán o a la carrera, buscando terminar rápido y posiblemente terminen con: “envíenme un email con sus mejoras, yo las organizo”.
Cuando una persona es la que manipula las retrospectivas, opacando al grupo.
Cuando existe temor, desconfianza y no hay transparencia.
Siempre se realizan las mismas actividades de interacción.
Las mejoras implementadas son carentes de valor y no generan impacto, ni retan el statu quo del equipo.
Se juega, se come, se brinda, se hacen bromas, es decir, se hace de todo, pero no hay una reflexión sobre el pasado y acciones concretas hacia el futuro.
Evita por tu bien y el de tu equipo las retrospectivas inútiles.
Saludos ágiles
Jorge Abad
Este es uno de los miniartículos del mi minilibro: "Algunas ideas sobre retrospectivas". ¿Querés saber más sobre retrospectivas o cómo desarrollo este concepto en el minilibro?
El COVID19 generó impactos a todo nivel, el primero y más doloroso de todos en vidas irrecuperables, pero adicionalmente continúa golpeando la economía, la forma en que trabajamos, nos reunimos, interactuamos, entre muchos otros. Hoy quiero poner luz en algo que he observado como Líder Regional Ágil dentro de una gran corporación, y es que muchos clientes en diferentes regiones afirman debido a la pandemia de forma más o menos similar:
"¡Hay que controlar costos, ya aprendimos Ágil, volvamos a las estimaciones!"
Es decir, vamos a hacer estimaciones al inicio del proyecto pero ejecutaremos a tiempo, alcance, costo fijos, scrum con sprints fijos y plan de releases inamovible (te recomiendo leer; ¿Por qué NO DEBES contratar en Cascada un proyecto a ser desarrollado con metodologías ágiles?), esto siempre me recuerda la citada frase de mi gran amigo Lucho Salazar @LuchoSalazarC)"Exigir los compromisos no los garantiza". Lamentablemente, nada más en contra de los propios intereses de la organización, pues pierde la organización y probablemente también lo haga el proveedor, estas son las razones:
Una estimación buena implica conocer "TODO" desde el inicio, cosa que nunca tendrás, en un mundo tan cambiante como este, considerando adicionalmente la distorsión e inestabilidad que ha generado el COVID19.
Genera desperdicios al construir producto innecesario que fue pactado a construirse totalmente desde el inicio.
Genera desperdicios funcionales y técnicos de partes innecesarias.
Nunca se logran identificar todas las dependencias a priori.
El plan perfecto no existe, y como lo dice este tweet contestado por Elon Musk con un 100 : "El primer paso de cualquier proyecto es subestimar enormemente su complejidad y dificultad"
Siempre que hay dependencias externas hay probabilidad alta de fallo, pues las dependencias no siempre están a tiempo.
Implica que se construye algo que se pactó, así sea que se identifique que no va a generar valor
Quien estima, extenderá tiempos en búsqueda de cubrir las incertidumbres.
Entre más grande el proyecto, más grandes las suposiciones, más grandes los riesgos, más grandes "los colchones", mayor costo, y mayor probabilidad de fracaso.
El enfoque en los costos y en el ahorro, pondrá foco en las áreas de gestión en el ahorro, en la maximización del tiempo comprado y en el cumplimiento estricto de lo pactado en etapas tempranas, pero por lo general (y lo he observado muchas veces), nunca se valida la generación de valor, ni se ve con buenos ojos la adaptabilidad a nuevas circunstancias.
Mi recomendación para estos casos siempre es:
A nivel de priorización y estimación
Priorizar las iniciativas con casos de negocio livianos, es decir, la estimación no podemos evitarla, pero no tiene sentido invertir demasiado tiempo en una actividad en la cual más le inviertas, más desperdicio es.
Asignar un presupuesto al programa o portafolio de forma que se esten buscando siempre las alternativas de mayor impacto y valor para el negocio.
Orientar las áreas de gestión a que se cuestione siempre la generación y validación del valor generado sobre el cumplimiento, ya hemos vivido, que cumplir el plan no implica generar valor, solo cumplir y ya. Son innumerables los casos de proyectos que se engavetan o nadie usa usa.
A nivel de ejecución
Poner un Product Owner empoderado que:
priorice por valor
acompañe al desarrollo
decida qué construir y qué no sobre el producto
asegure que se esté construyendo el producto correcto
Validar constantemente la generación de valor, poniendo en producción versiones del producto, de forma que se identifique si se requiere detener el desarrollo o perseverar para mejorar los resultados.
En resumen, el costo se controla más construyendo el producto correcto y valioso, que desde la estimación, al menos en el mundo de tecnología y desarrollo de soluciones de software.
·¿Qué
actividades nos están desenfocando comúnmente de nuestro objetivo del sprint?
También puede ser poner una
palabra o concepto y conversar alrededor de él, algunos ejemplos pueden ser:
·Software
funcionando sobre documentación extensiva
·Interacción
·Resultados
·Cambio
·Empatía
·Excelencia
·Respeto
·Comunicación
·Mejora
implacable
·Flujo
·Valor
·Desperdicio
·Valores
de Scrum
·Valores
del Equipo
·Valores
de la Organización a la que se pertenece
O tal vez, por votación elegir entre varios de estas ideas
claves u otras que te llamen la atención.
Se requiere de lectura del facilitador respecto al equipo,
es decir, entender el momento que están atravesando, para saber si el tema debe
ser abordado o aplazado.
Una buena finalización de la retrospectiva sería evaluar con
los asistentes las siguientes preguntas:
·¿Logramos
el propósito que buscábamos con esta retrospectiva?
·¿algo
que consideren que deba ser compartido?
Saludos ágiles
Jorge Abad
Este es uno de los miniartículos del mi minilibro: "Algunas ideas sobre retrospectivas". ¿Querés saber más sobre retrospectivas o cómo desarrollo este concepto en el minilibro?
Una retrospectiva requiere de dos movimientos claves, una mirada para
entender el pasado y una para el futuro. Se asemeja a la diástole y la sístole
del corazón, los movimientos de la retrospectiva:
Diástole = ¿Qué pasó?
Sístole = ¿Qué vamos a hacer?
Sin importar el formato, la guía, el esquema que encuentres, si logras
resolver estos dos movimientos en tus retrospectivas estarás logrando el
objetivo para el cual fueron planteadas en entornos ágiles.
Este es uno de los miniartículos del mi minilibro: "Algunas ideas sobre retrospectivas". ¿Querés saber más sobre retrospectivas o cómo desarrollo este concepto en el minilibro?
He pensado que quizá te guste esta cita de "How Google Works", de Eric Schmidt, Jonathan Rosenberg .
"Henry Ford said that “anyone who stops learning is old, whether at twenty or eighty. Anyone who keeps learning stays young. The greatest thing in life is to keep your mind young.”"
--
"Henry Ford dijo “cualquiera que deja de aprender es viejo, ya sea a los veinte u ochenta años. Cualquiera que siga aprendiendo permanece joven. Lo mejor de la vida es mantener la mente joven.”"
Con frecuencia me encuentro dentro de las organizaciones ya sean clientes o
proveedores, expresiones en los gestores del personal, tales como:
"La ocupación de las personas debe ser del 100%, para eso se les paga"
o esta otra
"Exíjanles el 120% para que den el 100%"
Luego de esto, se activa el liderazgo egipcio, los látigos, las zanahorias, la
microgestión, las acusaciones de distracción, el estrés, la sensación de
esclavismo, el inflar las tareas para poder tener espacios para descansar, el
ambiente se vuelve tóxico, y cualquier sentido de pertenencia se convierte en desvinculación y ganas de renunciar.
Como te puedes dar cuenta esto termina degradando el sistema, en vez de
mejorarlo. El objetivo de este artículo es llevarte a que comprendas que:
"Una persona o un equipo con una asignación del 70% al 80% es mucho más
productivo y eficiente que uno con una ocupación del 100%"
Debido a que las personas y equipos tienen espacios para:
la mejora continua individual
la mejora continua grupal
para aceptar la variabilidad
hacer con mejor concentración las tareas
mejora colaborativa
eliminar desperdicios
innovar
agregarle valor a lo que hacen
Si lo deseas puedes terminar acá de leer, pues lo que sigue es una larga
justificación del por qué de esta afirmación, así que comencemos:
No podemos tratar a las personas como máquinas
En esta parte no voy a apelar a la evidencia científica sino a la experiencia
personal, actualmente estamos en el 2020, el año en que estalló la pandemia
del COVID-19 y muchos de nosotros nos hemos movido al trabajo virtual, adicional al impacto de esto en nuestras vidas,
¿no han sentido lo pesado de tener una agenda completa 100% todos los
días, por varias semanas?
¿al final de día no terminan sintiéndose exhaustos y quemados?
¿no les ha hecho falta espacios para café y conversar e interactuar con
sus compañeros? ¿tener conversaciones interesantes y conversaciones
triviales?
al menos yo sí, llevándome al punto que he tenido que insertar en mi agenda
espacios para descansar, pararme, tomarme un café, y estos descansos han
permitido que refresque mis ideas, que tenga más fluencia y
mejor concentración, que trabajar 100% todos los días.
Ahora, no niego que hay días de sobrecarga y se asumen, pero un ritmo
sobrecargado de forma constante termina yendo en contra de las personas y de
los equipos.
Dice Sun Tzu en el Arte de la Guerra:
"Las armas son instrumentos de mala suerte; emplearlas por mucho tiempo
producirá calamidades. Como se ha dicho: "Los que a hierro matan, a hierro
mueren." Cuando tus tropas están desanimadas, tu espada embotada, agotadas
tus fuerzas y tus suministros son escasos, hasta los tuyos se aprovecharán
de tu debilidad para sublevarse. Entonces, aunque tengas consejeros
sabios, al final no podrás hacer que las cosas salgan bien."
Te recomiendo estos dos artículos:
Ritmo Sostenible sobre Ritmo Insostenible -
(clic aquí)
Recomendaciones sobre el sobreesfuerzo del equipo en un proyecto -
(clic aquí)
En el trabajo de conocimiento nuestra aproximación es diferente
En el mundo de la fabricación de objetos físicos, las tareas son
repetitivas, las actividades son razonablemente predecibles y los elementos
que se crean pueden estar en un solo lugar a la vez. En el desarrollo de
productos, muchas tareas son únicas, los requisitos del proyecto cambian
constantemente y el resultado, gracias, en parte, al uso generalizado de
diseño y simulación avanzados asistidos por computadora y a la incorporación
de software en productos físicos, es información que puede residir en varios
lugares al mismo tiempo, o que puede ser construida de forma eficiente o ineficiente, generando alta variación en las tareas, las estimaciones y los compromisos. Creer que un grupo de ingenieros de software expertos garantizará el cumplimiento de un cronograma detallado de varios cientos de filas y meses de planeación es cada vez más irreal, los enfoques ágiles permiten validar rápidamente los resultados obtenidos y navegar exitosamente en estos escenarios de incertidumbre. Pero para que esto se lleve a cabo de forma exitosa es necesario que tanto gestores, gerentes de área, gerentes de proyectos directores, líderes, agile coaches, scrum masters, product owners y product managers, comprendan el pensamiento lean-agile, para que cultiven y permitan que funcionen muchas prácticas que van en contrasentido de la gestión tradicional, sin esto, cualquier esfuerzo de cambio será en vano.
100% de la utilización es un desastre económico
Es normal pensar que los proyectos toman más tiempo cuando las personas no
están trabajando el 100% de su capacidad, y, por lo tanto, una organización de
desarrollo ocupada será más rápida y eficiente que una que no sea tan buena
en utilizar a su gente, pero en el mundo Lean y en la práctica eso no
es cierto, cuando la ocupación o utilización del tiempo de las personas
se aproxima al 100% la eficiencia, la calidad y la velocidad disminuyen (2), existen
varias razones:
No se considera la variabilidad de procesos de trabajadores de conocimiento
Los trabajadores de conocimiento no hacen tareas estandarizadas, en un mundo
estandarizado un cambio del 7% en el trabajo generará un 7% más en
completarlo, algo que no ocurren procesos de TI. En general existen tres
fuentes de variación (3) en los procesos:
Recursos:
Ejemplos: unas máquinas son lentas y otras rápidas, los expertos
realizan las tareas más eficientemente que los novatos.
Unidades de flujo (o elementos que fluyen):
Ejemplos: en una fábrica de autos personalizados los vehículos tendrán diferentes características.
Factores externos
Ejemplos: los pacientes en una sala de urgencias no llegan de forma
fluida, a un equipo comercial la solicitud de propuestas no es un
flujo constante.
En el mundo de TI donde a pesar de usar la misma estrategia de
construcción de software puede cambiar:
la persona que los realiza (incluso la misma persona en distinto tiempo)
el estado de ánimo de la persona
disponibilidades tanto de personas, áreas, recursos (servidores, comunicaciones, componentes)
los requerimientos
insumos
la calidad de la documentación
resultados esperados
dependencias
transacciones
complejidad técnica
supuestos y premisas
entre otros
se constituyen en fuentes de variación del proceso, y estas fuentes de variación generan un tiempo de flujo diferente según el porcentaje de utilización de los recursos, tal como lo
formuló Sir John Kingman, el cual desarrollóla fórmula de teoría de colas que relaciona la variación, eficiencia de recursos y tiempo de travesía (16). Ver gráfica a continuación:
Relación entre variación, eficiencia de recursos y tiempo de travesía
- Gráfica de Sir John Kingman (3)
Por lo tanto:
entre más cercanos estemos al 100% de utilización del tiempo de las
personas más tiempo tomará la travesía del proceso
ampliar la utilización del 90 % al 95 % aumenta el tiempo de travesía en un nivel mayor, que el de aumentar la utilización del 80 % al
85 % (3)
agregar un 5% más de trabajo puede llevar un 100% más de
tiempo (2)
cuando el tiempo de travesía aumenta, el flujo (la cantidad de ítems,
requerimientos, tickets por unidad de tiempo) disminuye
Es importante anotar que, para TI aplica más la curva fucsia que la gris.
Por lo tanto:
"Cuanto mayor sea la utilización de tu equipo, más largo será el tiempo
de travesía, es decir, si tienen un ciclo fijo de trabajo, menos cosas
lograrán terminar"
-----
"Cuanto mayor sea la variación en el proceso, más largo será el
tiempo de travesía (3)"
se tenga un sprint backlog que contenga de 6 a 10 historias de usuario
de similar tamaño
se estima usando Fibonacci en el planning póker para amortiguar un poco
la variabilidad de las historias de usuario
se sugiere planear con el 70% al 85% de la capacidad del equipo
Durante décadas, 3M ha programado desarrolladores de productos al 85%
de su capacidad (2)
Y Google es famoso por su “20% de tiempo” (que permite a los
ingenieros trabajar un día a la semana en lo que quieran, una práctica
que significa que hay capacidad adicional disponible si un proyecto se
retrasa) (2)
Ericcson planea sus equipos de producto al 70% (7)
Tomado de: Scrum y XP desde las trincheras por Henrik Kniberg (4).
Tomado de: Scrum y XP desde las trincheras por Henrik Kniberg (4).
"Operar un proceso de desarrollo de productos cerca de su plena
utilización es un desastre económico" ― Donald G. Reinertsen, The
Principles of Product Development Flow: Second Generation Lean Product
Development
--
"100% de utilización conduce a la no predictibilidad" ― Donald G. Reinertsen
Principle Q6 & Fig 3-6 illustrate this point. Think of queueing
function as transforming a change in loading into a change in queue size
(& thus cycle time). Operating at high utilization amplifies
variability. Manufacturers have known this for a long time, developers not
so much
El tener un equipo o personas al 100% de su capacidad y con compromisos en
ciclos cortos, no permite aceptar la atención a imprevistos, pues cualquier imprevisto afectará el compromiso. En entregas
largas la aceptación de imprevistos es tomada más como un favor, pues no se visualiza el impacto del tiempo de desenfoque, pero ya
hemos aprendido que las entregas largas no son exitosas en el mundo del software, es por eso que enfoques como Scrum o XP son exitosos hoy en día. Por lo tanto, una estrategia
usada por equipos scrum para aceptar los imprevistos es usar el patrón:
Illegitimus Non Interruptus (clic aquí), el cual consiste en reservar de la capacidad del equipo un porcentaje para
atención de imprevistos en caso de que estos se presenten.
Tomado de (6)
Inhibe la colaboración y la innovación
Frases que nos decimos o nos dicen como:
"Te ayudaría, pero ahora no tengo tiempo"
"Esto se podría mejorar de esta manera, pero no tengo tiempo"
"Cuando tenga tiempo te voy a enseñar a ___________"
Con seguridad lo haríamos, pero estar 100% enfocados no permite ir más
alla; es un enfoque del 100% en la tarea encomendada, que ahoga espacios de
interacción y mejora que emergen al poder colaborar o al tener una carga
menor de trabajo. La mejora y la innovación no ocurren fuera del horario
laboral (de 6 pm a 10 pm), tal vez, vengan ideas fuera de este horario, pero
la implementación requiere de tiempo laboral.
Tomado de (7)
Tomado de (10)
Una experiencia observable en talleres (y en la realidad)
En talleres donde se ejemplifica como es el mundo Lean y Kanban, se realizan varias iteraciones con equipos constituidos entre 5 y 8 personas, en los cuales construimos hamburguesas ficticias, o pizzas, o retratos o cualquier proceso organizacional, se realizan varias iteraciones del proceso con diferentes porcentajes de utilización y limitando el WIP, una y otra vez demostramos que la utilización cercana o igual al 100% genera desperdicio.
Tomado de (11)
Tomado de (11)
Para este ejemplo tener utilizaciones del 98% produjo:
7 hamburguesas,
-1170 unidades de valor y
7 defectos,
mientras que con utilizaciones del 74% se lograron:
15 hamburguesas,
1340 unidades de valor y
0 defectos
Una y otra vez, concluimos que como gestores nuestro trabajo es maximizar el flujo de valor, no la utilización del recurso tiempo de las personas. Y esto se debe a la paradoja explicada en "Esto es Lean" (3), en la cual muestra que en el flujo de procesos esté en uno de los siguientes cuatro estados:
Baja eficiencia de flujo y baja utilización: desperdiciolandia
Alta eficiencia de utilización y baja flujo: islas eficientes
Alto flujo y baja utilización: océano eficiente
Alta eficiencia y alta utilización: el estado perfecto
Tomado de (3)
Lo cierto es que la perfección no va a ser posible alcanzarla debido a:
Tomado de (3)
variaciones en
lo que es solicitado
las variaciones en el proceso de lo que es solicitado
cuándo es solicitado
y la cantidad solicitada
Por lo que siempre estaremos rondando lo que se llama "Frontera de la Eficiencia"
Para llegar a esa frontera, tanto la literatura como la experiencia nos recomiendan
Identificar si estas en el estado de Islas Eficientes o Desperdiciolandia (por lo general estas allí)
buscar primero la eficiencia de flujo
y luego la eficiencia de utilización
Tomado de (3)
Para esto debes de valerte de:
Gestión visual del trabajo
Crear ambientes de colaboración
Tener una cultura de experimentación y aprendizaje (Toyota Kata (12) puede ser una gran herramienta en este escenario)
Visión Sistémica
Una cultura con seguridad sicológica en la que no exista temor a fallar
Una obsesión por la mejora continua (Kaizen)
Adaptado de (11)
Te invito a ver el siguiente video imperdible de Henrik Kniberg @HenrikKniberg, donde podrás ver el paradigma Lean, en donde se prioriza la generación de valor sobre la "utilización de los recursos" (pongo paréntesis pues constantemente los gestores denominan a sus colaboradores como "recursos", término que termina más destruyendo que ayudando, ver referencia (13)).
El perfil "T" ayuda a lo anterior
Imagina que tu trabajo fuera solo operativo y te dedicaras a hacer lo
mismo en una hamburguesería: picar tomates, si picas tomates y estas al 100% dedicado a esa tarea (podemos decir que estas siendo 100% eficiente en tu tarea), pero solo
el 60% de los tomates que picas son usados y el resto se echan a la basura pues no hubo hamburguesas a ser consumidas (solo el 60% de tu trabajo agregó valor). Similar a esto ocurre en un equipo donde todos son especialistas: los desarrolladores no pueden estar 100% desarrollando, los tester 100% probando o haciendo casos de prueba, y de igual forma con frontend, backend, automatización, etc., se generará desperdicio, y el flujo de valor estará limitado a la capacidad más pequeña, en el caso de la imagen inferior, en el "Caso 1" corresponderá al especialista 2.
Explicación de mayor flujo de valor con Perfil "T"
Pero si en vez de tener especialistas, existen generalistas (o perfiles T -ver más en (15)-) que son más expertos en unas áreas y en otras tienen suficiente conocimiento y experiencia para apoyar de forma valiosa, el flujo se aumenta, pues todos van a ayudar a los generalistas 2 y 4, como se observa en el "Caso 2" de la imagen superior.
Nota: La práctica de Pair Programming de XP (17), ayuda en la distribución de conocimiento y en asegurar la calidad de lo que se construye.
Cerrando
Muchas de las prácticas de Lean parecen un contrasentido, pero al aplicarlas permiten a las organizaciones, a los equipos y a las personas alcanzar estados de alto desempeño, generación de valor con menor esfuerzo, por lo tanto, cierro este largo artículo con una serie de recomendaciones:
Tu trabajo como gestor no es micromanejar a las personas o equipos para que estén al 100% ocupados, tu trabajo es
poner un objetivo, proveer los recursos para lograrlo, limitar el WIP, y maximizar el flujo.
Prioriza la eficiencia de flujo
Prioriza el aprendizaje continuo
Luego prioriza la utilización del recurso tiempo
Toma métricas y sigue experimentando
No satures a las personas o a los equipos de trabajo
Planea por debajo del 100% de la utilización crea un ambiente de
innovación, colaboración y que permite aceptar la variabilidad
Te sugiero realizar una asignación de una persona o equipo del 70% al 80% para lograr altos índices de generación de valor y fluencia
Si va a existir sobreesfuerzo que sea por corto tiempo y acordado con el equipo (14)
ahora que comprendes como maximizar el flujo, la pregunta es:
¿En qué cosas de valor vas a poner a trabajar a tus equipos de
desarrollo de productos?
Saludos ágiles
Jorge Abad
Notas, Referencias, Aclaraciones, Comentarios, Observaciones y
Agradecimientos
Agradecimientos a mi compañero y amigo Roberto Moraga, Daniel Ramírez y a Adrián Hurtado
por sus comentarios y sugerencias