Software libre y la La Psicología del programador Por allá en el año 1971 el sociólogo Gerald P. Wienberg escribió un libro llamado La Psicología de la Programación de Computadoras en cual presenta este tema como parte importante de la actividad humana y cuenta los resultados de sus observaciones y experiencias. En un artículo anterior de esta columna escribí una nota llamada Monumento al programador desconocido tratando de hacerle un homenaje a este tipo de profesionales que de manera han vendido influyendo en el comportamiento de la gente hasta tal punto de que el software es considerado como un producto de seguridad nacional en el los planes estratégico del software para el 2015 de los Estados Unidos. En el software libre se hace presente esa actividad humana de manera muy especial teniendo en cuenta su participación de manera libre en la creación de estándares que han llegado a conformar toda una Ingeniería de software. En mi conferencia sobre Desarrollo en ambientes libres del Salón de informática de Acis en el 2007 comentaba el hecho que en el caso de los desarrollos de tipo propietario estos nacen por las necesidades del cliente, mientras que en el software libre nacen de las “necesidades” del programador que haya identificado un tema de su personal interés. En estos casos la actividad que desarrolla es de una entrega sin precedentes loc aul de por si tiene influencia muy positivas sobre la calidad del desarrollo. Referente al que podríamos llamar los procesos basados en la libertad Wiemberg cuenta sobre un experimento llamado “Disonancia cognitiva” en el cual hacen dos grupos separados de personas y les ponen la tarea de defender una idea sobre la cual cada grupo tiene un rechazo comprobado consistiendo el trabajo en hacer un documento que la defienda. A un grupo se le ofrece dinero por hacerlo y al otro nada. Weimber comprueba en su experimento cómo aquellos que reciben dinero dificilmente logran producir un resultado “satisfactorio” debido a que media en su trabajo aspectos como la ética, la defensa de sus propios principios y otros aspectos de tipo moralista. En cambio el grupo que hace el trabajo sin pago adopta una actitud de ejercicio intelectual que no juega contra sus aspectos morales sino netamente intelectuales logrando así que si roduzcan resultados “satisfactorios”. Ese aspecto de la libertad juega entonces un papel preponderante en la psicología del programador que lo hace muy eficiente intelectalmente en el momento dedesarrollar sus prototipos. Cuenta Weimberg en otro episodio de su trabajo cómo enuna Universidad había un servicio académico para que los estudiantes pudieran asesorarse de los profesores para la resolución de problemas de programacón de computadores. Alrededor de las oficinas había máquinas de Gasesosasy de café y ventas de comestibles convietiéndo el lugar en un sitio un poco ruidoso y muy poco uso de los servicios de tutorias lo cual hizo que la administración quitara las máquinas y cerrara las ventas de comestibles para que los estudiantes de programación hicieran colas ordenadas para utilizar los servicios de los profesores. Sucedió entonces que el sitio comenzó a tener una asistencia mínima y si bien se solucionó el problema del ruido y la congestión no dió resultados la tutoriía que se pretendía organizar. El estudio de este fenómeno dio como conclusión un hechointeresante. Cuando el sitio tenía cierta apariencia de reunión social, los estudiantes mismos creaban tertulias suficientes para compartirse los problemas y resolverlos entre ellos mismos. Reutilización de código propio y de terceros Esta famosa frase sobre la importancia de la reutilización de código cobra un valor superlativo en el software libre pues va más allá del desarrollo de las propias librerías con el claro propósito de aumentar la productividad y de facilitar el mantenimiento futuro. Trasciende a la reutilización del código de “otros programadores”. Si bien a los hackers se les identifica por tener una vanidad excesiva, es curioso que no sientan ninguna pena de reutilzar el código de otros y considerar que la búsqueda del camino más fácil, como lo pregona Torvals, es un síntoma de mayor inteligencia. El sociólogo Gerald Weimberg autor del libro la Psicología del programador [3] se permite hacer una discusión sobre la "programación sin ego", y concluye que cuando no hay propiedad del código y se estimula la búsqueda de los errores el avance es más rápido. Enséñame tu código y te diré quién eres En el software propietario el código fuente no está expuesto al público en general, por lo que no es común sentir ansiedad por la exposición de esta faceta de la personalidad. El mismo Weimberg en su libro sobre la Psicología del programador, ya citado, demuestra cómo el mismo problema es resuelto de diversas formas según la persona que lo haya escrito y explica cómo, en él código, hay una expresión de la personalidad de quien lo haya hecho. En el software libre se debe estar sujeto a esta exposición de si mismo ante un público casi siempre muy experto. En la visita a Colombia de Rasmus Lerdorf el creador del lenguaje php tuve la oportunidad de preguntarle cómo era ese proceso en el cual un colaborador es o no aceptado para trabajar en un grupo de desarrollo abierto y él me comentaba que era un proceso netamente social en donde la aceptación o el rechazo era producido por la misma comunidad. “Enseñarme tu código y te diré quién eres”. Pero tal vez más enfático sería decir si seguimos las normas de Raymond: “Dime cómo son las estructuras inteligentes de tus datos y te diré quién eres”. Hay casos en que la búsqueda de la perfección hace daño. Hay quienes dicen que lo perfecto es enemigo de lo bueno. Pero más filosóficamente lo dijo Antoine De SaintExupýýry [4], en el Principito, como lo comenta Raymond: "La perfección se alcanza no cuando ya no hay nada que agregar, sino cuando ya no hay algo que quitar” Gerald Weinberg La Psicología de la Programación de Computadoras plantea, visto en retrospectiva, una corrección esencial a Brooks. En su discusión de la "programación sin ego", Weinberg señala que en los lugares donde los desarrolladores no tienen propiedad sobre su código, y estimulan a otras personas a buscar errores y posibles mejoras, son los lugares donde el avance es dramáticamente más rápido que en cualquier otro lado. Pero, ¿qué es el estilo de liderazgo y qué estos hábitos? No pueden estar basados en relaciones de poder, y aunque lo fueran, el liderazgo por coerción no produciría los resultados que estamos viendo. Weinberg cita un pasaje de la autobiografía del anarquista ruso del siglo XIX Kropotkin Memorias de un Revolucionario, que está muy acorde con este tema: "Habiendo sido criado en una familia que tenía siervos, me incorporé a la vida activa, como todos los jóvenes de mi época, con una gran confianza en la necesidad de mandar, ordenar, regañar, castigar y cosas semejantes. Pero cuando, en una etapa temprana, tuve que manejar empresas serias y tratar con hombres libres, y cuando cada error podría acarrear serias consecuencias, yo comencé a apreciar la diferencia entre actuar con base en el principio de orden y disciplina y actuar con base en el principio del entendimiento. El primero funciona admirablemente en un desfile militar, pero no sirve cuando está involucrada la vida real y el objetivo sólo puede lograrse mediante el esfuerzo serio de muchas voluntades convergentes." El "esfuerzo serio de muchas voluntades convergentes" es precisamente lo que todo proyecto estilo Linux requiere; mientras que el "principio de orden y disciplina" es efectivamente imposible de aplicar a los voluntarios del paraíso anarquista que llamamos Internet. Para poder trabajar y competir de manera efectiva, los hackers que quieran encabezar proyectos de colaboración deben aprender a reclutar y entusiasmar a las comunidades de interés de un modo vagamente sugerido por el "principio de entendimiento" de Kropotkin. Deben aprender a usar la Ley de Linus. La "función utilidad" que los hackers de Linux están maximizando no es económica en el sentido clásico, sino algo intangible como la satisfacción de su ego y su reputación entre otros hackers. (Uno podría hablar de su "motivación altruista", pero ignoraríamos el hecho de que el altruismo en sí mismo es una forma de satisfacción del ego para el altruista). Los grupos voluntarios que funcionan de esta manera no son escasos realmente; uno en el que he participado es el de los aficionados a la ciencia ficción, que a diferencia del mundo de los hackers, reconoce explícitamente el "egoboo" (el realce de la reputación de uno entre los demás) como la motivación básica que está detrás de la actividad de los voluntarios. 12 Otras Lecturas He citado varias partes del clásico de Frederick P. Brooks The Mythical Man-Month debido a que en muchos aspectos, todavía se tienen que mejorar sus puntos de vista. Yo recomiendo con cariño la edición del 25 aniversario de la Addison-Wesley (ISBN 0-201-83595-9), que viene junto a su artículo titulado Ninguna Bala de Plata. La nueva edición trae una invaluable retrospectiva de veinte años, en la que Brooks admite francamente ciertas críticas al texto original que no pudieron mantenerse con el tiempo. Leí por primera vez la retrospectiva después de que estaba esencialmente terminado este artículo, y ¡me sorprendí al encontrar que Brooks le atribuye a Microsoft prácticas semejantes a las del bazar! La Psicología de la Programación de Computadoras de Gerald P. Wienberg (Nueva York, Van Nostrand Reinhold, 1971) introdujo el concepto infortunadamente denotado de "programación sin ego". A pesar de que él estaba muy lejos de ser la primera persona en comprender la futilidad del "principio de orden" fue probablemente el primero en reconocer y argumentar el tema en relación con el desarrollo del software. Richard P. Gabriel, al analizar la cultura de UNIX anterior a la era de Linux, planteaba la superioridad de un primitivo modelo estilo bazar en un artículo de 1989: Lisp: Buenas Noticias, Malas Noticias y Cómo Ganar en Grande. Pese a estar atrasado en algunos aspectos, este ensayo es considerado correcto en algo por los admiradores de Lisp (entre quienes me incluyo). Uno de ellos me recordó que la sección titulada Lo Peor es Mejor predice con gran exactitud a Linux. Este artículo está disponible en la WWW en http://alpha- bits.ai.mit.edu/articles/good-news/good-news.html. El trabajo de De Marco y Lister, Peopleware: Productive Projects and Teams (Nueva York; Dorset House, 1987; ISBN 0-932633-05-6) es una joya que ha sido subestimada; fue citada, para mi fortuna, por Fred Brooks en su retrospectiva. A pesar de que poco de lo que dicen los autores es directamente aplicable a las comunidades de software libre o de Linux, su visión sobre las condiciones necesarias para un trabajo creativo es aguda y muy recomendable para quien intente llevar algunas de las virtudes del modelo bazar a un contexto más comercial. Este documento esta disponible en http://www.agorics.com/agorpapers.html