sábado, agosto 17, 2013

Seis (6) estrategias para lograr mayor velocidad de los equipos en Scrum

Hace unos días en Ceiba (empresa donde trabajo como Scrum Master)  filosofábamos en equipo la siguiente pregunta:


¿qué era necesario hacer para lograr mayor velocidad (puntos por sprint)?



Nota aclaratoria: no fue presión mía como Scrum Master hacia el equipo, pero si es cierto que yo lancé la inquietud (realizando la Inception :-) como en la película el Origen, de Nolan y Di Caprio)


La respuesta a esta inquietud ha llegado gradualmente, y pienso que es  uno de los interrogantes obligatorios que tiene que plantearse un Scrum Master y que debe plantearle al equipo.

Dentro de las responsabilidades del SM están:

  • el seguimiento del proceso
  • el coach al equipo
    • y dentro de ese coach llevarlo a una productividad mayor (a un doble de productividad según Sutherland - padre de scrum-  [1] )


Hay que reconocer que Scrum nos ha permitido ser muchos más veloces y productivos debido a:

  • Involucramiento y compromiso del dueño del producto, que permite resolver inquietudes rápido
  • Visibilidad y resolución rápida de impedimentos
  • Retrospectivas bien hechas, que nos llevan a la mejora continua
  • Empoderamiento del equipo, de forma que este por si mismo se auto-organiza y encuentra la mejor forma de entregar el producto
  • Los valores de coraje y compromiso, que han permitido querer ir más allá y poder enfocarnos mucho más en como ser mejores
  • Atención a la excelencia técnica, que ha hecho que nuestra deuda técnica cada vez sea menor, lo cual mejora nuestra velocidad. "La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad" [2] (principio del manifiesto ágil). (este punto lo retomaré más adelante)
  • Teniendo el equipo motivado y feliz,  equipos motivados son más ágiles "Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo." [2] (principio del manifiesto ágil).

Pero luego de estar allí, es necesario plantearse ¿es posible ser mejores? a continuación entonces, enumero en orden de importancia (según mi criterio) las formas en las que considero y he encontrado que podemos ser más veloces:

1. Seguir el patrón Scrumming the Scrum 

En la conferencia de Jeff Sutherland | "Scrum: The Future of Work" [3], presenta este patrón de scrum como una de las formas de llegar "hiper-productividad" en los equipos

Patrón: Scrumming the Scrum [4]

Este patrón se basa en:

  • Identificar y priorizar la(s) mejora(s) (kaizen) a realizarle al proceso de Scrum  en la Reunión de Retrospectiva. Recordemos en la retrospecttiva debemos enfocarnos en:
    • cómo mejorar el proceso de elaboración del producto,  el cómo que Scrum no resuelve y deja en libertad a los equipos).
    • cómo mejorar la calidad y el producto
    • cómo mejorar la felicidad del equipo
  • Enfocarse  en la(s) mejora(s)  más importante(s) y críticas. He leído por ahí que máximo 3 cosas muy importantes a mejorar (1, 3 ó 4 no recomiendo ningún número en especial - yo prefiero pocas cosas a muchas -  intenten una opción y concluyan - recordemos que lo que funciona en un equipo no tiene por que funcionar en otro)
  • Ponga el Kaizen en el primer lugar del sprint backlog con criterios de aceptación cuantitativos.
  • Revise la mejora Kaizen en el Sprint Review como si fuera otra historia.

Beneficios:
  • terminar antes
  • solicitar mas backlog para el sprint
  • incrementar la métrica de "el clima de ayer" para el próximo planning.

2. Seguir el patrón de Interrupción 

Otro de los patrones expuestos en esta conferencia Jeff Sutherland | "Scrum: The Future of Work" [3] para llegar a la  "hiper-productividad", es el presentado a continuación:.


Este patrón es útil cuando el producto ya se encuentra en producción y se requiere atención inmediata a temas específicos.

El patrón se basa en:
  • Luego del Kaizen determine una cantidad de puntos disponibles para tareas inmediatas que requiere el Product Owner.
  • Si identifica que no se van a consumir úselos en más historias.

Beneficios:
  • Equipo dispuesto para atender urgencias con un tiempo asignado para ello, sin que les quite velocidad y compromiso..
  • Product Owner contento con su equipo, debido a que pueden atender temas urgentes.

3. Hacer Sprints más cortos 

Esta recomendación nos la dió Ricardo Colusso (@rcolusso) de kleer.la en donde nos sugería realizar sprints de 1 semana.


Beneficios:

  • Poder fallar más rápido, debido a ciclos de retroalimentación más cortos.
  • Despliegue de producto más rápido

Requerimientos
  • Más compromiso del Product Owner
  • Más historias de usuario refinadas y cumpliendo el criterio de Ready.
  • Historias de usuario más pequeñas

Nota: No he intentado esta sugerencia



4. Tener un backlog refinado y con el criterio de ready

Otra de las recomendación que nos la daba Ricardo Colusso (@rcolusso) de kleer.la y que también remarcaba Sutherland era la necesidad de tener un backlog refinado y con el criterio de ready, esto indiscutiblemente proporciona una visión clara hacia donde va el producto.




Beneficios:

  • Visión de producto
  • equipo enfocado

