Scrum. El framework de los roles, eventos y artefactos

23 de junio de 2015
http://www.pbase.com/dubaidavid/image/58171065/original

Antes de empezar a pensar en el código del primer proyecto comentado en el post Loading... resulta imprescindible una introducción a Scrum, dado que basaremos nuestra forma de trabajo en dicha metodología Agile.

Scrum es, sin duda, la más popular de entre las ramas del mundo Agile orientadas al desarrollo de software. El motivo es sencillo, Scrum es, como sus propios creadores apuntan, un framework, ni una filosofía, ni una disciplina, ni una metodología ni nada por el estilo, simplemente, un framework.

Scrum es un framework formado por un conjunto de roles, eventos y artefactos concebidos y diseñados para facilitar la implantación de los valores Agile en un entorno de trabajo o en el seno de una entera organización, es por eso que es también uno de los colores Agile más sencillo de implementar, pues sólo hay que seguir una serie de normas precisa y minuciosamente descritas.

Como ya señalado en el post Agile, Lean, Scrum, Kanban… ¿cuál es la diferencia? es fácil pensar que Scrum sea una especialización dentro del mundo Agile, pero no es así, pues Scrum es unos diez años anterior al Agile Manifesto, aunque influyó en buena manera en la redacción de éste último, pues sus dos creadores formaban parte de los 17 firmantes.

Scrum es un framework pensado para gestionar de forma eficiente tanto el desarrollo como el mantenimiento de productos complejos en entornos complejos, y entre sus mayores virtudes se encuentran la gestión del cambio y el control del riesgo.

La gestión del cambio y el control del riesgo se consigue planificando el desarrollo de los proyectos en iteraciones de corta duración llamadas Sprints, tras cada una de las cuales se inspecciona el trabajo completado directamente con el cliente y se decide si dicho incremento avanza en la dirección correcta o no, pues como reza un antiguo proverbio chino, si continuas avanzando en la misma dirección llegarás exactamente al lugar al que te diriges.


Principios de Scrum

Scrum está basado en el empirismo, es decir, observación y medida de experiencias pasadas en vez de predicciones sin una base tangible. Esta condición hace que, para que sea posible hacer Scrum, se requiere un tiempo haciendo Scrum, es decir, se necesita un cierto rodaje para poder calcular la capacidad de producción, o velocidad de desarrollo en términos de Scrum, de los equipos de desarrollo implicados en base a resultados anteriores. Esto no significa que un equipo sin experiencia no pueda empezar a hacer Scrum, simplemente quiere decir que las predicciones que realicen para sus iteraciones o Sprints serán significativamente más acertadas a medida que los Sprints se vayan sucediendo y se vaya ganando experiencia.

Los valores fundamentales de Scrum son:

  • Transparencia. Todos los aspectos de un proceso deben ser transparentes a todos sus responsables, es decir, no podemos excluir a los desarrolladores de la parte de diseño ni al consultor de producto de los problemas del desarrollo.
    Los primeros pueden tener mucho que decir en cuanto a cómo un diseño demasiado complejo puede encarecer el proyecto, quizás a cambio de un retorno artístico ínfimo y el segundo podría tratar de proponer al cliente alternativas a una funcionalidad si ésta resultara tan costosa en tiempo y problemática respecto a su desarrollo que pudiera hacer peligrar la calidad del producto innecesariamente.

    Una de las consecuencias inmediatas de la transparencia consiste en el sentimiento de propiedad colectiva del proyecto y cooperación interdepartamental, queriendo decir esto que todos los implicados cooperan activamente pues el resultado afecta e interesa a todos por igual.
  • Inspección. En un proyecto Scrum la inspección debe ser una constante, es decir, se debe cuestionar cada paso una vez completado y en equipo y discutir y decidir si resulta efectivo o no. En Scrum cualquier momento es bueno para la inspección aunque cuenta con eventos específicos dedicados a tal fin.

  • Adaptación. Si tras la inspección se decide que alguno de los procedimientos o tareas que se ha llevado a cabo nos alejan de la consecución del objetivo del proyecto dicha práctica debe ser modificada o sustituida por otra cuyo efecto sea el deseado.
    En general, la adaptación se decide al final de cada Sprint aunque debe tener lugar lo antes posible una vez que el inconveniente o problema ha sido detectado es por ello que los Daily Scrum, reunión diaria de planificación e inspección en Scrum, son también momentos de inspección y adaptación.

Aunque no sea oficial, me gustaría añadir otro elemento que, en mi opinión, resulta ser inherente a Scrum y fundamental para su buena marcha, el equipo. Scrum es cosa de equipos y la primera gran ventaja que Scrum nos aportará de forma sorprendente, y casi inmediata, es que Scrum genera equipo.

Es difícil gestionar un proyecto Scrum con un equipo de una única persona. Para un freelance podría ser una gran ventaja, de cara al cliente, abordar el proyecto de forma iterativa pues se aumenta la frecuencia de feedback, se mantiene el riesgo bajo control volviendo a priorizar y planificar las tareas pero se pierde el elemento de control de los compañeros de equipo, es decir, si empezamos haciendo algo técnico de una determinada manera porque creemos que es lo correcto, difícilmente alguien nos hará ver si estamos equivocados o si existe otra forma mejor de hacerlo y, por tanto, carecen de sentido los eventos de inspección y adaptación que definiremos enseguida por lo cual, y por definición de sus creadores, si no usas todos los elementos de Scrum estarás haciendo algo parecido, pero no será Scrum. De hecho ellos recomiendan no configurar equipos de Scrum de menos de tres miembros dentro del Equipo de Desarrollo.


Componentes de Scrum

Scrum está formado por tres tipos de elementos que analizaremos en detalle en las secciones siguientes, roles, eventos y artefactos. Además Scrum define una serie de normas que los coordinan entre sí.

Como ya mencionado, según sus creadores, cada uno de estos elementos es parte fundamental del framework y si se decide prescindir de alguno de ellos no se estará realmente haciendo Scrum, algo parecido sí, pero no Scrum.

Este tipo de situaciones se conoce como ScrumButs, es decir, se modifican las reglas de Scrum para tratar de sortear un problema.

Suelen responder a la sintaxis:

(ScrumBut)(Razón)(Solución adoptada)

Por ejemplo, (Usamos Scrum, pero)(tener un Daily Scrum cada día supone mucha carga de horas)(por eso lo hacemos sólo una vez a la semana).

En cualquier caso, lo que estemos haciendo no podrá ser llamado Scrum.

Key Points
Scrum es un framework
Scrum está compuesto por roles, eventos y artefactos
Scrum sigue los valores y principios Agile
Agile ayuda a gestionar el cambio y controlar el riesgo
Scrum se basa en el empirismo
Los principios de Scrum son transparencia, inspección y adaptación Los principios de Scrum son transparencia, inspección y adaptación
Scrum genera equipo