Made with Tripod.com

Adaptación del modelo de desarrollo "Bazar" para sistemas "in-house" en empresas particulares

Darío Vasconcelos Jiménez

dario@technologist.com


Propósito

Este trabajo intenta adaptar el modelo Bazar a desarrollos que no necesariamente cumplen con las características del código abierto, internándose en las razones mismas de la motivación de los programadores (y los beta-testers, que tienen igual o más importancia) y replicándolas, con ligeras adaptaciones, para su aplicación en sistemas desarrollados dentro y para la empresa.

Alcance

Descripción general

El modelo "Bazar"

Descripción

Ideas principales

Motivos de su éxito

Ventajas y desventajas

El modelo tradicional de desarrollo en empresas particulares ("Catedral")

Descripción

Ideas principales

Ventajas y desventajas

Adaptación del modelo Bazar a empresas particulares

Limitaciones para la adaptación

Escenarios ideales

Adaptación

Conclusiones

Descripción general

El desarrollo de sistemas en empresas particulares, en las que los desarrolladores son empleados de la empresa o trabajan como man-power, ha sufrido una evolución a partir de los primeros años del desarrollo en mainframe hasta la actualidad, para sistemas cliente-servidor, distribuidos y/o para Inter-Intranet. Sin embargo, los rubros que han recibido la mayor parte de la evolución han sido la organización y planeación del proyecto, en forma de metodologías que facilitan la administración del mismo. Sin embargo, hasta ahora las motivaciones de los desarrolladores no han cambiado mucho: se suele trabajar simplemente por terminar un producto, y a menos que el desarrollador en turno tenga acceso a diseñar y crear las partes críticas del sistema, es raro que el esfuerzo sea utilizado eficientemente.

Cuando se desarrolla un sistema "in-house", es decir, dentro y para la empresa, no existe la motivación de grupos de desarrollo en los que el producto final será vendido y por lo tanto tendrá competencia; en estos casos la motivación para imaginar y llevar a cabo nuevas características es suficiente para mantener al desarrollador altamente enfocado en el objetivo final. Tampoco existe en los sistemas in-house la motivación de recibir bonos especiales debido a volumen de ventas o aceptación del producto. De hecho, la motivación debe encontrarla el desarrollador dentro de sí mismo y suele depender del grado de complejidad del problema, la inclinación técnica y los gustos personales.

Sin embargo, el reciente auge del software de código abierto ha mostrado avances en proyectos de gran envergadura, desarrollados en sus tiempos libres de forma gratuita por gente que probablemente también desarrolla sistemas in-house y sin embargo a sus participaciones de código abierto le invierten mucho más tiempo y calidad de programación y/o diseño. La filosofía de desarrollo de código abierto en un principio floreció, podríamos decir, de forma silvestre, y ha sido más y más analizada a raíz del éxito de proyectos tan complejos como Linux, gcc y Apache.

En principio, la traducción directa del modelo de desarrollo de código abierto (llamado "Bazar" por Eric S. Raymond en su conocido escrito "The Cathedral and the Bazaar", www.tuxedo.org/~esr/cathedral-bazaar/index.html) al de sistemas in-house para empresas particulares ("Catedral") es imposible, puesto que algunos de los fundamentos de ambos modelos son diferentes desde su misma concepción; el objetivo final, aunque en ambos casos es la generación de una solución de cómputo, no es originado por las mismas razones: en un caso, es una necesidad real, una concertación (discusión, presupuesto, etc.) y una consigna, la cual debe cumplirse de forma obligatoria. En el otro caso (el del software de código abierto) cada desarrollador elige libremente su participación en el proyecto y su grado de compromiso con él; su motivación es puramente la satisfacción de desarrollar y utilizar él mismo su producto final. No es, por consiguiente, fácil adaptar este modelo de desarrollo a los sistemas in-house sin perder gran parte de sus mismos fundamentos para la motivación del programador.

 

El modelo "Bazar"

Descripción

A pesar de que Eric Raymond, en su ya mencionado ensayo "La catedral y el bazar", nunca define explícitamente los términos que él acuñó, es posible dar la siguiente definición de modelo "Bazar":

Ideas principales