Requerimientos
  • Más compromiso del Product Owner
  • Realizar la reunión de refinamiento al la mitad del sprint
  • tener al menos 2 sprints más con historias de usuario cumpliendo el criterio de Ready.

5. Resolviendo la deuda técnica

La deuda técnica es uno de los elementos que termina frenando la velocidad de los equipos y va en contra de la atención a la excelencia técnica (que es uno de los principios del manifiesto ágil).  Recomiendo el post de Henrik Kniberg - The Solution to Technical Debt . Aunque pienso que es un tema de estudio y de compromiso con el cliente, producto, product owner y mismo equipo.

Presento dos gráficas de este post, que muestran la necesidad de detener la deuda técnica y comenzar a "pagarla" antes de que la velocidad de nuestro equipo se vea frenada radicalmente.

Efecto de programar con código apestoso (crappy code) (en español no encuentro una palabra polite para crappy) [4] 



Efecto de trabajar con código limpio (clean code) [4]

Beneficios:

  • Velocidad
  • entendimiento del código
  • excelencia técnica
Requerimientos
  • Equipo con coraje y conocimiento técnico
  • Equipo y Scrum Master que sepan vender la idea de resolver la deuda técnica el Product Owner.
  • Hacer la deuda técnica como parte del kaizen y darle prioridad e  importancia en el proyecto.

Recomendación
  • Tener lineamientos técnicos que se cumplan desde el inicio del proyecto.


6. Teniendo una holgura (Slack) cada cierto tiempo

Por último, la holgura o Slack es un tiempo intencional dejado entre sprints para cubrir cualquiera de las siguientes tareas:

  • Innovación técnica
  • transferencia de conocimiento entre equipos
  • realizar ajustes pendientes de soporte y mantenimiento



Algunas de las formas de implementar el Slack son:

  • dejar un tiempo pequeño entre sprints de 1 a 2 días 
  • 6×2 + 1 - despues de 6 sprints de 2 semanas, descansar una.
  • El viernes del desarrollador: Cada viernes el desarrollador tiene tiempo para alguna de estas tareas.
  • Una carta dorada. Esta carta en el juego del poker le dará al desarrollador un día libre (el que quiera) para usar el slack en lo que el quiera.
  • etc..


Recomiendo visitar este post: Cutting Slack in Scrum

En conclusión

Si seguimos estas directrices, no dudo que podremos mostrar gráficas de velocidad similares a la que presenta Jeff Sutherland

Incremento de velocidad aplicando los patrones 1 y 2 [4]

 Y pronto estaremos escribiendo artículos y recomendaciones de como ser mejores en Scrum.



Consideración importante respecto a la puntación de historias

Cuando se mejore la velocidad y encontremos qué cosas que antes nos tomaban más tiempo, pero ahora luego de la mejora nos  toman mucho menos,  debemos de tener una consideración importante respecto a la puntuación:

  • si tus puntos fueron diseñados poniendo un pivote de  funcionalidad conocido (ejemplo una pantalla con un formulario de 8 campos), no hay lio, ese pivote y las demás funcionalidades las hará  el equipo más rápido y la puntuación seguirá siendo la misma.
  • Si tu pivote esta basado en días felices/productivos (ver [7]) (yo uso esa técnica), considera que si haces algo más rápido debes puntuarlo de la misma forma que usabas al principo del proyecto, como si no tuvieras hiper-velocidad o hiper-productividad, ejemplo:
    • si una pantalla tipo a= te tomaba  2 días felices (2 puntos).. .pero luego de la mejora te toma un dia feliz (un punto) síguela puntuando como antes, pues esa es la referencia inicial con la que se dimensionó el proyecto y permitirá visualizar la velocidad y la mejora.



Hasta ahora he encontrado estas 6 formas, talvez hayan más o sean realmente menos, si alguien conoce, aprende, o ensaya más y las puede/quiere compartir bienvenidas sean, es importante todos aprender de todos.


Queda abierto el espacio para sus comentarios y experiencias.


Saludos

Jorge Abad


---
Referencias:






viernes, agosto 16, 2013

Notas sobre: Lo mío no es el desarrollo, lo mío es la gerencia

Hace unos días en Ceiba (empresa donde trabajo como Scrum Master), nuestro gerente de producción nos compartió una interesante conferencia del Ingeniero Jorge Aramburo CEO de PSL, empresa líder en ingeniería de software en Colombia.

En esta conferencia, Jorge comparte sus opiniones y conclusiones sobre las malas prácticas de gerentes de proyectos.

Estas son algunas de las frases/notas más relevantes de la presentación:


  • Un grupo de personas no se va a desempeñar mejor que la calidad de gerencia que tienen
---

  • La pobreza en la gerencia de proyectos se debe a:
    • La poca claridad por parte de la alta dirección de las compañías acerca del papel de TI en la estrategia de las organizaciones
    • La poca comprensión que tenemos del rol que debe cumplir un gerente, lo que nos conduce a la asignación de personas equivocadas para el rol.
    • El esfuerzo constante que requiere llegar a ser un buen gerente (esfuerzo que casi nadie esta dispuesta a hacer)
      • "Llegar a ser gerente es un viaje... un viaje que la mayoría no completa. Las personas no alcanzan las habilidades, el conocimiento, los valores, perspectiva, juicio y la comppetencia emocional para ser buenos gerentes"[1]
    • El papel que juega el entorno en una buena gerencia
