miércoles, 18 de febrero de 2015

SCRUM: para equipos extra pequeños de 1 a 3 personas.


https://www.scrum.org

SCRUM es una herramienta de gestión de proyectos de desarrollo ágil, para equipos pequeños de hasta 7 personas con roles multi-funcionales que les permite organizar mejor el trabajo y dividirlos en iteraciones (Sprints) de alrededor de un mes. Cada iteración debe tener como salida software funcional y de valor para el cliente. (Vea qué es SCRUM)

Pero, ¿Cómo hacer SCRUM en equipos extra-pequeños de 1 a 3 miembros? Queda claro que un miembro por si solo no hace un equipo. Sin embargo, la posibilidad que encuentre ayuda en el futuro es muy alta y aunque estemos solos necesitamos una manera de organizar el trabajo, poder ver el avance y la velocidad con que vamos resolviendo tareas. SCRUM es un buen compañero para todo esto.
Otro problema sería si el equipo, además de ser extra-pequeño, sus miembros están en  diferentes locaciones. Esto es muy común en desarrollos de soluciones de código abierto, donde los miembros colaboran en plataformas como Github, sin apenas conocerse. Scrum no apoya este tipo de prácticas y si valora mucho los equipos localizados en el mismo lugar, pero en ocasiones no hay remedio así que es mejor adaptarse.

Metodología Scrum

De cualquier manera, la metodología para el desarrollo ágil y las herramientas que propone SCRUM nos pueden venir bien. Aquí les presento mi perspectiva sobre como usar este método si estás desarrollando solo ó sola, o con algún compañero. 


Roles de SCRUM

Pues claro, si somos 2 o 3 personas, los roles de SCRUM casi sobran. De todas formas vale la pena mencionarlos: 
  1. Gerente de Proyecto (Product Owner). Es el responsable de la visión del producto, de asegurar el retorno de la inversión en el proyecto. Está constantemente re-priorizando los elementos del Product Backlog. Es quién toma decisiones concernientes al modelo de negocio. Decide cuando el producto está listo para una salida o cuando se debe continuar desarrollando en una nueva iteración. Y por supuesto, puede también contribuir como miembro del equipo.
  2. Facilitador (Scrum Máster). Es el encargado de facilitar el proceso de SCRUM, contribuye a crear un ambiente de trabajo favorable y organizado entre los miembros del equipo. Se encarga de escudar al equipo de intromisiones externas para mantener el avance del equipo. Mantiene visible los artefactos de SCRUM (Product Backlog, tareas asignaciones, tiempos de entrega). Promueve mejores prácticas en la ingeniería del software. Y algo muy importante, no tiene autoridad sobre el equipo, su función es más bien como facilitador/coordinador.
  3. Miembros del equipo: Todos los demás miembros que se encargan del desarrollo, programadores, diseñadores, skateholders, experto de negocio y demás. 
Si desarrollamos en solitario no hay nada que hablar, somos los encargados de todo y necesitaríamos una comunicación directa y muy fluida con nuestro cliente. Estaremos escasos de retro-alimentación e intercambio, lo cual es una debilidad muy grande, pero si no nos queda otra remedio, debemos sacarle el mejor provecho a los encuentros con el cliente o tal vez algún amigo quiera echarnos una mano con algunas observaciones. 

Se requiere mucha disciplina administrarse uno mismo, pero eventualmente podremos ver los resultados: avanzamos mas rápido, podemos priorizar según nuestro ingenio, y lo mas importante según mi experiencia, al planificar tareas con SCRUM, exteriorizamos toda la carga que nos espera y podremos atacarla una a la vez sin pensar en todo lo que nos falta. Al visualizar una gráfica del proceso SCRUM, veremos como hemos avanzado y como el trabajo va quedando atrás, no hay mejor incentivo!
Gráficas de Scrum
Vea algunas herramientas de desarrollo ágil con SCRUM

Si el equipo es de 2 o 3, lo tenemos un poco más fácil: Un Líder del Proyecto y el Scrum Máster. Además de desarrollar, programar o diseñar, ambos miembros deben asumir su rol en el proceso. Uno propone qué hacer y cuándo y el segundo organiza el trabajo, lleva el Product Backlog y evalúa el avance. El uso de alguna herramienta de gestión con Scrum es muy útil. 

