Archivos Mensuales: enero 2016

Qué funciona haciendo software y por qué

En la pasada CAS hubo una keynote en la que se hablaba de estudios relacionados con el desarrollo de sofware, y de su “relativa” validez. Estoy muy de acuerdo en que algunos de estos estudios dan un poco de risa, y de hecho ya hice ese ejercicio de analizar dichos estudios hace unos años. No estoy muy de acuerdo con el mensaje, que se reducía IMHO a “No te fíes de nada, prueba con todo a ver si a ti te funciona” utilizando los mismos argumentos y estrategias que se critican cometiendo algunos errores de bulto, pero es no es la cuestión principal.
La cuestión cuando llegamos aquí es: ¿es posible medir los beneficios de determinadas prácticas desarrollando software?  San Martin de Fowler habla de la evidencia anecdótica para referirse a prácticas que funcionan en un caso como algo útil en ausencia de datos objetivos (dado que opina que no podemos medir la productividad). Efectivamente los equipos de software son sistemas muy complejos en los que es muy difícil medir como una práctica determinada influye en nuestro rendimiento más allá de sensaciones, no tenemos la regla de medir la productividad y así poder decir al finalizar una iteración que, por ejemplo, hacer programación por parejas a aumentado/disminuido nuestra productividad en un x%. Bajo mi punto de vista esto tiene varios problemas:
  • En primer lugar no tenemos esa regla para medir productividad. Normalmente funcionamos más por sensaciones, por lo que nos parece que funciona, que con datos objetivos, por lo que nos quedamos siempre en el terreno de lo discutible (y ahí seguimos, discutiendo).
  • Digamos que podemos medir la productividad en historias/puntos/loQueSea, siempre tendremos una medida relativa que para cada equipo y que sólo funciona para ese equipo, lo que limita mucho la validez y generalización de estas medidas. Eso suponiendo que funcione algo para ese equipo, porque en muchas ocasiones esas métricas no existen.
  • Aunque encontráramos esa manera de medir la productividad, si algo está demostrado es que el esfuerzo dedicado a mantener un software es mayor que el esfuerzo dedicado a su desarrollo inicial, por lo que habría que medir también la “mantenibilidad” de dicho software, lo que bajo mi punto de vista es aún más complicado.
Dicho esto, retomo la pregunta, ¿es posible medir los beneficios de determinadas prácticas? Parece complicado, y aunque existen muchos estudios de todo tipo, no hay conclusiones claras, o al menos y no las conozco. Es difícil aislar un estudio de todos los factores externos que hemos comentado, pero eso no quiere decir que sea imposible. Quizá no hemos encontrado la manera correcta de hacerlos, o quizá realmente no nos interesa contar con esos datos como industria, y preferimos movernos en el terreno de la incertidumbre, y seguir vendiendo humo que parece que funciona bien.
Hay personas en este mundo que han construido un acelerador de partículas para acelerar átomos a velocidad absurda para durante un tiempo infinitesimal podar visualizar elementos cuánticos como el Bosson de Higgs, y resulta que la industria del software no es capaz de comprobar si dos personas en el mismo ordenador programando rinden mejor que una. Francamente me resulta desolador, pero si existen intentos de llevar esta experimentación un poco más allá: https://vimeo.com/9270320 ( vía un tweet de @javisantana).
Anuncios