En una oportunidad me dijo un cliente que en mi empresa no éramos transparentes porque no fuimos capaces de predecir el futuro. Y no estoy exagerando. Pero a pesar de los pensamientos de injusticia que puedan surgir tras ese comentario, lo cierto es que, analizándolo con perspectiva, se pueden extraer reflexiones interesantes. ¿Qué motivación hay, pues, en la exigencia de predictibilidad en el mundo del desarrollo de software? ¿Por qué no se termina de entender que el software es un sistema complejo adaptativo? ¿Tendrá algo que ver el carácter intangible que tiene por definición?
Es bien sabido que en la mayoría de los casos el software tiene un comportamiento complejo(es predecible en algunos puntos, pero no se puede descartar la existencia de sorpresas)[1]. También, es bien sabido que la complejidad del software no es accidental, está en su naturaleza per se [2]. Sin embargo, la lluvia de críticas sobre la falta de predicción y sobre la ausencia de planes concretos en fases tempranas, es aún torrencial en “nuestra industria”. Y no para de llover. Resulta realmente preocupante la contínua insistencia de exigir en pocos días, planes con alto nivel de acierto; y más vale que luego los cumplas: estimación y compromiso parece ser lo mismo para algunos clientes. En definitiva, se premia la predictibilidad por sobre la adaptabilidad, aún en estos tiempos.
El carácter intangible del software conlleva a una realidad ineludible: es una abstracción; y como todo ente abstracto, es necesario estudiarlo para poder llegar a comprenderlo. No es algo que admita «generalismos» o que permita a nuestro cerebro realizar conjeturas para ensamblar una realidad de su comportamiento. Caso completamente distinto, por ejemplo, en el mundo de la ingeniería civil: imaginemos que vamos a una empresa de construcción y solicitamos un plan para construir una catedral y les decimos que lo necesitamos en dos días. ¿Qué pasaría? A parte de las risas que se puedan echar en nuestra cara, probablemente nada más.
Como consecuencia, el primer enemigo que surge es la desinformación. Que a su vez conlleva a dos problemas muy graves: el desentendimiento y la falta de comunicación(grandes responsables de la mayoría de fracasos en los proyectos[3]). Así, por un lado, los clientes se fijan su propio marco de realidad; y por otro, las empresas proveedoras el suyo, en un ciclo de espiral interminable en donde no hay quien sea capaz de ponerle el cascabel al gato, convirtiendo el problema en la tragedia de los comunes.
Pero hay un halo de esperanza. La sociedad parece estar pujando para que se aprenda sobre tecnología y sobre software desde etapas tempranas[4], un gran avance, desde luego. También se puede ir notando como poco a poco incorporan a la tecnología en los programas de las escuelas de negocio. Sin embargo para que esto de resultados habrá que esperar generaciones. Mientras, debemos seguir luchando en ese largo viaje que representa educar a los clientes. Y sobre todo, no permitir que se nos fijen las realidades, sino fijarlas en conjunto. En una visión compartida.
¿Qué acciones podemos tomar para lidiar con el carácter intangible del Software?
Referencias
[1]Appelo, Jurgen. Management 3.0: Leading Agile Developers, Developing Agile Leaders.(2010)
[2] Brooks, Frederick. The Mythical Man Month: Essays on Software Engineering. (2004)
[3] Gladwell, Malcolm. Outliers: Why Some People Succeed and Some Dont. Little: Little, (2008)
[4] https://www.fayerwayer.com/2011/09/no-mas-word-y-excel-ninos-ingleses-aprenderan-a-programar-en-el-colegio/
Crédito de la imagen
DevaintArt, Creative Commons 2.0
«estimación y compromiso parece ser lo mismo para algunos clientes», excelente observación, pero como logramos cambiar esa forma de pensar en los clientes? o en algunos casos, en nuestros superiores?
Muy Buen post amigo Gerardo, saludos.
Freddy:
Es una muy buena pregunta y complicada de contestar. Yo creo que la mejor forma de ir cambiando la mentalidad es mediante pequeños experimentos(ensayo y error). No es fácil porque nuestros «superiores» y nuestros clientes tienen una mentalidad muy marcada y, lo que hacen, es lo que conocen y lo que dicen que les ha funcionado. Yo creo, sin embargo, que la gestión de proyectos de software es muy importante como para dejarla en manos solo de los gerentes. Debe comenzar por cada uno de nosotros y no esperar a que los «superiores» vean la luz y traigan buenas ideas. Una técnica que siempre me ha servido es preguntar: ¿Cómo es más eficiente lo que tu planteas con respecto a mi propuesta? ¿En qué mejora la empresa esto? Pero como dije al comienzo, no es una pregunta fácil ni que se tenga respuestas unívocas.
Un saludo y gracias por leerme
«Yo creo, sin embargo, que la gestión de proyectos de software es muy importante como para dejarla en manos solo de los gerentes. Debe comenzar por cada uno de nosotros y no esperar a que los “superiores” vean la luz y traigan buenas ideas», excelente afirmacion Gerardo.