09 octubre 2009

…o “¿dónde están todos los requerimientos?”…

En nuestra poca experiencia en SCRUM hemos tenido un problema de “desorden” que donde se nota es al final de los proyectos, en las entregas, no de los sprints, sino de las releases.

En las entregas nos encontramos con que algunos requerimientos no los habíamos implementado. No por no haberlos recogido o analizado, sino porque los medios donde recogíamos los requerimientos eran “diversos”… correos-e, documentos de requisitos, notas de reuniones (actas). Y no es la diversidad de “artefactos” lo que hacía que se extraviaran algunos requisitos, sino la indisciplina de, una vez recogidos, no pasarlos, centralizarlos en un medio común.

Lo peor de todo es que algunos de esos requisitos no implementados (que finalmente encontramos), el cliente los consideraba importantes, y en ningún momento los incluimos en las planificaciones.

Achaco este desorden a no tener definida una herramienta donde recoger los requisitos, donde centralizarlos. Teníamos una, pero no la utilizábamos bien… la “vista” que utilizábamos era “guay” pero no “útil”. Una lista en grid, donde se puedan ordenar, priorizar, ponerles el estado, compartir, es la mejor opción.

Pero sólo utilizar una. La opción de pasarlos en Excel para enviarlos al cliente no es válida. La opción de pasarlos en Word temporalmente y luego ya los pasaré a la herramienta de requisitos tampoco. La opción es pasarlos a la herramienta y luego exportarlos a donde necesitemos.

Mi objetivo de los últimos días es disciplinarnos, centralizarnos, compartirnos y actualizarnos… y, claro, encontrar la herramienta. Es sabido que no existe la herramienta “mágica”. Que hasta con archivos de texto podríamos realizar este trabajo. Pero en el proceso de scrumización, la disciplina es importante y la herramienta ayuda mucho a mantener la disciplina, facilitando el trabajo a aquellas personas que tienen que mantener la información asociada al proyecto. Si una herramienta no facilita el trabajo, sino que lo entorpece, tendemos a no usar la herramienta, a dispersarnos y a usar cada uno la suya. Vaya… lo mismo que pasa con las aplicaciones que hacemos.

Ahora… que tengo un punto más sobre el que trabajar, mientras lo desarrollo, me pongo con el siguiente punto: los tests. En la charla de “Gestión Ágil con TFS, SCRUM y buenas prácticas” que nos dio Rodrigo Corral en las sesiones Microsoft ALM ‘09 de Madrid, comentó una cosa que hizo temblar una vez más… dijo una de aquellas frases que son como un golpe de puño en la mesa: de nada sirve la metodología sin tests unitarios, gestión del código fuente, builds automatizadas.

Voy a atacar a los tests, pero, ¿qué va primero: el huevo o la gallina? ¿Implementar un proceso de testeo o implementar una metodología que permita definir qué validan los tests? Esperemos haber decidido la metodología de antemano no haya sido del todo incorrecto… que las dos cosas tengan que ir a la par, y que incluir los tests en el proceso no sea un trabajo de titanes: aprender, concienciar e implementar.

Os iré contando.

2 comentarios

Si es que todavía me muero de rabia por no haber estado en Madrid!!!!

Respecto a las entregas totalmente cierto, se ha visto claramente, esta vez hemos sido metódicos, y hemos mejorado muuucho en nuestro proceso de gestión, hemos acercado al cliente al proceso de desarrollo y le hemos dado visibilidad. Pero no podemos quedarnos quietos, a pesar de ello nos han salido muchas cosas, demasiadas, que el cliente daba por hechas y comentadas, y que nosotros no hemos incluido. O en otras ocasiones ha sido muy costoso recopilar al final todos los requisitos pendientes para conocer el estado actual del proyecto!

Y, aunque la herramienta actual ha sido muy útil y nos ha ayudado mucho a la hora de adoptar Scrum, nuestras necesidades empiezan a estar por encima de ella. Es hora de cambiar, de dar un paso más y saltar al siguiente escalón.

Y este escalón incluye los tests, sí, esta herramienta tiene que proporcionarnos ya la posibilidad de hacer TDD, Integración Continua y a la vez cubrir nuestras necesidades en cuanto al backlog, facilidad e inmediatez a la hora de acceder y modificar los sprints, explotación de los datos, y un largo étc.

No me cabe dudas esta herramienta es TFS, y necesitamos instalarlo, prepararlo y empezar a usarlo. Empezar poco a poco, como he visto a mucha gente hacerlo, primero utilizando la parte de gestión del proyecto y repositorio de código,posteriormente explotando la integración continua y acto seguido haciendo TDD, tanto para modelar el código como, unido a la integración continua, para aumentar la calidad del código y, en definitiva, de la Release.

¿que es primero, el huevo o la gallina? Yo creo que lo he respondido, el siguiente paso desde mi punto de vista, es:

- TFS
- Integración continua
- TDD

Estamos preparados.

Reply

Pues.... años después de haber escrito esto mi experiencia me ha dictado que:

(1) Sí es necesario tener todas las necesidades del cliente centralizadas

(2) Hacer Inceptions - da mucha luz a lo que en realidad se quiere y a qué es más importante

(3) Incluir testing automático facilita mucho las cosas - Sea TDD, Tests Unitarios que certifiquen escenarios o Tests que validen que no se reproducen bugs - Pero incluir testing

(4) La integración continua ahorra tiempo y dolores de cabeza

(5) Las personas importan más que la herramienta que usemos, PERO (y POR LO QUE) la herramienta que usemos no debe agregar problemas, sino facilitar las cosas - por lo que la elección de la herramienta es importante

...y eso que os comento...
Ánimo, que este camino recompensa a quienes lo siguen.

Reply