Los cimientos de los proyectos de software de código abierto son:

  1. El proyecto no puede nacer como Bazar; debe ser integrado a esta metodología cuando ya lleve un avance tal que haga usable la aplicación.
  2. Aunque el desarrollo no sea una catedral, es útil que exista un "arzobispo".
  3. Tener usuarios es decisivo para elegir el método Bazar: "dados suficientes ojos, todos los errores son evidentes".
  4. Se deben publicar versiones beta tan rápido y a menudo como sea posible.
  5. Siempre es mejor ser robusto y simple que genial y elegante.
  6. Se debe, sobre todo, reconocer las buenas ideas de diseño provenientes de otros.
  7. Por último, y no tan aparente, es necesario que el líder del bazar tenga ciertas facilidades para la comunicación y las relaciones humanas.

No cualquier proyecto de software puede ser adaptado para el método del Bazar; de hecho, una condición necesaria es que el proyecto por sí mismo atraiga la atención de los programadores; es, por lo tanto, necesario, que los usuarios crean firmemente en el proyecto. "Todo gran proyecto empieza siendo interesante".

Motivos de su éxito

Este es quizás el punto más controversial: algunos opinan que sentirse parte de un auténtico grupo creativo es suficiente para provocar que los usuarios empleen gran parte de su tiempo en desarrollar y regalar su código; otra explicación es el ego el que juega el rol principal, al basarse en el hecho de que los desarrolladores siempre intentan desarrollar la mayor cantidad posible de código para recibir el mayor reconocimiento posible. Incluso, se ha llegado a afirmar que es parte de la naturaleza humana el regalar sus creaciones y sentirse satisfecho. Todos estos argumentos tienen sus raíces en la psicología del ser humano, y sin embargo no es necesario conocer a Freud para darse cuenta de que el método ha tenido éxito.

Linux es probablemente el ejemplo más patente de que el método sí surte efecto: el tiempo en que fue desarrollado un sistema operativo completo, con tal cantidad de aplicaciones utilitarias y características (SMP, RAID, SCSI, todo tipo de filesystems, X Windows) no tiene precedente en la historia del software. Tampoco lo tiene el hecho de que varios gigantes del desarrollo, como Netscape y Apple, han decidido abrazar el método para algunos de sus proyectos, encontrando resultados de exitosos a moderados. Incluso Microsoft ha hablado de utilizar la filosofía de código abierto para algunos de sus productos. Es claro, pues, que esta nueva metodología de desarrollo ha encontrado terreno donde plantarse firmemente.

Ventajas y desventajas

Es bien sabido que este modelo de desarrollo ofrece un número de ventajas. Algunas son:

Sin embargo, hay también desventajas. Las más importantes son las siguientes:

 

El modelo tradicional de desarrollo en empresas particulares ("Catedral")

Descripción

No es necesario hacer una apología del modelo tradicional de desarrollo, dada su extensión en todo tipo de empresas. Baste decir que el desarrollo se basa en una serie de pasos bien delimitados, y que las tareas y sus duraciones son definidas por un jefe, que también determina quién y cuándo deberá realizarlas.

Ideas principales

Los cimientos de esta metodología son:

  1. Es necesario seguir una serie de pasos definidos y ordenados para llevar el proyecto a su terminación.
  2. Estos pasos dependen del tipo de proyecto (cliente-servidor, e-commerce, tres capas) y de la plataforma.
  3. Existen varias corrientes dentro de este modelo de desarrollo; sin embargo, todas coinciden en el ejercicio de la "tiranía benevolente".
  4. Se deben respetar en todo momento los lineamientos de diseño si se desea cumplir con los tiempos fijados.
  5. Sólo se deben publicar versiones cuando el sistema esté terminado al menos en un 90%.

Ventajas y desventajas

Las principales ventajas del modelo Catedral son:

Adaptación del modelo Bazar a empresas particulares

Limitaciones para la adaptación

Es evidente que no es posible simular todas las condiciones que permiten el desarrollo de software abierto dentro de una empresa; principalmente, existen compromisos que coartan el espíritu libre que reina dentro de proyectos "open-source". Algunas otras diferencias son:

Sin embargo, algunas de las condiciones que se dan en proyectos de software abierto pueden ser simuladas para generar un grado similar de motivación.

Escenarios ideales

Es deseable que el proyecto sea un desarrollo completamente nuevo. Esto, porque cuando se modifican sistemas existentes y/o se les da mantenimiento, no es sencillo cambiarles la dinámica. En estos casos, debe utilizarse el modelo Catedral.

