lunes, 28 de mayo de 2012

miércoles, 23 de mayo de 2012

¿Han muerto las metodologías ágiles?

Me siento culpable. Y me siento culpable porque soy de los que no les gusta aceptar las cosas porque sí. Necesito verificar criterios, y confirmar que realmente, las indicaciones recibidas y los objetivos, son coherentes.

Y no, no me acabo de levantar con resaca tras una noche de alcohol y desenfreno. Estoy hablando de la muerte de las metodologías ágiles. Y me siento culpable, porque soy muy crítico con posturas tipo “si es ágil es bueno” o también “con SCRUM siempre es mejor”.

Yo veo las metodologías ágiles, SCRUM y XP entre ellas, como los representantes de una gran promesa, un mito casi religioso que ha alcanzado su paroxismo en un cierto momento, y se ha creado una burbuja insostenible. Y la desgracia, será que cuando fallen los proyectos, la culpa se la van a llevar los de siempre: los programadores. Precisamente las metodologías que ponen por encima a las personas, van a ser las que usen a dichas personas como chivos expiatorios, tratando de justificar sus fallos. Y es que tienen fallos (son "humanas"), como me esfuerzo en demostrar con éste y otros mitos.

Y me siento culpable, porque me gustaría ver muchos más proyectos usando Scrum, XP, Lean, etc. Pero no a cualquier precio. No a costa de terminar sufriendo los mismos fallos que las metodologías pesadas y tradicionales nos han traído:
-       Retrasos en las entregas.
-       Spaguetti Code.
-       Deuda técnica.
-       Etc..
Echo la vista atrás y veo que ya hace unos cuantos años que muchísima gente se hace las mismas preguntas que yo:
http://www.infoq.com/news/2008/11/decline-of-agile
http://stackoverflow.com/questions/301993/is-agile-development-dead
http://practicalagility.blogspot.com.es/2008/11/agile-circling-drain.html
http://www.boost.co.nz/blog/agile/rules-of-improv-applied-to-scrum/
http://craignicol.wordpress.com/2011/05/16/agile-is-dead/
http://agilesoftwaredevelopment.com/blog/janusz-gorycki/agile-dead
http://myagileeducation.com/2011/long-live-agile-is-agile-dead/
http://blog.recursivity.com/post/934000041/why-agile-is-dead

Y son sólo unos pocos ejemplos.

Viendo los comentarios que la gente escribe en esos blogs, al final es lo de siempre. Es un flujo que se está cumpliendo con exactitud:
  1. Grandes promesas. En este caso, surge el manuscrito ágil.
  2. No hay pruebas de lo contrario, de que las metodologías no sean el nuevo "resuelve-todo", por lo pero se genera gran expectativa esperando éxito en los proyectos. Curiosamente, con un esfuerzo mínimo. Y además, contentando al colectivo al que se dirige la promesa: por fin los programadores encuentran una metodología que promueve sus aspiraciones y les da el control. ¿Porqué me suena esto extrañamente a la pastilla que todos los años aparece de forma milagrosa y que permite adelgazar sin esfuerzo?
  3. Conforme se añade gente, y un colectivo importante pasa a vivir de la formación, consultoría y porqué no decirlo: de apuntarse al carro y vivir del cuento y de la fama que se consigue con las metodologías ágiles, la burbuja se hace imparable.
  4. ¿Y ahora qué? Pues decepción, sensación de tiempo perdido, proyectos con problemas (los ya comentados retrasos, código spaguetti,...).
  5. ¿Y después? ¿Qué nos depara el futuro? Pues como siempre, adoptaremos las nuevas ideas, aunque esta vez sin verlas como una varita mágica, sino como lo que son: herramientas tan útiles como su adecuación al proyecto en curso, nuestra situación particular, etc...

No hay bola de cristal que nos solucione el punto 5. Ni siquiera tengo claro el que haya explotado aún la burbuja de las metodologías ágiles, a pesar de que muchos autores en la red así lo afirman. De momento, las metodologías “tradicionales” y “pesadas”, no han muerto tampoco. Siguen teniendo sus problemas, pero siempre encuentran un tipo de empresas o proyectos en los que ser de utilidad. En todo caso, evolucionan. Como espero que también evolucionen las metodologías ágiles, evitando convertirse en un elemento más de la cadena de palabras de moda:

