miércoles, 23 de marzo de 2011

Introduciendo SCRUM / Introducing SCRUM



Hace poco me pidieron crear un plan para introducir una metodología ágil (SCRUM) a nivel de toda una organización. Puesto que resumí en un plan de 5 pasos mis experiencias (y las mejores prácticas de otros autores), quiero compartirlo en el blog por si a alguien le resulta útil.

Así que, ¿quieres cambiar tu organización? Si eres un agile coach o evangelist, yo te sugeriría...

1) Estudia la situación
  • Identifica quién está a favor y quién en contra: ¿Quién quiere el cambio? Y, por otra parte... ¿qué es lo que se quiere cambiar? A veces, algunas personas sólo quieren dejar de hacer "tanta documentación", otros quieren "una gestión más libre", mientras que otros quieren... todo lo contrario!

  • Establece espacios abiertos, cuestionarios, foros. En este punto, toda la información que se obtenga es extremadamente valiosa.

  • Obtén ayuda! Lo ideal es conseguir consultores externos (estos consultores no tienen miedo a ser despedidos y suelen decir lo que piensan!) y buenos agile trainers (a veces, los consultores serán los trainers!). Aportarán experiencia (ellos ya han estado allí antes) y darán confianza al equipo cuando tenga problemas.

  • Establece las expectativas correctas: Seas tú o un consultor externo, se necesitará algún tiempo para analizar la situación y diseñar la mejor estrategia. No se pueden cambiar las cosas desde el primer minuto!

2) Empieza con un piloto
  • Elije el equipo adecuado para hacer el piloto. No escojas un equipo que ofrezca resistencia o un equipo con miedo al cambio. Elije un equipo que haga del piloto una historia de éxito. La idea del piloto es convencer al resto de la organización que SCRUM funciona! El primer paso (análisis) te ayudará a elegir el equipo adecuado.

3) Comunica y capacita

Establece un proceso de comunicación y formación para otros equipos desde el principio.

Comunicación:
  • Haz la buena información más visible que la mala información, con actualizaciones por correo electrónico, presentaciones, etc. Da a conocer "quick wins" y pequeñas victorias!

Formación:
  • Prepara formaciones basadas en historias de éxito de lo que está ya ocurriendo. La idea es que los otros equipos participen en el cambio y quieran empezar con SCRUM.

  • A veces, además de la formación de los equipos, es útil designar a "champions" dentro de cada equipo, personas que te ayudarán a hacer el cambio.

  • Forma a los altos directivos y mandos medios por separado. Realizan funciones distintas y tienen problemas muy diferentes!

Equipo SCRUM de introducción:
  • Algunos autores abogan por un equipo de gerentes diseñado para "eliminar los obstáculos" en el proceso mismo. Yo estoy a favor. Si estamos llevando a cabo un cambio en toda la organización, tendremos que quitar "blockers" por el camino, así que, ¿por qué no utilizar el paradigma de SCRUM a un nivel superior?

4) Despliega SCRUM a otros equipos gradualmente
  • En primer lugar, identifica la velocidad correcta de despliegue (por ejemplo, cuantos equipos por mes, etc)

  • Poco a poco ve desplegando SCRUM a los otros equipos, en consonancia con el programa de comunicación y de formación mencionados en el paso 3.

  • No te olvides del departamento técnico! A menudo es el punto de fallo de estas implementaciones!

5) Comunicación final
  • A medida que se acerca el final del despliegue a nivel organizativo... prepara bien la comunicación final de resultados: Ha sido difícil, lo que queda seguirá siendo difícil (SCRUM es un cambio constante!), pero los buenos resultados superarán los problemas!

lunes, 14 de marzo de 2011

Una Solución pre-Scrumban (II) / A pre-Scrumban Solution (II)



Como mencioné en el anterior post, voy a hablar un poco más del método pre-SCRUMBAN que he utilizado en proyectos anteriores.

Una variación era la de tener solamente 1 o 2 miembros de equipo con tareas Must y Should. Es decir, tener sólo a máximo un par de miembros como responsables de solucionar las incidencias de producción y otros problemas durante un Sprint. Normalmente, en nuestro equipo teníamos para ello a un perfil de desarrollador y a otro de testeador. A estos perfiles les llamábamos "Production Incidents Champion". Con el nombre, resaltábamos que sólo se solucionaban problemas de producción; es decir, el tipo de problemas en los que el tiempo de respuesta no puede ser de un Sprint y pico. El tiempo que se podía pasar en estas incidencias, como expliqué en el anterior post, venía predefinido con el número de story points de desarrollo que poníamos como Should.

Algunas ventajas de hacerlo así eran:
  • Seguíamos con la filosofía SCRUM de tener equipos multidisciplinares, pues durante el Sprint al que le tocaba ser "Champion" debía solucionar las incidencias del producto, hablando con quien fuese necesario si no tenía los conocimientos suficientes.
  • No "quemábamos" al equipo. Según mi experiencia, a la gente no le gusta mucho el rol de "Production Incidents Champion". Algo bastante lógico, por otra parte: generalmente ¡significa pelearse con problemas de solución difícil y urgencia muy alta! Rotando la figura entre los miembros del equipo, la carga se hacía más llevadera.
  • Se distraía menos la dinámica de desarrollo del grupo en general. La mayoría continuaban trabajando en nuevos desarrollos "olvidándose" de los incidentes de producción durante los Sprints en los que no estaban nominados como "Production Incidents Champion".
Otro "refinamiento" del método consistía, después de varios Sprints utilizándolo, medir el tiempo real que se pasó resolviendo incidencias, hacer estadísticas y después ajustar con ellas el tiempo de soporte que se acordaba para un Sprint.

Idealmente, el tiempo medio debía ser menor al tiempo máximo que se había destinado = el número de story points marcados como Should. Se habían dado algunos casos de incidencias muy peliagudas, de difícil resolución, que se habían "comido" algunas horas de Must, pero en general el "Production Incidents Champion" realizaba todos sus Must (su Commitment), algunos Shoulds y resolvía alguna incidencia.

Finalmente, otra variación con la que jugamos era la de introducir Coulds. Las tareas Could eran una alternativa a "tomar las siguientes en el Product Backlog", por si algún miembro del equipo acababa su trabajo antes de la finalización del Sprint. No suponían una gran ventaja respecto al método tradicional, solamente que ya las estimábamos y asignábamos de antemano (planning poker).