Entre las metodologías de desarrollo nunca me han gustados las metodologías "pesadas", basadas en hacer mucha documentación, procesos, etc. Siempre me ha parecido perder el tiempo hacer tanto documento que luego en la realidad nunca se mira ni sirve para nada y ni siquiera se parece a la realidad.
Se hace el documento -un diseño UML, por ejemplo- antes del código, cuando llevas tres líneas de código ya te tienes que salir del documento porque no contempla ciertas cosas, luego no tienes tiempo -ni ganas- de rehacer el documento. Si te obligan a hacerlo lo haces de mala gana y gastas tiempo y así el infierno durante todo el proyecto.
Cuando descubrí las metodologías ágiles me llamaron muchísimo la atención desde el principio. Se basan en no hacer o hacer sólo la documentación que realmente se necesite. Suplen esa falta de documentación a base de mucha comunicación entre el equipo de programadores, jefes y clientes. Normalmente se obliga a reuniones diarias cortas para contarse cómo va todo. El software se hace a pequeños trozos cada vez y se entregan versiones con un poquito más de funcionalidad cada pocas semanas.
Una de ellas, la que más me llamó la atención y posiblemente la más conocida, es la programación extrema. Me hubiera gustado mucho aplicarla en el trabajo -o al menos, intentarlo para ver qué tal-. Pero me surge un gran problema. Aunque sí soy lo suficientemente jefecillo como para organizar el tema, no soy lo suficientemente jefe como para justificar el "gallinero" que se montaría al poner a la gente a trabajar por parejas. Seguro que me acaba cayendo alguna colleja de arriba. De todas formas, trabajamos en salas diáfanas, en las que hay fácilmente sesenta personas y no todos son programadores. La programación en parejas parece que debería requerir un sitio adecuado, como una sala en la que trabajen sólo los programadores y no muchos, o bien despachos en los que se puedan meter de dos en dos.
Investigando un poco más sobre metodologías ágiles, otra de las que se oye mucho es SCRUM. La idea es la siguiente
Se hace una lista con todas las funcionalidades que se supone que tiene que tener nuestro programa. Puede que no estén todas al principio y cómo todo método ágil que se precie, esta lista se puede ir cambiando a lo largo del proyecto. La lista se llama "Product Backlog". Cualquiera puede añadir a lo largo del proyecto funcionalidades a esa lista.
Hay una persona, llamada "Product Owner", que es el responsable final de la aplicación que se va a hacer y que tiene también la responsabilidad de ordenar la lista "Product Backlog", de forma que las funcionalidades que se pongan primero en esa lista serán las primeras que se hagan. Sólo él puede ordenar esta lista.
De la lista "Product Backlog" se eligen las primeras funcionalidades y que son las que se implementarán en el plazo concreto de tiempo, del orden de un mes. La lista de funcionalidades a hacer. Las funcionalidades elegidas se descomponen en tareas concretas y se les asigna un tiempo para hacerlas y una persona. La lista de tareas a hacer en ese plazo de un mes se llama "Sprint Backlog".
Una vez elegida las tareas de "Sprint Backlog" hay una serie de reglas básicas que se deben cumplir:
- Durante un mes se trabaja en esa lista y esa lista no se cambia.
- Al final de mes se debe tener un software listo con las tareas del "Sprint Backlog" funcionando.
- Se hace una reunión corta todos los días, de menos de media hora, en la que todos cuenten qué han hecho ayer, qué van a hacer hoy y qué problemas tienen para hacer lo que están haciendo.
- Cada día, para cada una de las tareas que se está haciendo, se vuelve a estimar el tiempo que llevará a partir de ese momento. NO el tiempo que se ha trabajado en ella, sino cuánto queda. Supuestamente, cada día debería quedar menos tiempo para acabar las tareas. Un gráfico con los días en el eje x y la suma de los tiempos estimados para cada tarea en el eje y daría un gráfico que empieza arriba y va bajando según pasa el tiempo. Esto nos dará una idea precisa de por dónde andamos.
Y listo, SCRUM no dice mucho más, al menos hasta donde he leído de momento.
Esta sí parece una metodología fácil de aplicar. Tenemos salas de reunión y una reunión diaria corta de seis o siete personas no parece que vaya a "cantar" mucho delante de los jefes -sobre todo porque a primera hora de la mañana los jefes todavía no han llegado-. Además se ajusta muy bien al estilo de programación caótico que tenemos, de que hacemos las cosas sobre la marcha.
Trataré de ponerla en marcha, a ver qué pasa….