Gerald Weinberg, en su libro The Psychology of Computer Programming, nos habla de la Egoless Programming o Programación sin ego. Se refiere con este término al hábito de no considerar el código que hacemos como solo «nuestro» y de nadie más, sino artefactos que pertenecen al equipo y que seguramente contienen errores y que pueden ser muy mejorables.
Es una disonancia cognitiva habitual la de no reconocer nuestros propios fallos, y considerar nuestros programas como verdaderas genialidades. Si alguien encuentra un bug, lo negaremos rotúndamente y echaremos la culpa al análisis que estaba mal hecho, al cliente que no nos dijo que lo quería así o que alguien «tocó» nuestro código.
Weinberg cuenta la historia de alguien llamado Bill al que, consciente de poder tener un mal día, pidió a su compañera Marilyn que revisara el importante trozo de código que acababa de escribir. Marilyn fue capaz de encontrar 17 bugs. Pero para ella esto no era suficiente, sabía que donde se habían encontrado 17 errores, seguramente podría encontrarse alguno más. Entregó una copia a otros compañeros, y entre todos, aún encontraron 3 errores más.
Este código estuvo en producción durante 9 años sin que ningún nuevo error fuese nunca encontrado. Bill, lejos de sentirse herido por las tremendas correcciones hechas a su software, contaba divertido la historia a todo el que la quería oir: le habían encontrado 17 errores en 13 líneas de código!!
Además, ahora no solo Bill sabía cómo funcionaba ese trozo de código, Marilyn y los otros compañeros entendían también de qué iba y cómo mejorarlo cuando las inevitables modificaciones llegasen. El equipo al completo estaba al tanto de esa librería, y además de ser una pieza limpia de errores, cualquiera podía integrarse con ella o ampliarla, si fuera necesario.
Por esto funcionan prácticas como las peer reviews, tests por otros miembros del equipo de desarrollo o el pair programming. Tendremos un código más caro, y lento en producirse, pero más fiable y seguro. Más económico a la larga. Menos estresante también: no será tan habitual las sesiones maratonianas un viernes hasta las 2 de la mañana intentando encontrar un bug o las llamadas de clientes por una caída en producción.
Referencias:
- The Psychology of Computer Programming por Gerald Weinberg, Nueva York, Van Nostrand Reinhold, 1971.