Bouchons, builds et blocages

Voilà déjà dix minutes que Gus est coincé dans cet embouteillage… Il s’exaspère; il est en retard. Ca y est, problème identifié : une bête boite blanche qui trône au milieu de la file de droite. Ah non, ce n’est pas une boite, c’est un vieux micro-ondes ! Un coup de volant à gauche, et Gus est reparti. En route!

Bien sûr, Gus pourrait s’arrêter et descendre de voiture pour dégager ce débris sur le bas côté. Tout le monde en profiterait. Mais Gus est déjà très en retard. Après-tout, le problème est derrière lui maintenant. La voie est libre, il en profite.

C’est situation représente un anti-pattern caractérisque, appelé tragédie des biens communs, et qui s’énonce ainsi :

L’accès libre à une ressource limitée pour laquelle la demande est forte conduit à une surexploitation de cette ressource et à sa détériotation.

L’intégration continue, ce bien commun

En s’installant à son poste de travail, Gus examine le statut du projet sur lequel il travaille et remarque:
« Tiens ? Le build est cassé ? » Ce à quoi un de ses coéquipiers répond: « Ouais… » sans décoller de son écran.

Build cassé signifie que les programmes sources distincts sur lesquels l’équipe intervient simultanément ne peuvent plus être assemblés, testés unitairement, recopiés et référencés dans l’entrepôt commun qui sert pour la version en cours de développement.

C’est assez grave. Plus personne ne peut synchroniser son travail. Quelques heures passées dans cette ornière, et réconcilier les sources va devenir une vraie « galère ».

Gus comprend cette situation, mais juge qu’en ce qui le concerne, la réparation peut attendre. Il a une classe à mettre au point, et il est déjà sacrément en retard. Il règne dans la pièce une atmosphère dense et morne, agaçante, un peu comme lorsque mille voitures sont ralenties par un micro-onde au milieu de la file de droite…

Le build qui reste cassé est également une « tragédie des bien communs ». Une plateforme d’intégration continue apporte cohérence, réactivité et performance au projet. Son coût d’exploitation vient de ce qu’il faut la maintenir. En s’abstenant de réparer le build, chacun privilégie pour un temps des tâches isolées, au détriment de celles de tous les autres. C’est comme si chacun disait: « nous sommes tous ralentis, notre performance en prend un coup mais pour moi ça peut aller, pour le moment je vais m’occupper de ma propre performance ».

Le build cassé des relations

Au bout d’une heure, Gus réalise qu’il a maintenant crucialement besoin que le build fonctionne à nouveau. Il tente une demande d’aide:
– Alex, c’est toi qui a cassé le build on dirait ?
– Ouais. J’ai eu un souci avec une dépendance cyclique.
– Tu peux me dire quand tu penses l’avoir réparé, stp ?
– Désolé, pas avant midi, là je pars en réunion.
– OK.

Nouvelle tragédie des biens communs : ce n’est certainement pas « OK » de laisser le build en cet état jusqu’à midi, mais Gus n’insiste pas. Alex a des années d’expérience, il sait ce qu’il fait et il est assez occuppé. Gus est relativement jeune, et nouveau dans ce projet. Et le silence de ses coéquipiers ne l’encourage pas à entamer une conversation qui pourrait devenir inconfortable.

Ici, les relations interpersonnelles de l’équipe constituent le bien commun. Leur valeur tient en ce qu’elles servent de base de départ pour inventer, décider et communiquer le plus efficacement et le plus rapidement possible. Cette qualité des relations doit bien sûr être « entretenue ». En évitant la confrontation à propos d’une situation conflictuelle donnée, chacun préserve son confort immédiat et maximise son effort indidividuel, au détriment de la cohésion de l’équipe (en se disant, peut être, que le problème disparaîtra avec le temps).

Que faire ? D’abord, observer.

Toute tragédie comporte une fatalité. Ici ce sont les boucles de renforcement positif qui sont fatales : à mesure que la ressource se détériore, ses usagers en font une exploitation renforcée, ce qui la détériore encore plus. Ces « optimisations locales » finissent par détruire ou stopper complètement le système global:

  • un bouchon de cinq kilomètres
  • quatre heures passées à fusionner des sources
  • une relation de travail qui prend fin, après des semaines à « jouer perso ».

Bien qu’il n’existe pas de solution miracle pour éviter ces anti-patterns, il est très utile d’apprendre à les reconnaître, en interprétant les situations observées ou vécues à travers un calque « systémique ». On peut alors les détecter suffisamment tôt pour les rendre manifestes, et les désamorcer.

Quels tragédie des biens communs avez-vous détecté dans votre travail dernièrement ?