·         2nd generation languages
·         3rd generation languages
·         CASE tools
·         UML
·         OOP
·         Java
·         CMM (and CMMI)
·         XML
·         Generics
·         Design patterns
·         .NET
·         Outsourcing/offshoring
·         Agile/Scrum
·         LINQ
·         TDD
·         Etc.

Todos ellos han sido útiles. Muchos de ellos se siguen usando. Pero han tenido su momento burbuja. La clave está en ser lo suficientemente inteligente en mirar atrás y darse cuenta de que al final, no son más que herramientas en nuestra mochila, y no constituye ninguna por sí misma una solución que elimine a las demás de un plumazo.

De todas formas, yo os recomiendo mirar con desconfianza cada vez que un supuesto gurú nos venda la nueva "pastilla milagrosa" en forma de metodología o herramienta.

Además, el uso de SCRUM y otras metodologías ágiles me recuerda a la teoría del caballo muerto que ya comenté en otro post. Se ha tratado de exprimir tanto y tanto a estas metodologías, llegando hasta sinsentidos, que en los casos en que realmente pueden ser útiles (que no son pocos), se genera desconfianza. Curiosamente, es lo mismo que ha pasado ya hace años con las metodologías tradicionales, el desarrollo en cascada, etc.

sábado, 19 de mayo de 2012

El coste de la calidad

La calidad cuesta. Y aquí es donde vais a empezar a pagar. Con horas extras. Uy no. No parece muy buena idea empezar este post parafraseando la frase de aquella serie de los 80 que se llamaba "Fama".

Y sin embargo es cierto: la calidad tiene un coste. Pero no hay que dramatizarlo. Como un compañero de trabajo cuyo nombre mantendremos en el anonimato me decía no hace mucho: "Pero esto de la calidad, ¿cuántas horas extra me va a costar a la semana?". Es curioso. Si se tratara de introducir en el proyecto una tecnología novedosa (aun cuando fuera totalmente irrelevante para el éxito del proyecto), no le importaría dejarse la piel en ello. Pero si se trata de aportar visiblidad, mejorar el número de defectos, introducir buenas prácticas, obtener un repositorio de componentes reutilizables....en ese caso, todo nos cuesta.

Esto me recuerda a cuando éramos niños pequeños: hay que ver cuánto nos costaba lavarnos los dientes. Y sin embargo, es una tarea que supone realmente un esfuerzo y tiempo ínfimos, y mucho más comparado con los beneficios que da. Pero claro, cuando tenemos 4 o 5 años no pensamos en los beneficios. Nos da todo igual.

El motivo de este post ha sido mi lectura reciente de un curso ofrecido por INTECO, en el que he aprovechado para ver si encontraba algo que o no conociera, o que al menos hacía tiempo de lo que no me acordaba. Y me he llevado la agradable sorpresa de un gráfico en el que se analiza el coste del proyecto. Vamos a recordar un poco estos conceptos:

1. Coste del Proyecto

Los costes del proyecto se dividen en Costes de Ejecución (lo que cuesta hacer las tareas productivas), y el Coste de la Calidad (básicamente, el resto)

1.1. Coste de Ejecución

Básicamente serían: la preventa, la planificación y el desarrollo.

1.2. Coste de la calidad

Se dividiría en:
  • Coste de la Conformidad
  • Coste de la No Conformidad

1.2.1. Coste de la Conformidad

  • Evaluación: Son las revisiones, pruebas y auditorías que se hacen para ver que todo está conforme planificado en cuanto a funcionalidad y calidad.
  • Prevención: Son las tareas adicionales de formación, documentación, toma y análisis de datos, etc., que permiten ayudar a que todo esté conforme en cuanto a funcionalidad y calidad.

1.2.2. Coste de la No Conformidad

  • Internos: es el coste de volver a escribir requisitos, rehacer el diseño funcional y técnico, reescribir el código, etc.
  • Externos: soporte técnico, gestión de quejas e incidencias, pérdidas de proyectos, reclamaciones, etc.
El coste de la calidad suele presentarse de forma gráfica de la siguiente forma (clic para ver más grande):
En esta gráfica se muestran los costes totales de la calidad como la suma de los costos de los fallos (lo que hemos llamado "Coste de la No Conformidad"), y los costes de prevención y evaluación (lo que hemos llamado "Coste de la Conformidad"). Vemos que existe un nivel óptimo en el que conseguimos mantener una cuota de fallos razonablemente baja, con un coste total mínimo.