---

  • Un proyecto es exitoso en la medida que cumple o excede las expectativas de todos los interesados.
---

  • Un buen indicador de calidad en gerencia de proyectos es : " número y tipo de intervenciones (normalmente correctivas), exitosas o no que debe hacer una persona de mayor rango en la organización para resolver un asunto que debió ser resuelto por el gerente de proyectos."
---

  • Las intervenciones por rangos altos son normales cuando está en entrenamiento. Si el gerente las solicita es un buen síntoma (quiere aprender).
---

  • Las personas exitosas tienen un denominador común:
    • No son superficiales
    • Tienen conocimiento superior al promedio acerca de los temas relacionados con su trabajo.(competencias metodológicas).
    • Aplican con éxito el conocimiento (competencias técnicas).
    • Constantemente reflexionan, estudian, leen, preguntan, cuestionan …. mejoran, tanto sus competencias metodológicas como técnicas
    •  Adquieren el conocimiento de dominio necesario cuando enfrentan un nuevo proyecto. No hay que empujarlos.
---

  • La posibilidad de tener éxito está directamente relacionada con las competencias y la complejidad de la tarea. Algunas personas tienen éxito en emprendimientos sencillos, pero no pueden manejar situaciones difíciles.
---

  • Realmente no es un secreto. Lo que si resulta extraño  es que la mayoría de gerentes de proyectos relacionados con tecnología (especialmente si involucra software) no tienen el conocimiento necesario para ejercer el rol con éxito. Por varias razones:
    • Las especializaciones, maestrías y certificaciones ofrecidas, generalmente son de carácter general, y no abordan las particularidades de los proyectos de TI, especialmente de software. La gerencia de este tipo de proyectos requiere una base teórica específica.
    • Muchos gerentes de proyecto no han tenido la experiencia de “vivir” un proyecto como practicantes. Aunque no todo buen practicante se convierte en un buen gerente (no necesariamente tiene las competencias), los gerentes requieren un conocimiento profundo sobre el asunto que administran. Un examen lo pasa cualquiera que haga el esfuerzo. La vivencia, en cambio, no puede remplazarse
    •  Pasar de la teoría ala práctica toma años. Quien lo logra,además de tener las competencias para ello, permanentemente pregunta, reflexiona, estudia, compara, observa,tratade explicarlasdiferencias entre teoría y práctica y, sobretodo…. Persiste.
    • No es fácil encontrar personas apasionadas, individuos que deseen agregar valor que comprendan al cliente  que deseen agregar valor,que comprendan al cliente,
    • conozcan su negocio y necesidades. 
    • Es muy diferente un individuo que “sabe hacer su trabajo” a alguien que “sabe que hacer con su trabajo” 
---

  • Los triunfadores son profundos porque están orientados al resultado, y saben que si dejan de aprender no lograrán nada importante. Tienen pasión (motivación intrínseca) por lo que hacen,  tienen claros sus objetivos y desean hacer una diferencia.
---

  • “El deseo de saber es connatural alas personas buenas” Leonardo Da vinci

  • Competencias buscadas en un gerente de proyecto
    • Cardinales
        • Proactividad
        • Análisis de problemas
        • Energía
        • Decisión
        • Orientación al logro
        • Tenacidad
        • Impacto
        • Capacidad de innovación, adaptación
        • Atención al detalle
      • Específicas:
        • Conocimiento profundo de la ingeniería (teórico y práctico )
---

Errores en la elección gerentes:
  • Alguien muy organizado: 
    • No toda persona organizada es candidato a ser gerente
  • Un mal practicante de ingeniería.
    •  Solo designe individuos destacados
  • Un buen practicante individual será un buen gerente. 
    • A lo mejor resulta pésimo
---

La buena gerencia depende de la suma de los siguientes factores:
  • Conocimiento
    • COMPETENCIAS METODOLÓGICAS
  • Prácticas
    • COMPETENCIAS TÉCNICAS
  • Comportamiento
    • COMPETENCIAS SOCIALES E INDIVIDUALES
----

“A la gente la contratan por conocimiento, pero la despiden por comportamiento ” Peter Drucker

---

Una persona competente es una mezcla entre Saber, Saber-Hacer y Saber-Ser, pero es este último el que primordialmente determina el éxito de las personas

----

“[Competencia] Es una característica propia de un individuo que está directamente relacionada a un 
estándar de efectividad y/o a un desempeño superior en  estándar de efectividad y/o a un desempeño superior en un trabajo o situación. Son comportamientos observables en la realidad cotidiana del trabajo y en situaciones de evaluación; son un rasgo de unión entre las características individuales y las cualidades 
requeridas para el desempeño en una organización [Martha Alicia Alles]”

----

LA ESENCIA

La esencia de la gerencia es ser capaz de influenciar positivamente a los demás, de crear un impacto en las personas para que tengan un desempeño extraordinario.

El gerente es un instrumento para que el grupo tenga éxito

La única medida de la gerencia es el éxito. No existe otra.

En Colombia y Latinoamérica se ha confundido la gerencia con el tracking de tareas. Los “tracker” 
compilan las tareas y se les asigna la responsabilidad de divulgarlas, pero eso no es gerencia!

----

