martes, 15 de mayo de 2012

Scrum II: Scrum Team

Imagen obtenida de openclipart

Luego de haber comentado un poco la teoría en la que se basa Scrum, es posible hablar de quienes son los responsables de llevarlo a cabo. La puesta en practica se lleva a cabo en equipos denominados Scrum Team, cada equipo esta formado por Product Owner, Development Team (o equipo de desarrollo) y Scrum Master. Estos equipos son completamente autónomos, multidisciplinarios y auto-organizados. Con este modelo se pretende tener flexibilidad, creatividad y productividad. Entremos un poco en los detalles de cada perfil.

Product Owner
El Product Owner es quien gestiona el valor del producto, es decir quien decide que es lo que hay que hacer, se podría comparar con la figura tradicional del Jefe de proyecto. Product Owner hay uno y solo uno, ni dos, ni tres; únicamente una persona determinada es quien puede cumplir este rol. 

Para realizar la tarea con éxito, toda la organización debe respetar las decisiones tomadas por el Product Owner. Nada de el jefe del jefe del jefe dice A o B, el que quiera cambiar algo que hable con el Product owner, tan sencillo como eso. Si lo convencen bien, sino mala suerte, si esta en ese puesto sabrá lo que esta haciendo.

Las tareas que tiene a cargo son:
  • Definir los elementos del Product Backlog
  • Ordenar el Product Backlog para lograr los objetivos establecidos
  • Asegurarse que el equipo de desarrollo cumple con su trabajo
  • Asegurarse que el Product Backlog es visible, transparente y comprensible para todos
  • Asegurarse que el Product Backlog muestra realmente el trabajo planificado
  • Asegurarse que el equipo entiende un elemento del Product Backlog al nivel necesario
Development Team
Los integrantes del equipo de desarrollo serán los que llevaran a cabo las tareas para poder implementar el incremento del producto. Para poder realizar el desarrollo completo de un incremente logicamente tendrán que ser grupos multi-disciplinarios. La organización del grupo depende de si mismos y las relaciones internas son de igual a igual, no hay diferencias de roles, todos son considerados como desarrollador. A pesar de que cada persona tenga un conjunto de habilidades especifico, la regla anterior tiene que cumplirse por lo que cada uno tiene que ser capaz de saber cuales son sus puntos fuertes y sus puntos débiles. 

El tamaño de los equipos es algo que siempre se discute en cualquier metodología, Scrum particularmente no define una cifra concreta sino que determina dos rangos, uno inferior y otro superior. No es aconsejable que el equipo tenga menos de tres personas, aunque a primera vista parezca algo bueno ya que se reduce el tiempo de comunicación aumentando un poquito la productividad, es muy probable que la productividad ganada se desperdicie cuando el equipo se encuentre con un problema que no es el mas adecuado para sus habilidades. Y en el caso contrario equipos de de más de nueve personas requiere mucha comunicación llevando a una reducción de la productividad.

Una posible combinación para un equipo podría tener los siguientes roles: ingeniero de software, arquitecto, analista, programador, tester y diseñador de UI.

Scrum Master
El Scrum Master es el director de la orquesta, tiene que ser capaz de sincronizarse a la perfeccion con el equipo tratando de eliminar todos los posibles obstaculos que aparezcan por el camino. Gran parte de su tarea es estar pendiente de que el equipo de desarrollo siga las pautas de Scrum (teoria, practicas y reglas). Otra de sus funcionalidades es de actuar como un enlace entre el equipo y el mundo exterior, decidiendo cuando el equipo puede o no interactuar con alguien del exterior.
Brinda tres tipos de servicio:

  • Servicios para el Product Owner
    • Proveer de técnicas eficaces para la gestión del Product Backlog
    • Comunicar el objetivo del Product Backlog al equipo de desarrollo
    • Enseñar a todo el equipo como diseñar elementos del Product Backlog
  • Servicios para el Equipo de desarrollo
    • Ayudar con la organización del equipo
    • Ayudar con la creación de un producto de gran valor
    • Eliminación de obstáculos
  • Servicios a la organización
    • Guiar a la organización a adoptar Scrum como metodología
    • Generar cambios que produzcan un aumento en la productividad de equipo
    • Trabajar coordinadamente con otros Scum Masters para aumenta la eficacia de Scrum en la organización.
    • Planificar la implementación de Scrum con la organización

Los servicios que brinda un Scrum Master como puede verse son muchos y muy variados, sin duda que es un perfil muy flexible. Es una pieza clave para el desarrollo de Scrum, al principio sera un guía, un instructor enseñando al equipo con mucha frecuencia, luego que el equipo adquiera experiencia tendrá que enfocarse en la motivación, para que esta no decaiga.

Para la próxima eventos y artifactos.