Como mencioné antes, es muy probable que el equipo crezca en el futuro, y es muy buena idea tener un proceso ya bien definido y funcionando.  Veamos ahora los meetings que nos propone Scrum y como lo hacemos en nuestro equipo extra-pequeño. 

SCRUM MEETINGS

Veamos los encuentros que nos propone Scrum: 
Meetings de Scrum
No creo que haya diferencia en equipos de menos de 3 personas en lo que se refiere a los encuentros o meetings. Todos son muy importantes para el proceso de desarrollo. Hay algo, sin embargo, que si debo comentarles: al haber pocos participantes la visión y el alcance del Sprint pueden verse comprometidos. Para mitigar este riesgo es necesario tomarse el tiempo que haga falta para analizarlo todo, y luego cuando hayamos definido el alcance, darle una vuelta más de tuerca, quizás hubo algo que dejamos atrás.

Planificación de la iteración (Sprint)
Esta reunión de coordinación deben estar presentes todos los miembros del equipo y el cliente. Es muy importante invertir el tiempo que sea necesario para determinar cuales requerimientos funcionales se desarrollarán y bajo que criterios se definirá como concluida la iteración. En cada salida de Sprint, se espera contar con software funcional y valioso para el cliente, por eso sus criterios y requisitos deben quedan satisfechos en la reunión de planificación.

Ejecución Diaria
Cada día es necesario coordinar el trabajo del equipo. Los miembros revisan del trabajo de otros, se revisan las dependencias, los enfoques... es necesario asegurarse que están todos en "la misma página" con respecto al trabajo diario. En este encuentro se debe eliminar impedimentos que ralenticen en avance del equipo. El Facilitador es quién asume la organización de la coordinación diaria y los acuerdos que de ella se derivan.

Scrum nos aconseja que el Gerente de Proyecto esté presente en este meeting solo cuando sea muy necesario, porque su presencia puede intimidar la creatividad y participación de los demás. Sin embargo, en equipos extra-pequeños es inevitable su presencia, pero es muy importante que asuma una posición de inspiración, colaboración y de igualdad, dejando a un lado su autoridad.

Revisión del Sprint
Es en este encuentro donde se alista y revisa la nueva versión del producto a ser entregado. Y se presenta al cliente los requisitos completados. En dependencia de los resultados mostrados, los cambios realizados y el valor agregado en esta nueva versión, el cliente decide si salir al público o re-planificarse el proyecto.Se hace una valoración cualitativa del trabajo terminado en términos de calidad y rapidez de la entrega.

Revisión en Retrospectiva
El equipo revisa cuál ha sido su manera de trabajar y cuales son los impedimentos que han estado ralentizando el trabajo, mejorando de manera continua su trabajo. Este encuentro es muy importante para al aprendizaje, se debe utilizar varios minutos para compartir desde el punto de vista técnico y organizativo cuales fueron las mejores prácticas y establecerlas como acuerdo general. 

En equipos extra-pequeños o de una sola persona, el cliente debe estar siempre en contacto para cubrir el vacío que deja la ausencia de mas opiniones. Es una experiencia muy valiosa para cualquier cliente formar parte activa de un equipo de desarrollo.

Conclusiones

Scrum nos ofrece una metodología ágil que alienta la creatividad, la interacción, el aprendizaje. Nos ofrece una manera inteligente de lidiar con el cambio y es un punto de partida sólido en proyectos donde no se tiene una definición clara y completa de todos sus requerimientos. 

Aunque en equipos de alrededor de 7 personas, se crean vínculos y relaciones muy fuertes y valiosas en todos los sentidos, en ocasiones podemos encontrarnos en solitario y aún así hacer uso efectivo de las ventajas de Scrum. Preparándonos para un posible crecimiento del número de miembros y asumiendo desde el inicio las herramientas y artefactos de Scrum. 

Me gustaría leer sobre experiencias de equipos extra-pequeños y cómo han manejado sus recursos, tiempo y tarea... Cuéntenme!...