miércoles, 8 de abril de 2015

Software y complejidad

El software es algo casi mágico: moldeable, flexible, potente... 

...y sin embargo es también una fuente casi inagotable de quebraderos de cabeza: proyectos que se retrasan casi sistemáticamente, 'bugs' que resisten cualquier depuración, comportamientos inesperados, 'cuelgues'... y degradación con el uso.

¿Qué pasa con el software?

Quizá simplemente le hemos perdido injustamente el respeto, quizá lo hemos menospreciado y lo hemos considerado algo familiar y del día a día, al alcance de todos cuando, en realidad, el software es enormemente sofisticado.

En su libro 'The mythical man-month', Frederick P. Brooks Jr. nos lo dice de forma muy clara: se trata de que el software es, por naturaleza, complejo.

The complexity of software is an essential property, not an accidental one.

Y no es extraño. Una gran parte de la magia del software es su capacidad de adaptarse a situaciones y datos diferentes. Ese comportamiento flexible y aparentemente inteligente indica una lógica compleja y una gran cantidad de combinaciones y caminos posibles. Por eso mismo, no sólo se trata de que sea inherentemente complejo sino que, además, dicha complejidad crece mucho con el tamaño, cuando los caminos se multiplican:

Many of the classical problems of developing software products derive from this essential complexity and its nonlinear increases with size.

Y si esto ya lo hace difícil de producir y mantener, Brooks nos apunta una última dificultad de cara al diseño:

software is difficult to visualize

Es decir, trabajamos con una materia intangible, muy compleja, con muchas variantes y caminos y queremos aprehenderlo en nuestras mentes...pero no se deja visualizar ni reducir fácilmente a esquemas.

¿A alguien le puede extrañar que sea de tan difícil gestión? ¿Nos sorprende que no se deje domesticar?

Desde un punto de vista de gestión y dirección de proyectos no podemos dejar de lamentarlo pero, seamos sinceros y reconozcamos, aunque sólo sea por un momento que, para nuestra alma de desarrolladores, para nuestra vena de innovación, esa complejidad, ese reto, esa dificultad...forman parte también de la magia...