Le développement bazar

Le texte ci-dessous n’est pas encore finalisé. Il rassemble les idées essentielles glanées au fil de mes lectures autour du thème du développement coopératif et principalement du texte très intéressant et devenu une référence « La Cathédrale et le Bazar » de Eric S. Raymond.

Développement cathédrale et développement bazar

Dans son article la cathédrale et le bazar, Eric Raymond relate comment il a appliqué les principes du développement bazar qu’a utilisé Linus Torvald pour faire de Linux un système opératoire de classe internationale qui concurrence directement le système opératoire Windows de Microsoft.

Le développement bazar

Imaginez un problème que vous rencontrez régulièrement. Vous cherchez une solution et chaque fois que le problème se représente vous améliorer la solution. il se peut que ce problème ne vous soit pas propre. De nombreuses personnes doivent dans leur coin chercher une solution pour résoudre un problème similaire.
Imaginez qu’au lieu de développer seul cette solution vous cherchiez si « dans le monde », il n’existe pas une solution acceptable permettant de résoudre un problème sensiblement équivalent. Vous vous saisissez de cette solution et vous l’améliorez. Voilà déjà du temps de gagné.
Imaginons maintenant qu’au lieu de l’adapter seul votre type de problème vous annonciez « au monde » votre intention de développer un modèle, une technique permettant de solutionner des problèmes du type de celui que vous rencontrez. Et de proposer d’entrée de jeu le modèle que vous avez repris et amélioré.
Grâce notamment l’internet, votre modèle pourra être expérimenté par de nombreux praticiens- développeurs comme vous. Plus ils seront nombreux plus le modèle évoluera et s’affinera. Chaque participant ce processus fera des propositions, communiquera les problèmes rencontrés en appliquant le modèle. Vous, de votre côté, veillerez garder active cette communauté vous saurez encourager, remercier chaque participant et vous intègrerez dans le modèle les propositions les plus pertinentes.
Votre modèle évoluera donc. Vous n’hésiterez pas mettre en ligne souvent la dernière version. Cela participe la dynamique du processus.
Le modèle qui sera produit sera le fruit de votre initiative, de votre coordination, de votre habileté dynamiser cette communauté de co-développeurs et de votre compétence reconnaître les bonnes idées qui vous sont proposées.
Dans le monde informatique cette stratégie a fait ses preuves. Les logiciels développés de cette manière réussissent car ils disposent d’une capacité de mobilisation de talent qu’aucun logiciel fermé ne peut espérer atteindre. Le temps cumulé de chacun, l’intelligence collective émergente dépasse largement le développement individuel solitaire

Les principes

  • Un problème qui vous démange
  • Reprendre ce qui existe déjà
  • Produire une première version et annoncer l’objectif
  • Publier toutes les informations

Si l’on veut permettre aux co-développeurs d’apporter une contribution significative il est important de mettre leur disposition toutes les informations nécessaires. Citons de manières non exhaustive: l’historique du projet, les raisons qui vous amené vouloir développer le modèle, les bases théoriques ou les expériences pratiques qui sous-tendent votre initiative, le contexte social, culturel, professionnel, les modèles existants déj examinés,…

Une promesse plausible dans un avenir pas trop éloigné

Pour intéresser une vaste communauté de co-développeurs, il est nécessaire de leur proposer une projet en explicitant clairement l’utilité du modèle final. L’énoncer en terme de promesse donne en plus une idée de votre engagement faire aboutir le projet.
Ce projet doit rester réaliste. Les utopies n’intéresseront que quelques enthousiastes idéalistes. Par contre l’idée de participer au développement d’un modèle concret bien délimité qui trouvera application dans la pratique, voil qui mobilisera une grand nombre de praticiens-développeurs

Première version peut être incomplète

Il est préférable de publier rapidement une première version même grossière et encore mal documentée plutôt que d’essayer de peaufiner pendant des mois, seul, un modèle qui sera proposé la communauté de co-développeurs. S’il est important de venir sur la place publique avec un projet concret il est également indispensable de proposer d’entrée de jeu une structure de départ sinon. Lancer une idée sans rien amener puis attendre que les autres fassent le travail pour vous ne cadre pas du tout avec l’idée de développement collectif que nous proposons.
A l’inverse, proposer un modèle abouti et finalisé n’offre que peu d’intérêt. L’objectif est ici de générer un processus de développement et d’amélioration d’un modèle sur base de votre initiative et en dynamisant le talent de chacun.
Il vous faudra donc amener une base de départ concrète que vous soumettrez le plus tôt possible au collectif de co-développeurs avec l’idée de le faire évoluer.

