Scrum

Tu software es complejo, ¡Y aún no lo sabes!

¿Cuántas veces has terminado un proyecto y has pensado… ¡Si hubiéramos invertido más tiempo en análisis seguro que habríamos tenido menos problemas!? Otras veces has estado meses analizando algo y el tiempo para construirlo es tan pequeño que piensas “Si hubiéramos empezado antes a desarrollar hubiéramos avanzado más rápido”

¿Por qué ocurre esto? Jurgen Appelo en su libro Management 3.0 hablaba de que cuando aplicamos el método causa-efecto para tratar de gestionar nuestros problemas, descubrimos que nunca encontramos las causas y que al final nos quedamos con “si hubiéramos hecho…”. Sin embargo, no somos capaces de predecir los efectos en el momento que las causas se manifiestan.

El software es complejo

Hay otra pregunta que me hice hace tiempo ¿Por qué aparece Scrum en el mundo software y no aparece antes? El software es una ingeniería muy nueva y, como nueva disciplina, trato de funcionar como el resto de disciplinas que ya existían. El software ha utilizado la arquitectura como disciplina, por eso tratamos de hacer diseño y construcción y por eso tenemos el rol del “arquitecto software”. Además, el software se basó en la teoría de Taylor de hiperespecialización. Durante muchos años iba todo bien, pero apareció el desarrollo orientado a objetos y la necesidad de trabajar en equipo, lo que empezó a complicar el asunto.

Muchas personas empezaron a descubrir que el software era bastante diferente a otras disciplinas. El software es complejo. Ser complejo quiere decir que hay más variables que no conocemos de las que conocemos. Esto hace que nuestras estimaciones rara vez se cumplan porque no estaremos teniendo en cuenta problemas que desconocemos en el momento de hacer predicciones. Aquí tenemos el motivo por el que cuando analizamos situaciones negativas pensamos ¿Si hubiéramos sabido esto podríamos…? Y creemos que añadiendo más tiempo de análisis lo hubiéramos resuelto. En el siguiente equipo añadimos dicho tiempo y entonces se vuelven a presentar nuevos problemas que no habíamos detectado. ¿Es que nunca van a salir bien nuestras predicciones?

Agile ayuda contra el software complejo

Los firmantes del manifiesto Ágil descubrieron que el software es complejo y por eso no iba bien y decidieron que era el momento de probar con otra estrategia. La pregunta es sencilla ¿Cómo afrontamos los problemas complejos? Hay una disciplina que se enfrenta a problemas complejos desde hace siglos: la ciencia. Los científicos se enfrentan a problemas dónde muchas veces solo tienen claro la visión pero no cómo alcanzarlo. La cura para una enfermedad o enfrentarse a un avance en un área de la ciencia. El método científico se basa en tres pilares fundamentales: inspección, adaptación y transparencia.

Para afrontar problemas complejos y dado que controlamos pocas variables lo ideal es hacer un pequeño avance y pararnos para inspeccionar nuestro incremento. Tras inspeccionar adaptamos las próximas acciones a tomar. Por último, para tomar las mejores decisiones necesitamos que todas la información esté disponible ya que sinó cometeremos más errores, de ahí la importancia de la transparencia.

Los pilares de Scrum

Precisamente Scrum se basa en estos tres pilares. Cada evento que compone el marco Scrum es una oportunidad de inspeccionar y adaptar además de fomentar la transparencia. Por ejemplo, en la Daily Scrum inspeccionamos nuestro plan de Sprint (Sprint Backlog) y adaptamos las acciones que vamos a tomar las próximas 24 horas hasta la siguiente Daily Scrum.

software es complejo

Contaremos en otros posts más adelante cómo funciona Scrum. De momento, es importante que interioricemos que el software es complejo. Los problemas complejos no se solucionan con más tiempo de análisis, sino con prueba-error. Cuando estés en un equipo que tiene problemas piensa cuánto invertiste en planificar y si de verdad más tiempo hubiera sido la solución o los problemas han aparecido a medida que desarrolláis. Si los problemas aparecen mientras construimos, ¿Por qué no empezar a construir cuanto antes y poder afrontarlos? De ahí la importancia de que vayamos a producción cuanto antes aunque sea con una pequeña funcionalidad ¡Así eliminamos las variables que no conocemos!

Es curioso la gran cantidad de autores que hablan de la complejidad del software. Creo que ahí está la clave del éxito de Agile, entender que el software no es predecible y que la gestión por estimación da muchos problemas.

1 pensamiento sobre “Tu software es complejo, ¡Y aún no lo sabes!”

Deja un comentario