Otras características deseables para esta adaptación son: baja presión en las fechas de entrega, comprensión total de los alcances por parte de los desarrolladores, transparencia con respecto a la aplicación de controles internos de la empresa, etc.

Todas estas características ayudan grandemente a facilitarle el trabajo al líder u organizador del proyecto. Existen, sin embargo, tres factores motivacionales que deben existir:

El proyecto debe ser interesante y retador desde el primer vistazo; los sistemas de mantenimiento de tablas en bases de datos normalmente no cumplen esta condición. Por otro lado, normalmente es imposible que el producto sea útil para el desarrollador, dado que el sistema se desarrolla por lo general para alguien más (el negocio). Sin embargo, el programador debe poder ponerse en los zapatos del usuario final para encontrar por sí mismo el camino más fácil para conseguir los objetivos.

La analogía clara es permitir que el desarrollador elija el módulo a desarrollar e incluso decidir si quiere integrarse al proyecto. Poco realista, pero es aquí donde entra en juego el "chamán" del proyecto, convenciendo a todos de la valía de su participación.

Esto es un ideal de todo proyecto (no sólo de desarrollo) y uno de los primeros consejos en los cursos de motivación al personal. Simplemente, es un objetivo "mágico" para el que no existen reglas de aplicación. Eric Raymond menciona que el líder debe tener el don de caer bien, para dar el reconocimiento necesario y generar compañerismo.

Los factores motivacionales son clave para los proyectos de código abierto, y por consiguiente de Bazar. Son, entonces, la base para la adaptación de tal método a las aplicaciones in-house.

Adaptación

A raíz de esta primer aproximación a la psicología del desarrollador Bazar, parece difícil adaptarlo al desarrollo tradicional. Sin embargo, una reorganización de las tareas diarias y varios cambios en el sistema de desarrollo pueden ser la solución:

El orden de elección puede ser aleatorio, o basado en algún criterio que tenga que ver con la experiencia o el perfil.

Con esto, se consigue no empezar desde cero con la metodología Bazar. Esta etapa finalizará en cuanto exista una primer versión utilizable del sistema. Sin lujos ni detalles. Sólo que funcione lo realmente básico.

Esto consigue hacer más interesante el proyecto y poder visualizar fácilmente metas intermedias.

Consigna número uno: publicar rápido y a menudo.

Esto logra dos cosas: multiplicar el número de ojos puestos sobre cada módulo, e integrar a cada miembro del equipo con todas las otras funciones del sistema

Esto es quizás el punto más importante de la propuesta: todo desarrollador debe ser capaz de integrarse a cualquier parte del sistema, en la medida de lo posible. Esto tiene que hacer más interesante al proyecto. También resuelve un viejo problema de los sistemas desarrollados in-house: a menudo, cuando falla un módulo del sistema, sólo una persona en todo el equipo sabe de qué están hablando.

 

Recomiendo el uso de herramientas de discusión para grupos, para instrumentar un medio de comunicación rápido y oficial; un pequeño servidor de NNTP (al estilo Usenet) debería ser suficiente. Existen, por supuesto, herramientas sofisticadas para esto; en mi opinión, el ejemplo más avanzado e impresionante puede encontrarse en el site de Mozilla (http://www.mozilla.org ) , el proyecto de código abierto para desarrollo de un navegador de internet más grande que hay en la actualidad.

Conclusiones

El desarrollo in-house puede llegar a ser terriblemente ingrato; la paga es la misma si se generan soluciones geniales o no; la presión es la misma sin depender del grado de complejidad del problema; el único reconocimiento que se otorga es un cambio de proyecto. Estas características generalmente provocan falta de motivación en el desarrollador, generando oficinas que parecen clonadas de la de Dilbert. Es por esto que hay que buscar nuevos esquemas de desarrollo, que busquen explotar la razón primaria por la que los programadores se dedican a eso: por amor a las computadoras, por el gusto de crear.

Cada proyecto, por supuesto, tiene sus particularidades que lo hacen único; sin embargo, es posible que a través del uso de este método de organización del trabajo se logren mejores tiempos de desarrollo y mayor motivación en el equipo. O probablemente signifique un cambio en la rutina de desarrollo, lo que consituiría ya un cambio positivo. Lo que en realidad importa es que el proyecto parezca cobrar vida propia, como aquéllos desarrollados en Internet por cientos de programadores trabajando ordenadamente y en forma cooperativa. Y de noche.