Publier vite et souvent

La mise au point de logiciels est particulièrement sensible et une des clés du succès du développement du logiciel est la stimulation permanente de la communauté de développeurs.
Les difficultés rencontrées sont rapidement énoncées et il se trouve toujours quelque développeur pour qui le problème est aisé résoudre. Cette dynamique amène de fréquentes mises jour du produit avec le risque de générer dans les phases les plus critiques un sentiment d’instabilité. Faire appel une communauté de développeurs nécessite un partage et un échange d’informations intense rendu possible par l’Internet et permet de traiter la complexité par une somme d’actions simples.
Concrètement plus un projet dispose d’une base de développeurs-testeurs larges plus le modèle a de chances de se développer. « Une personne met à jour un problème, une autre propose une solution » . Par le fait de publier rapidement on évite le travail en parallèle sur une même question et on favorise les synergies.

  • Risque d’instabilité
  • Développer une communauté de co-développeurs
  • Stimuler, encourager le réseau de co-développeurs

Coordinateur de projet

Le rôle du coordinateur de projet est essentiel dans le processus de développement que nous avançons. Le coordinateur ou développeur du projet est le gardien des clés du projet. Il est celui qui donnera l’impulsion de départ et insufflera l’énergie dans la communauté de co-développeurs. De ses qualités dépendra la réussite du projet
Le coordinateur est un exalteur de talent: détecter, reconnaître , encourager, remercier, autant d’action qui font appel toutes les compétences de communicateur des PNListes

Intéresser, encourager

Intéresser les co-développeurs ce que vous faites. Faire connaître votre initiatives, partager les étapes. Encourager les bouts de travail réalisés par les co-développeurs.

Séduire

La personnalité du co-développeur joue également un rôle non négligeable dans le dynamisme du groupe.

Génial concepteur ou non ?

S’il faut un minimum d’habileté dans la conception d’un pattern, l’expérience montre qu’il est préférable de privilégier la robustesse, la clarté de conception.
La recherche du génial, de l’intelligent, de l’original peut mener la complication et rebuter les co- développeurs. Le processus de développement doit éviter le piège de la subtilité tout crin.
Il est probable qu’en cours de route des solutions nouvelles originales esthétiques, innovantes se présenteront au coordinateur de projet. Il lui revient alors d’évaluer si le fait de les incorporer ne va pas bouleverser le pattern, le rendre instable ou faire fuir les co-développeurs testeurs ou si cela va permettre de réaliser un saut quantique dans l’avancement du projet. Dans certains cas il peut être préférable d’assoir le pattern en gardant un noyau de stabilité. Dans d’autres une nouvelle idée pourra mener une réorientation en profondeur du projet.

Reconnaître les bonnes idées de conception des autres

C’est l une qualité critique du dévelopeur. étre l’écoute, savoir reconnaître une idée géniale et l’intégrer au projet. Voilà sans doute la clé de la réussite du projet.

  • Motivation des co-développeurs
  • Participer une expérience collective enthousiasmante
  • Maximisation de l’utilité individuelle

Nous sommes ici dans une situation comparable celle des marchés économiques libres. Dans ce type de situation chaque acteur agit de sa propre initiative pour maximiser son utilité personnelle. Aucune injonction, pression, règle n’est imposée par une autorité supérieure de manière dirigiste. Chacun vise augmenter sa satisfaction personnelle

Egoboo

Ce principe est un moteur qui propulse les acteurs dans l’activité afin d’acquérir une réputation, « de se faire un nom ».
Cette motivation agir est individuelle, orientée sur soi et donc assez égoïste. La dynamique du groupe tend alors relier les égoïsmes pour générer une synergie.
On est donc loin des projets utopistes appelant chacun agir pour l’autre et pourtant c’est l’effet obtenu globalement. L’égoïsme génère ainsi le même effet que l’altruisme.