Paradojas de la gerencia

  • Los gerentes
    • Son responsables del trabajo
      • pero
    •  trabajan a través de otros (no hacen el trabajo)
  • --
    • Deben enfocarse en el trabajo
      • pero
    •  para hacerlo deben enfocarse en las  personas
  • --
    • Deben desarrollar las personas
      • … y al mismo tiempo
    •  evaluarlas
  • --
    • Son responsables del trabajo
      • pero
    • trabajan a través de otros (no hacen el trabajo)
  • --
    • Son responsables del trabajo
      • pero
    •  trabajan a través de otros (no hacen el trabajo)
  • --
    • Deben manejar el grupo
      • pero
    • … y el contexto en el cual se mueve este
  • --
    • Deben manejar el grupo
      • pero
    • …  sin perder de vista los individuos
  • --
    • Debe enfocarse en el hoy
      •  y en el mañana
  • --
    • Debe lograr que el grupo sea eficiente  …
      • y a la vez innovador
  • --
    • En ocasiones deben hacer daño 
      • para hacer el bien

Las paradojas nunca se resuelven.Se manejan. Por esta razón, un gerente sin capacidad de juicio, criterio, competencia emocional, empatía, liderazgo, valores y principios jamás tendrá éxito 

 ---

El carácter del gerente


En el carácter de las personas reside su sistema de valores. El carácter se forma como una acumulación de valores.
  • ¿Tiene la genuina intención de hacer las cosas correctas?
  • ¿Valora el trabajo de las personas?
  • ¿Sabe oír?
  • ¿Reconoce su propios errores y actúa en consecuencia?
  • ¿Valora el trabajo de las personas?
  • ¿Trabaja duro?
  • ¿Practica lo que dice?
  • ¿Le preocupan los demás?
  • ¿Reconoce cuando no sabe algo?
  • ¿Le preocupan los demás?
  • ¿Los valora como personas?
  • ¿Es empático?
  • ¿Acepta las diferencias?
  • ¿Es estable emocionalmente?
  • ¿Es tenaz y resistente aún en los momento difíciles?
  • ¿Es justo?
Las personas aprenden a hacer lo que ven, no lo que se les dice 

-----

Reflexión


El trabajo de gerencia consiste en un montón de pequeños encuentros la mayoría no planeados a lo largo  pequeños encuentros,la mayoría no planeados,a lo largo del día, y todos los días. Cada encuentro es una posibilidad de influenciar positivamente a otros.


---

Reflexión


Alguien que es buena gente, pero que el proyecto lo tiene mal, no sirve como gerente de proyecto

Un buen gerente no es aquel quien le gusta a todos. Es el individuo en el que todos confían. Y la diferencia es muy grande!


----------

Reflexión: UN BUEN GERENTE


No olvide que los proyectos de TI involucran un ambiente humano muy complejo y, como decía Peter Drucker, detrás de cada trabajador que contrata viene pegado un corazón y una mente diferentes.


----------

“La mejor manera de predecir el futuro es crearlo”
Peter Drucker




---------


Referencias:
  • [1] Linda Hill y Kent Lineback. Being the boss.

Gráficas Ágil vs Tradicional

Hola a todos


A continuación presento unas gráficas esquemáticas que muestran de manera simple y comparativa como se perciben los proyectos desde el Agilismo (scrum, kanban, xp) y  desde el enfoque tradicional (llámese cascada o RUP).

Si existen, o tienen más gráficas que agregan valor a esta comparación con gusto las publicaré con su respectiva referencia.














Nota: En los proyectos ágiles se sale puede salir a producción desde el primer sprint.



Nota: La moral/motivación del equipo de trabajo en el enfoque tradicional es fluctuante de acuerdo al desgaste cliente-proveedor.



Nota: El heroísmo no es común en proyectos ágiles, pues los equipos se comprometen a lo que son capaz de cumplir sin sobre-esfuerzos. En equipos ágiles lo que existe es el compromiso.



Nota: Las herramientas de seguimiento del proyecto de scrum nos dan la visiblidad suficiente en el proyecto. Bajo el enfoque tradicional (por lo general el seguimiento se hace son ms project) se cae en el problema de un avance satisfactorio hasta el 90% de ahí pasan los días y se sube al 91% y luego muchos muchos días al 95%, y al final por fn se llega al 100%.
.
Cualquier retroalimentación con gusto será recibida.


Referencias.
  • [1] Patil, P S; Patil, S B and Rao, Srikantha. Agile Principles as A Leadership Value System in The .Software Development: Are We Ready to be Unleashed?
  • Las gráficas 8 y 9 las he visto en muchas otras fuentes, mas no tengo las referencias (si tienen este dato lo agradecería)
  • El resto de gráficas (4, 5, 6, 7, 10, 11, 12, 13) son de autoría propia. 

viernes, agosto 09, 2013

Frases para entender, acompañar y hacer coach a equipos (1)

Mi amiga y compañera de trabajo Verónica Vera @verovera78 es un tesoro de conocimiento, consejos y experiencia en el tema de coach de equipos ágiles, hace unos días me enviaba un correo donde me contaba que ella no sabía mucho de deportes pero que leía como los directores técnicos y los entrenadores lideran sus equipos. Me indicaba además que leía mucho sobre Pep Guardiola.

