Dulce introducción a Scrum

Como íbamos diciendo…

Una gallina le dice a un cerdo: Eh, ¿por qué no montamos un restaurante?

El cerdo le responde: Me parece bien, ¿qué nombre le ponemos?

A lo que la gallina contesta:  ¿Qué te parece “Huevos con jamón”?

Y el cerdo le replica: No me gusta. Tú sólo estarías involucrada mientras que yo estaría comprometido

Este chiste, de tan mal gusto, viene a reflejar una distinción evidente dentro de aquellas personas relacionadas con el desarrollo del software. Imaginemos por ejemplo un usuario de la aplicación: ¿desempeña alguna labor dentro del desarrollo del software? No. Y sin embargo, debe tenerse en cuenta a la hora de realizar el software que se va a desarrollar para él. En definitiva: está involucrado pero no está comprometido.

En 1986, los profesores de Empresariales Hirotaka Takeuchi e Ikujiro Nonaka, propusieron un modelo de desarrollo de procesos que presentaba una alternativa al modelo de entonces. Haciendo una comparación con el mundo de los deportes:

  • En el fútbol, el entrenador y los jugadores se reúnen antes de empezar la primera parte para poner en común la estrategia que van a seguir a lo largo del partido. Una vez empezado el partido, los jugadores no vuelven a reunirse para discutir sobre tácticas hasta el descanso, en donde pondrán en común la forma en la que van a abordar la segunda parte en su totalidad (exceptuando mensajes muy esporádicos enviados desde el banquillo por el entrenador ^^).  En resumen, decisiones estratégicas que afectan a periodos de tiempo amplios y largos intervalos temporales entre reuniones estratégicas.
  • En el rugby, en cambio, los jugadores intentan avanzar yardas en sucesivos intentos (también llamados downs u oportunidades). Entre cada uno de estos intentos, los jugadores se reúnen formando una piña para poner en común la estrategia que van a seguir. En esa toma de decisiones, plantean la táctica únicamente para este down (¡ya decidiremos lo de más adelante cuando veamos los resultados de este intento!). En resumen: decisiones muy específicas para intervalos cortos y reuniónes frecuentes para tomar esas decisiones.

Precisamente en 1991, Peter DeGrace y Leslie Hulet Stahl, llamaron a este modelo de procesos Scrum, que es el nombre que tiene el pelotón de jugadores que se forma tras cada interrupción en un partido de rugby. El eje principal de esta metodología de procesos (y de muchas otras metodologías agile) está en realizar un desarrollo iterativo e incremental.

Iterativo, porque se segmenta el tiempo en sprints, o periodos fijos de tiempo (normalmente entre 1 y 4 semanas). En cada uno de estos periodos o iteraciones, se crea un producto de software que puede ser probado por el cliente. No importa que empiece siendo un producto con funcionalidad pobre, ya que queremos que sea…

Incremental, porque en cada sprint vamos incrementando la funcionalidad del producto.
Este modelo se contrapone al modelo clásico de desarrollo del software (ver Waterfall o diseño en cascada), donde existe un solo ciclo en el que se realiza una fase de análisis previo, una segunda fase de diseño y una fase final de implementación.

En palabras de Henrik Kniberg, el modelo clásico de desarrollo de software se asemeja a disparar a una diana utilizando el proyectil de un cañón. Gastaríamos bastante tiempo inicialmente en elaborar complejos cálculos para calcular la trayectoria y la inclinación a la que tenemos que colocar el cañón. Una vez realizada este análisis previo, encenderíamos la mecha y cruzaríamos los dedos.

¿Pero esto funcionaría en el mundo real? El problema es que el entorno del desarrollo de software no es perfecto. ¿Qué ocurre si sopla el viento durante la trayectoria del proyectil? ¿Y si el cañón tiene un defecto en el calibrado? ¿Qué ocurre si la diana se mueve de su posición original?

Muchos han intentado cambiar estas variables del mundo del software, pero se ha demostrado que es un entorno catastrófico cambiante y cuanto antes nos demos cuenta de eso, mejor. Sabemos que ahí fuera, en el mundo real, los servidores se caen, las conexiones se pierden, los programadores enferman y los campos electromagnéticos destrozan pulverizan nuestros discos duros.

Con esta metáfora, el modelo de Scrum se asemejaría más a un misil inteligente, el cual lanzaríamos sin hacer muchos cálculos, ya que el propio proyectil sabe cambiar su trayectoria mientras va volando en ruta. Ese es el camino de Scrum y del desarrollo ágil: el poder revisar el desarrollo de forma frecuente, continuada e incremental.

Para conseguir esta utopía necesidad, Scrum propone dos tipos de roles: roles cerdo (comprometidos con el proyecto) y roles gallina (involucrados con el proyecto):

