Este blog comparte estrategias y aprendizajes sobre desarrollo de software, marcos, métodos y metodologías ágiles como Scrum, Kanban y XP, con un enfoque en escalamiento ágil y Business Agility. Su propósito es ayudar a profesionales de la gerencia de proyectos, productos, scrum masters, agile coaches, agentes de cambio, y líderes a mejorar sus procesos y promover la experimentación como motor de innovación, facilitando su adaptación en entornos empresariales cambiantes.
Dejo este post como como referencia inicial, prometo escribir sobre este en el futuro
--
En 2002, según la leyenda tecnológica, el fundador de Amazon, Jeff Bezos, emitió un mandato. Este mandato, también conocido como “Mandato API de Bezos” o “Mandato API de Amazon”, serviría para formar la columna vertebral de Amazon en el espacio web moderno, informando tanto el paradigma de desarrollo de API en la mentalidad corporativa como un enfoque general mejorado para la externalización, fue un mail que en su momento envió a sus 150 empleados en Amazon
--
De ahora en adelante, todos los equipos expondrán sus datos y funcionalidades a través de interfaces de servicio.
Los equipos deben comunicarse entre sí a través de estas interfaces.\
No se permitirá ninguna otra forma de comunicación entre procesos: ni enlaces directos, ni lecturas directas del almacén de datos de otro equipo, ni modelo de memoria compartida, ni puertas traseras de ningún tipo. La única comunicación permitida es a través de llamadas de interfaz de servicio a través de la red.\
No importa qué tecnología utilicen. HTTP, Corba, Pubsub, protocolos personalizados, no importa. A Bezos no le importa.
Todas las interfaces de servicio, sin excepción, deben diseñarse desde cero para que sean externalizables. Es decir, el equipo debe planificar y diseñar para poder exponer la interfaz a desarrolladores en el mundo exterior. Sin excepciones.\
Quien no haga esto será despedido.\
Gracias; ¡que tenga un lindo día!
---
El original en inglés
All teams will henceforth expose their data and functionality through service interfaces.\
Teams must communicate with each other through these interfaces.\
There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.\
It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter. Bezos doesn’t care.\
All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.\
Resumen del artículo "Para crear un equipo de alto rendimiento, pida un 85% de
esfuerzo"
El artículo "Para crear un equipo de alto rendimiento, pida un 85% de
esfuerzo" de Ben Horowitz, publicado en la revista Harvard Business Review en
junio de 2023, sostiene que la clave para crear un equipo de alto rendimiento
es pedir a los miembros del equipo que se esfuercen al 85%.
Horowitz argumenta que pedir a los miembros del equipo que se esfuercen al
100% todo el tiempo es contraproducente. Esto se debe a que el agotamiento y
el estrés que resultan de operar al máximo nivel pueden conducir a errores,
decisiones pobres y, en última instancia, a un rendimiento inferior.
En cambio, Horowitz sostiene que pedir a los miembros del equipo que se
esfuercen al 85% permite a los individuos y al equipo en su conjunto rendir de
manera óptima a largo plazo. Esto se debe a que deja espacio para la
creatividad, el aprendizaje y la recuperación.
Horowitz ofrece varios consejos para ayudar a los líderes a implementar la
regla del 85% en sus equipos:
Establezca expectativas claras. Los miembros del equipo deben saber qué se
espera de ellos en términos de rendimiento y esfuerzo.
Cree un entorno de confianza y apoyo. Los miembros del equipo deben sentirse
cómodos para admitir cuando necesitan ayuda o descanso.
Facilite el aprendizaje y el crecimiento. Los miembros del equipo deben
tener oportunidades para aprender y desarrollarse en sus roles.
Horowitz concluye que la regla del 85% es una forma efectiva de crear
equipos de alto rendimiento que sean productivos, innovadores y sostenibles.
Algunos ejemplos de cómo implementar la regla del 85%:
En lugar de exigir que los miembros del equipo trabajen horas extras,
ofrezca flexibilidad para que trabajen desde casa o en horarios flexibles.
En lugar de esperar la perfección, acepte que habrá errores.
En lugar de centrarse en la cantidad de trabajo realizado, concentre su
atención en la calidad del trabajo.
La regla del 85% es un enfoque simple pero poderoso para crear equipos de alto
rendimiento. Al pedir a los miembros del equipo que se esfuercen al 85%, los
líderes pueden ayudar a sus equipos a rendir de manera óptima a largo plazo.
Todos reconocemos y experimentamos que el 100% de CPU constate en nuestra máquina la relentiza y la hace ineficiente; me impacta es que no podamos reconocerlo en nosotros mismos y en nuestros colaboradores, y los/nos terminemos quemando.
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)"
Relación el Tiempo de Ciclo, la Utilización y el Tamaño de los Lotes
"Reduzca el tamaño de lote para: reducir la variabilidad e incrementar la predictibilidad"
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)
Reduzca el tamaño de lote o elementos del backlog
para:reducir la variabilidad e
incrementar la predictibilidad
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?
He estadoestudiando y entendiendo ciertos patrones que hacen a
los equipos hiperproductivos, según las experiencias de Jeff Sutherland (co-creador de Scrum)
Esta pequeña investigación surge del el afán de lograr y continuar
experimentando esos resultados que nos asombran cuando hacemos correctamente Scrum.
Además -les comparto -, andamos muy ocupados complicándonos y perdemos de vista la clave de Scrum y de la Agilidad, EL EQUIPO.
A continuación te comparto algunos recursos claves para entenderlo
Tweet
@keithb_b
hyperproductive is at least 400% of baseline and you don't get there
without extreme focus. A healthy team is just the beginning.
La búsqueda de la Excelencia Técnica debe ser la obsesión de toda empresa, área y equipo que trabaje con tecnología, obvio de nada sirve la excelencia técnica sino hay personas trabajando en equipo, empoderadas y con seguridad sicológica (recordemos soy agilista y este tipo de empoderamiento da resultado y ha sido demostrado miles de veces en la industria), pero también es cierto, que sin excelencia técnica no hay agilidad, ni nada. Sin buen software todos estamos perdiendo el tiempo.
"Sin buen software, todos estamos perdiendo el tiempo"
A continuación, les comparto el listado del prácticas técnicas más usadas por los equipos hoy (Julio 26 de 2020) según el 14th State of Agile:
Unit testing
Coding standards
Continuous integration
Refactoring
Continuous delivery
Automated acceptance testing
Continuous deployment
Pair programming
Test-driven development
Collective code ownership
Sustainable pace
Behavior-driven development (bdd)
Emergent design
Y las prácticas usadas por los equipos de élite DORA Reseaarch (2):
Code Maintainability
Continuous Integration
Continuous Testing
Database Change Management
Deployment Automation
Empowered Teams
Loosely Coupled Architecture
Monitoring & Observability
Proactive Notifications
Shift Left on Security
Test Automation
Test Data Management
Trunk-Based Development
Version Control
Marqué en rojo las únicas que están en común, queda en tus manos determinar cuales utilizar en tu equipo, y si es que existe alguna brecha, cómo será tu proyecto de adopción.
Saludos ágiles
Jorge Abad
Notas, Referencias, Aclaraciones, Comentarios y Observaciones