Al igual que ella, yo no tengo el chip para los deportes pero si quiero aprender de ella y de estos DT y entrenadores, siguiendo ese espíritu recopilaré en este post y bajo la etiqueta frases coach a equipos, lo que me vaya encontrando para guiar mi equipo y ser un mejor Scrum Master.

Cada cual con las frases reflexione y aplique a su contexto:




"En los primeros partidos necesitamos ante todo resultados para darle confianza al equipo pero también necesitamos tiempo" Guardiola (http://www.elespectador.com/deportes/futbolinternacional/guardiola-debuto-victoria-bundesliga-articulo-439041)

-

"Antes de empezar a competir le tenes de ganar al Ego más grande de TODOS que es el tuyo" D.T Pekerman (
https://www.youtube.com/watch?feature=player_embedded&v=6KqGbdcIqkc)

-
"tenes que entender que hay otros caminos, que si vas más rápido que el resto, es igual que si fueras el más lento de todos" D.T Pekerman (https://www.youtube.com/watch?feature=player_embedded&v=6KqGbdcIqkc)

-

"para ser escuchado primero tenes que haber oido" D.T Pekerman (https://www.youtube.com/watch?feature=player_embedded&v=6KqGbdcIqkc)


-
"cuando se juega en equipo, se celebra en equipo" D.T Pekerman (https://www.youtube.com/watch?feature=player_embedded&v=6KqGbdcIqkc)


-


“Tienen que tomar decisiones…hagan lo que les dé la gana, pero háganlo con decisión” Josep (Pep) Guardiola (http://www.finanzaspersonales.com.co/trabajo-y-educacion/articulo/frases-para-triunfar-negocios/50735)

-

“No hay que intentar cambiar a los jugadores. Cada quién es como es…hay que buscar el botón que los enchufa y saber que ese botón es diferente en cada uno” Josep (Pep) Guardiola  (http://www.finanzaspersonales.com.co/trabajo-y-educacion/articulo/frases-para-triunfar-negocios/50735)

-
  • "Si perdemos, continuaremos siendo el mejor equipo del mundo. Si ganamos, seremos eternos"
  • "El secreto de un buen equipo está en el orden, que todos sepan lo que hay que hacer"
  • "Lo que te hace crecer es la derrota, el error"
  • "No hay nada más peligroso que no arriesgarse"
  • "Perdonaré que no acierten, pero no que no se esfuercen"
  • "Sólo se nos recordará si ganamos, si no ganamos, todo esto quedará como una anécdota"
  • "La gran suerte que uno puede tener es hacer lo que le gusta. Dar con eso es la esencia de todo"
  • "La herramienta más educativa que yo he tenido ha sido a través del deporte. Allí he aprendido a aceptar la derrota, que otro es mejor, a levantarme después de no haber hecho bien las cosas, esforzarme para hacerlo mejor..."
  • "Yo no he encontrado aun a un futbolista, a un deportista de alto nivel, que no le guste aquello que hace"
  • "Tenemos que ser audaces, salir al campo y hacer las cosas, no sentarnos y esperar a que suceda. Tenemos que demostrar lo que podemos hacer y que merecemos ganar el título. Tenemos que ser valientes y salir a jugar"
  • "El talento depende de la inspiración, pero el esfuerzo depende de cada uno"
  • "Mi único mérito es amar mi profesión"
  • "No podemos mirarnos siempre en el espejo y decir lo buenos que somos. Cuando las cosas van bien es cuando hay que estar más atentos. El miedo a perder es la razón fundamental para competir bien"
  • "¿Yo gané cuatro clásicos como entrenador? No, nosotros los ganamos"
  • "Más allá de la educación que me han dado mis padres, que ha sido muy buena, el deporte también me ha educado. Lo que me ha formado como persona es el deporte. He aprendido a ganar y a celebrarlo con moderación, y también he aprendido la dureza de la derrota"
  • "El secreto de este equipo son los jugadores. Les hago correr y que jueguen todos. Son muy buenos. Mucho trabajo. Cuando no corren les denuncio y como no les gusta, corren"
  • "No pido nada especial a los jugadores. Sólo que hagan lo que saben y sean atrevidos. Sin atrevimiento, no se sacan adelante los partidos importantes"
  • "Hay muchas maneras de plantear los partidos, pero no he conocido nunca a un equipo que no vaya a ganar"
 Josep (Pep) Guardiola 


-


Este post sigue en construcción... vienen más frases...

lunes, julio 22, 2013

Algunas frases y reflexiones de cómo fallar en Scrum y Agile

Una de las frases que más me ha dado vueltas desde que comencé con Scrum es:

Scrum "es" simple "pero" difícil - Alan Cyment [6]



o la misma que encontré en los libros de Kleer (Introducción a la Agilidad y Scrum)

“Scrum is simple, doing Scrum is hard” - Jim York, CST.


Esto me ha llevado a mucho auto-estudio, a recibir, aprender y comprender el coaching que me dan en mi organización, a trabajar mucho en la mejora continua propia, del equipo y del proceso que tengo a cargo como Scrum Master. Con base en esto he recogido algunas de las frases, interpretaciones, síntesis de varios artículos y de la experiencia propia, que invitan o evitan fallar con Scrum.

Es importante anotar que una de las muchas causas por las cuales se falla en Scrum es porque el Framework no es prescriptivo, Scrum te da unos límites entre los cuales te puedes mover libremente, y en ese movernos libremente podemos caer vicios que atentan contra el mismo marco de trabajo y sus resultados.

Cada cual seleccione y use las reflexione sobre lo que más le sirva.

Y si tiene más frases, tips y desea compartirlos, bienvenidos sean, acá se publicarán y referenciarán.




Respecto a la organización


  • [Falla / Fail] Falta de transparencia - 1: cuando no somos capaces de decir, lo siento no podré ejecutar este proyecto ágil a falta de:
    • prácticas de ingeniería
    • comunicación con un gran ancho de banda
    • un cliente completamente involucrado y comprometido [1]. 
  • [Falla / Fail] Falta de transparencia - 2: Cuando no somos capaces de decir, lo siento este proyecto por sus características es mejor que no se realice con Scrum [7]. 
  • [Falla / Fail] Imposición del modelo: cuando es un modelo impuesto [2] y no acordado, divulgado y acompañado (correcto coaching) a la organización y al equipo que lo va a ejecutar.[7].
  • [Falla / Fail] Grandes proyectos, grandes equipos: cree equipos grandes (olvídese de lo sugerido de 7 + /-  2 ) e invítelos a todos a todas las reuniones en especial al daily [2] de forma que todos hablen y estos se extiendan innecesariamente y nadie le ponga atención a nadie y el daily no les para sirva para sincronizarse. [7]
  • [Falla / Fail] Cree incentivos individuales en vez de estímulos para el equipo [2]


Respecto a la proceso 

  • [Falla / Fail] Crea en al softwarepredicación y olvide que hacer software es complejo, lo ha sido y lo será[3]
  • [Falla / Fail] Creer en Scrum como en "LA FUERZA" [3]
  • [Éxito / Sucess] Comprender de que depende el éxito de ser Ágil: Ser ágil depende de:
    • Darle importancia a las personas
    • tener equipos multifuncionales
    • comunicación
    • entregar valor
    • cambio de planes para aprovechar oportunidades
    • equipos en el mismo espacio entre otros.[1].
    • inspección y adaptación [7]
  • [Falla / Fail] Microseguimiento: Ejemplo digale a su equipo que hacer durante el daily [2] y durante todo el sprint de forma que no permita el empoderamiento y el éxito o fracaso sea completamente suyo como Scrum Master [7].
  • [Falla / Fail] Síndrome de la bala de plata: cuando se cree que Scrum es una bala de plata que resolverá todos los problemas. Comprenda los equipos son autogestionados, pero necesitan de un liderazgo al servicio de la mejora del equipo y de un Product Owner que tenga una visión clara que guíe e inspire al equipo[2]
  • [Falla / Fail] Mala interpretación de la autogestión Cuando deje al equipo solo sin coach, sin Scrum Master[2]
  • [Falla / Fail] No se cumple lo comprometido en el Sprint (sprint tras sprint)[2].: que pase una sola vez, vaya y vuelva, dos, bueno es comprensible, pero que pase sprint tras sprint y nadie tome medidas para lograr cumplir lo comprometido, esto hará fracasar scrum Unas recomendaciones en este caso son:
    • comprométase con menos, o
    • evalúe cual es el impedimento técnico que tiene al equipo fallando continuamente, o 
    • evalúe cual es el impedimento de relaciones interpersonales que los tiene fallando y trabaje en removerlo. 
    • busque si la falla está en las historias de usuario con criterios de aceptación ambiguos o cambiantes, 
    • o se están permitiendo cambiando las historias durante el sprint
    • busque, busque, indague, escuche al PO, escuche al equipo y halle la causa.[7]
  • [Falla / Fail] No se identifican mejoras en el proceso cada sprint: El equipo scrum ( PO, SM y Team Developer) siempre tendrán algo que intentar o mejorar al siguiente sprint, ya sea desde el punto de vista humano o técnico. No mejorar, cada sprint, o incumplir en la implementación de las mejoras ayudarán a socavar el proyecto ejecutado bajo scrum [7].[2]
  • [Falla / Fail] Altere frecuente y caballerosamente el sprint backlog comprometido de forma que el P.O. no sepa nunca que le será entregado. [2]
  • [Falla / Fail] No cree equipos multifuncionales: Cree varios equipos por capas o por funciones de forma que cada equipo tenga que comunicarse ardua e innecesariamente con el otro. Ej: un equipo scrum de analistas, otro equipo de testers, otro equpo scrum de desarrollo, otro para la capa de presentación, etc, etc. y etc.[2]
  • [Falla / Fail] Adaptación temprana de Scrum : Ojo. no adapte scrum a la primera, siga las reglas de Scrum al menos 5 ó 6 sprints y luego de aprender y fallar siguiendo las reglas, aventúrese muy conscientemente a modificarlo.[7] [2]. 
  • [Falla / Fail] Personalice y adopte prácticas sin tener el completo entendimiento de su porqué y para qué.[2] 
  • [Falla / Fail] Adopte scrum sin entender el por qué y el para qué de cada elemento del framework.[7] 
  • [Falla / Fail] Extienda el sprint hasta que cumpla lo pactado. Esto hace que usted no se comprometa con mejorar pues siempre esta cumpliendo y nunca falla y busca las razones que están haciendo que sus sprints se alarguen.[7] 
  • [Éxito / Sucess] Guiar al PO de forma que siempre se cumpla el pareto ( se implemente el 20% de funcionalidad que da 80% de valor al negocio). Un buen SM y Team Developer ayudará al PO a tener un backlog priorizado impidiendo que el equipo "invierta/gaste" tiempo en funcionalidades innecesarias o no críticas para el negocio. Es de aclarar que esta responsabilidad del Backlog priorizado es del PO, pero el SM y el Equipo ayudan a que no se pierda el foco. Esto se logra con una buena visión compartida y a medida que el Equipo se siente en confianza con el PO.[7]
  • [Falla / Fail] Sprints de más de 1 mes: Es casi un estándar trabajar sprint de 2 a lo máximo 3 semanas, pensar en un mes es demasiado tiempo y va en contravía del lema "si hemos de fallar que sea rápido". Un mes es mucho tiempo, pasan muchas cosas y la capacidad de inspección y adaptación es más baja[7]



Respecto a los roles

  • [Falla / Fail] Creer que la Certificación de Scrum Master (SM) resuelve todos los problemas: Scrum no se domina con dos días de curso y el examen de certificación de Scrum Master.[1]. Es necesario estudiar, fallar rápido, adaptarse, y reconocer que estamos en continuo aprendizaje y mejora. Siga las reglas al pie de la letra de las biblias de Scrum y luego adapte, antes no.[7]
  • [Falla / Fail] Desconfíe del equipo[2], no le permita sentirse responsable del producto a entregar.[7]
  • [Falla / Fail] El PO (Product Owner) no comunica la visión al equipo [2].
  • [Falla / Fail] El PO no presta atención al progreso en cada iteración y no evalúa objetivamente el valor alcanzado [2].
  • [Falla / Fail] El PO no tiene un documento donde esta planeado el producto y lo reemplaza por algo que tan solo esta en la cabeza de él [2]. Es necesario un plan de releases, saber hacia donde van las siguientes versiones del producto, para esto sirve mucho el user story mapping.[7].
  • [Falla / Fail] El rol de PO y el SM son ejecutados por la misma persona[2].
  • [Falla / Fail] Una persona tiene más de dos roles. Esto a lo sumo debe ocurrir que el rol de SM lo asuma un desarrollador, y esto es cuando un equipo es demasiado maduro y realmente es autogestionado [7].
  • [Falla / Fail] El SM no frena al PO, y permite que desenfoque a cualquier miembro del equipo deliberadamente y constantemente.[7].
  • [Falla / Fail] El PO no este disponible para resolver las dudas del equipo.[7].
  • [Falla / Fail] El equipo se "jure" autogestionado sin serlo. He visto equipos que juran y perjuran que por el hecho de entender scrum, no necesitan de SM. Esto es una falla en un inicio de adopción de Scrum, el Scrum Master no es un rol que se puede desechar, ni esta inventado para dar trabajo a los que no encajan en el equipo. Un equipo será autogestionado cuando este inspirado en la mejora continua, su liderazgo técnico y calidad humana de forma que  logre niveles altos de competitividad y rentabilidad. Estos altos estándares con seguridad eso no se logran en las primeras ejecuciones del framework. [7].
  • [Falla / Fail] Creer que el equipo de Scrum solo es el SM y el Team Developer.  Falso, el equipo de Scrum es el PO, el SM y el Team developer, todos ellos son conocidos como roles cerdo, o comprometidos con el producto y proyecto.[7]



Respecto a la ingeniería

  • [Falla / Fail] Tener deuda técnica: La deuda técnica hace que las pruebas se demoren demasiado tiempo y no se cumplan los compromisos.[1].
  • [Falla / Fail] Tener deuda técnica: La deuda técnica disminuirá la velocidad en el mediano plazo y afectará el soporte y mantenimiento del producto (además que hablará muy mal del equipo que implemento el producto inicial).[7].
  • [Falla / Fail] No tener prácticas técnicas: Sin prácticas técnicas de ingeniería la calidad disminuye asintóticamente con el tiempo. [1]
  • [Éxito / Sucess] Tener prácticas técnicas: Las prácticas técnicas se pagan a si mismas.[1]
  • [Falla / Fail] Crea que lo más importante es la cantidad de funcionalidades y de trabajo realizado, dejando de lado el valor de negocio, el riesgo y la creación de conocimiento [2]
  • [Éxito / Sucess]  "Pero si trabajas en un proyecto medio o grande, si quieres asegurarte el terminar vivo, necesitas (entre otros muchos, la siguiente es solo un ejemplo): 
    • Control de versiones y gestión de la configuración.
    • Gestión de riesgos.
    • Asegurar la calidad del producto software.
    • Pruebas: carga, unitarias, integración, etc. Que no te van a funcionar si no tienes…
    • Una buena arquitectura y un buen diseño.
    • Trazabilidad, control de incidencias y problemas, etc."[3]


Es posible encontrar más fallas en las ceremonias de scrum, los roles y los artefactos, pero estos son los que más he encontrado en la literatura hasta ahora leída y los que he vivido como Scrum Master y como Coach de equipos de Scrum.

Queda abierto el debate, como siempre....
Bienvenida la retroalimentación

-------------------------------------
JORGE HERNÁN ABAD LONDOÑO
MSc. Ingeniería Informática - Universidad Eafit

ScrumAlliance
Certified Scrum Master
member 000260715




Fuentes:

martes, julio 16, 2013

Características de una buena historia de usuario

Nivel del post: Básico

Este es mi lista de verificación al momento de revisar una historia de usuario.

Luego de hacer la CCC (Card, Confirmation, Conversation), definitivamente el criterio más importante que uso es cumplir INVEST:

  • Independiente: No requiere de otra
  • Negociable: Se puede reemplazar por otra de diferentes prioridad
  • Valor: Que sea necesaria y de valor para el proyecto
  • Estimable: Que el equipo se sienta tranquilo y seguro estimandola.
  • Small (pequeñas): que no sean grande, funcionalidades pequeñas
  • Testeable (verificable): que se le puedan realizar pruebas.


Yo añadiría, aclararía y uso los siguientes:
  • que su tamaño no supere los 3 a 4 días de una persona enfocada desarrollándola. (Asociado al criterio de Small). Obvio hay excepciones pero al máximo trato que durante un planning no se supere este criterio.
    • Razón: He observado que historias mas grandes quedan mal estimadas por mas buena intención que tenga el equipo de desarrollo, el equipo se siente seguro con este tamaño de historia. Determine cual es el rango para su equipo.
  • que su implementación toque todas las capas o que el resultado de su implementación tenga sentido para el Product Owner o al Cliente. Me explico, en caso de hacer desarrollos asociados exclusivamente a la Base de Datos o a temas complejos por ejemplo que no logran verse reflejados facilmente por el product owner, sugiero crear historias técnicas en las cuales se le explique al Product Owner el valor asociado a las mismas en el proyecto. (Asociado al criterio de Valor).
    • Razón: Evito al máximo historias técnicas pues son de difícil justificación - aunque no imposible, pues si son necesarias se hacen -, pero la razón principal es que este tipo de historias habilita el crecimiento orgánico.
  • que tenga a lo sumo entre 3 y 7 criterios de aceptación.(Asociado a los criterios de Small, Testeable y Estimable).
    • Razón: Más de 7 criterios, se puede  dividir la historia, menos de 3 se puede agrupar con otra.
  • que se pueda dividir cuando sea muy grande (Asociado a los criterios de Small, Testeable y Estimable).
    • Razón: La gran mayoría de las historias grandes se pueden dividir, esto permite más maniobrabilidad al equipo al momento de implementación.
  • preguntar lo más que se pueda sobre la necesidad de la historia de usuario  (Asociado al criterio de Valor). 
    • Razón: Después de varios sprints y coach que me han hecho, he aprendido a preguntar para ciertas historias que percibo innecesarias (validaciones de negocio excesivas, autocompletar recargados, etc):
      •  ¿ok es de valor, pero es necesaria?
      • ¿cuántas personas la usarán?
      • ¿cuántas veces la usarán en el año?
      • ¿es realmente útil? 
      • ¿prefieres al equipo trabajando en esa "validación xxxx "-por poner un ejemplo-  que en esta otra historia de usuario que agrega más valor al negocio?
      • ¿podemos postergar esto para el final y hacer otra cosa más urgente sobre la que tenemos clara la necesidad de implementación? (principio de LEAN - aplazar las decisiones, ver más aquí)


Respecto al Sprint
  • Busco siempre trabajar con  al menos hayan 6 historias de usuario por sprint. 
    • Razón: De esta forma el equipo tiene en que trabajar, con pocas historias de usuario se estarán obstaculizando entre sí.
  • Trabajo junto con el Product Owner para que existan al menos otras 6 historias adicionales 
    • Razón: Tener backlog para posibles reemplazos y/o negociaciones.
  • Trabajo junto con el Product Owner para que se tengan definidos al menos historias de usuario al detalle para los próximos 2 Sprints (completamente elaboradas, cumpliendo INVEST) y un 3er sprint con Historias de Usuario  sin mucho detalle.
    • Razón: Tener claro hacia donde va el producto.
  • La evolución del producto esta guiada por el User Story Mapping (ver más aquí)el cual tiene los objetivos de cada Release y las historias épicas que contendrá.
    • Razón: Tener claro hacia donde va el producto y saber cuan cerca estamos de hacer una liberación o release.


Si estás interesado en ver  recomendaciones para el Product Backlog ver - http://www.pmoinformatica.com/2013/07/11-reglas-product-backlog-scrum.html



-------------------------------------
JORGE HERNÁN ABAD LONDOÑO
MSc. Ingeniería Informática - Universidad Eafit

ScrumAlliance
Certified Scrum Master
member 000260715

lunes, julio 08, 2013

Jorge Valderrama -Ingeniero Senior de DDB Tribal Londres - Hablando de Metodologías Ágiles

Les recomiendo esta excelente entrevista realizada por César Torres Gerente Comercial de Ceiba Software - www.ceiba.co a Jorge Valderrama ( @jvalde ) , Ingeniero Senior de DDB Tribal Londres desde hace 5 años. Entrevista en la que cuenta su experiencia en Prácticas Ágiles, las prácticas que no pueden faltar en un equipo, las prácticas más complejas de adoptar y la Madurez de la industria inglesa en términos de contratar con alcance abierto.