Roles cerdo:

  • Product Owner:  responsable de que el desarrollo iterativo del producto va cumpliendo las necesidades del cliente.
  • Equipo de desarrollo: el equipo encargado de desarrollar el producto
  • Scrum Master: encargado de que el proceso Scrum se realiza correctamente.

Roles gallina:

  • Usuarios de la aplicación
  • Clientes
  • Managers

En el próximo capítulo hablaremos en profundidad de cada uno de estos roles y de su importancia en Scrum…

Gallinas y cerdos

Una gallina le dice a un cerdo: Eh, ¿por qué no montamos un restaurante?

El cerdo le responde: Me parece bien, ¿qué nombre le ponemos?

A lo que la gallina contesta:  ¿Qué te parece “Huevos con jamón”?

Y el cerdo le replica: No me gusta. Tú sólo estarías involucrada mientras que yo estaría comprometido..

Esto se supone que es un chiste, pero como es americano, no tiene por qué hacer gracia (¿alguien ha escuchado un chiste gracioso en una película americana?). El caso es que esta fábula nos trae a colación uno de los puntales básicos de Scrum, una de las metodologías ágiles más famosas en el mundo del desarrollo de proyectos…

En este blog nos ocuparemos, precisamente, de comentar y revisar estas metodologías, creadas por un conjunto de personas que vieron que el desarrollo de proyectos de software no se estaba realizando de forma óptima y decidieron darle una vuelta de tuerca. Estos fulanos, aparentemente descontentos con las rutinas y los procesos que se llevaban a cabo, decidieron firmar el conocido como Manifiesto Ágil (Agile Manifesto). Como todo manifiesto que se precie, contenía una serie de puntos clave en los que resumían su nueva filosofía.Imaginamos que el juramento del manifiesto Agile fue algo así... Aquí van las principales:

  • Individuos e interacciones sobre procesos y herramientas.

Es decir: valoramos más las aportaciones humanas al mundo del software que las de los seres inertes (como una base de datos, un servidor con telarañas o ciertos operadores de atención al cliente).

No quiere decir esto que desechemos los procesos o herramientas, ya que el mundo de la programación sería inviable sin ellos, pero estamos en contra de tener que seguir un protocolo de control de cambios faraónico durante varios días, para finalmente añadir una nueva funcionalidad que ni siquiera el cliente había pedido…

  • Software funcionando sobre documentación extensiva.

O en otras palabras:  ¿qué estamos entregando a un cliente? ¿un software que cumpla sus especificaciones o un documento de 300 páginas en Arial 14 con doble interlineado? Al escuchar a muchos clientes puede parecer lo segundo, pero creedme: ningún cliente lee esos documentos. Durante toda mi vida laboral me he dedicado a escribir “el cliente huele a culo de mono” oculto en distintas partes de la documentación y hasta la fecha nadie se ha quejado. Además, ¿qué desarrollador de software disfruta generando documentación? Alguno habra, digo yo, pero seguro que si esta tarea representa no más de un 5% del total de sus horas de trabajo, van a disfrutar mucho más de lo que hacen.

  • Colaboración con el cliente sobre negociación contractual

Atrás quedaron ya esos contratos grabados en piedra y cincelados en una reunión soporífera con el cliente hasta altas horas de la madrugada. El software ni es una casa ni es un jugador de fútbol. Es algo cambiante, mejorable, sustituible, propenso a fallos, mutable, maleable. Puesto que lo mejor es ir construyéndolo paso a paso, ¿por qué no dejar que el cliente nos ayude en cada uno de estos pasos?

  • Respuesta ante el cambio sobre seguir un plan

Seguir lo planificado está muy bien, pero, ¿realmente tiene esto sentido en un mundo tan cambiante como el de la informática? Si echamos la vista diez años atrás, no existía Facebook, no existía Twitter y no existía SeriesYonkis (por decir algunas web famosas). ¿Cómo vamos a poder planificar en un mundo tan cambiante?. Seguro que un conjunto de personas cualificadas capaces de adaptarse nos resulta mucho más valioso que un conjunto de personas capaces de elaborar una extensa hoja de ruta con estimaciones sobre los próximos 3 años…

Bertildo, el Dilbert español

Y ni siquiera hemos tenido en cuenta al cliente. Si tenemos un plan fijado con fuego y nuestro cliente quiere introducir cambios a mitad de proyecto: MALO. Si tenemos un plan fijado con fuego y nuestro cliente no introduce ningún cambio: MALO. Solución: hagamos planes, sí, pero tengamos en cuenta el cambio en todo momento.

A partir de aquí, si estamos de acuerdo en estos puntos, solo queda buscar metodologías que nos permitan cumplir estas filosofías de la manera que más se adapte a nuestro caso en particular. Pero para ello, tenemos tiempo y papel en blanco.

A todo esto, ¿a qué venía el chiste del principio? Eso lo veremos en el próximo capítulo.

Bienvenidos, gallinas y cerdos.

http://agilemanifesto.org/

http://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software