Souvenir d’eXtreme programming #14 : La responsabilité collective du code
Après un longue pause, voici le retour du feuilleton sur la mise en place de l’eXtreme programming dans une dotcom. Et pour ce grand retour, quel meilleur sujet que la responsabilité collective du code ?
Rappelons que la responsabilité collective du code consiste, dans un projet, à donner à tous les membres de l’équipe le droit de modifié la totalité du code source. C’est donc contraire au principe souvent utilisé de responsabilité individuelle du code, dans lequel chaque développeur est responsable du code qu’il a écrit et reste le seul à avoir le droit et le devoir de le modifier.
La responsabilité collective du code s’est avérée, dans le cas qui nous occupe, l’une des pratiques qui semblait la plus naturelle (à l’opposé du travail en binôme, par exemple), mais dont la mise en place c’est le plus heurté à des barrières psychologiques.
Voyons lesquelles.
Je suis le meilleur
Il y a d’abord le caid, le dieu vivant du développement. Tellement bon et conscient de son niveau qu’il ne peut pas laisser les autres toucher à son code. Ou alors il faut qu’il refasse tout derrière.
Alors même s’il souffre d’être le seul à pouvoir toucher son code, il aura du mal à le partager. De la rétention de code, en somme.
Je ne suis pas digne
De l’autre côté, il y a le programmeur humble (très rare, mais il existe). Face au caid, il est impressionné. Tellement qu’il n’ose même pas imaginer qu’il pourrait faire la même chose.
Alors l’idée qu’il puisse toucher au code de son idole le paralyse.
Et comment on fait ?
Le binômage, le binômage. Tout est là. On mélange les niveaux, la connaissance du code se partage, le niveau technique général s’améliore.
Du moins en théorie. Ce fut même globalement le cas. Mais pas sans heurt.
L’euphorie
Après la phase initiale de méfiance, la propriété collective code écrit sur le nouveau projet s’instaura sans restriction. Ce ne fut pas le cas de l’existant tout de suite. Mais comme la majorité du travail était lié au nouveau projet ce ne fut pas un problème.
En fonction des scénarios utilisateur et des tâches de développeur, chaque binôme intervenait sur toute les parties du code sans autocensure ni blocage.
Mais on vit apparaitre un nouveau comportement chez les caïds, finalement assez voisin de la rétention de code.
Le remaniement des caïds
Un binôme réalise une tâche de développement. Par la suite un binôme de caïds doit travailler sur le code, et décide de faire un remaniement. En fait remaniement, c’est presque une réécriture qui est réalisée.
Quelque soit l’humilité du binôme, voir son code complètement réécrit est une sacrée remise en cause.
Le pire, c’est même qu’après un certain temps les caïds commencent à systématiquement remanier le code des autres binôme.
Voyant cela j’étais un peu pessimiste quand à la productivité de l’équipe. En effet quel intérêt de tout refaire systématiquement, autant tout faire faire par les caïds.
Montre moi et j’apprendrais
En fait le simple fait d’avoir écrit un code et les tests associés rendait quand même le travail de remaniement plus facile pour les caïds que s’il avait du tout faire eu même. Donc la perte de productivité n’était pas si évidente.
Et le remaniement des caïds eut finalement un effet pédagogique. Le fait de voir son code réécrit par les caïds permit aux autres binômes de mieux comprendre ce qu’il fallait faire. De plus le code existant étant souvent la base des nouveaux développements, le fait de laisser les caïds faire du remaniement tend à améliorer la qualité du code.
L’esprit d’équipe
Finalement si le remaniement des caïds n’a pas eu l’effet dévastateur que l’on pouvait craindre, c’est parce qu’il existait un vrai esprit d’équipe. Mais avant la responsabilité partagée du code, l’esprit était là, mais pas la pratique. Avec la responsabilité partagé, le code est vraiment devenue une œuvre collective, et non plus une collection d’œuvres individuelles.
octobre 15th, 2005 à 13:11
Heu… bah je comprend pas bien, tu est chef de projet ou un truc comme ça ?
Sinon moi je suis un "pas digne" mais je lance mon projet open source libre sur une application php mysql
que des gens puisse modifier mon code ! j’aurais trop peur que certains esprit malveillant installe des failles et que je m’en rendent pas compte en validant leurs contributions.
Et ya un truc qui me tracasse, l’open source
Mais je doit etre parano, et puis de toute facon mon projet vaut pas une clopinette
( http://www.g-download.info )
octobre 15th, 2005 à 17:38
hey, regarde son CV ou son profil et tu le saura
Pour ce qui est de l’open source, oui, en effet, il faut surveiller le code que te donnent les autres. Pour le moment, sur XWiki ( http://www.xwiki.org )(30 commiters), on n’a pas eu de probème.
octobre 21st, 2005 à 4:40
… Moi honnêtement je me trouve plutôt bon mais franchement, prendre par défaut le boulot de ses collègues pour de la merde, c’est à la base une mauvaise approche… J’en ai vu quelques uns qui avaient pris ce genre de sales habitudes… Trop souvent des gens avec beaucoup d’expérience, beaucoup de mauvaises habitudes, une très grande connaissance des outils maison, et une trop fréquente habitude de dérouler du code de merde en justifiant son illisibilité par l’optimisation ou, plus rarement, sa lenteur par sa nécessaire lisibilité. Typiquement, les premiers sont des codeurs accros aux macros, qui ont peut-être fait un peu d’embarqué, et les seconds des gens qui bossaient sur des grosses stations ou des serveurs UNIX/RISC au début des années 90, typiquement HP-PA RISC/HP-UX, Sun SPARC/Solaris ou SGI MIPS/Irix (les pires !)… En fait l’XP, moi, plus j’en lis dessus, plus je me dis que c’est comme l’anarchie (d’ailleurs en y réfléchissant bien c’en est une forme) : possible dans un monde idéal, sans cons. Des très petites structures, peut-être…? On essaye l’XP sur une équipe de 50, 100 gars, ou plus, pour un projet genre Oracle ou OpenOffice, pour rire ? (c’est un questionnement, certes un peu ironique, pas un dénigrement)
octobre 21st, 2005 à 7:20
XP n’est clairement pas adapté à des grosse équipes. Du moins il n’y a pas d’expèrience de son utilisation avec plus d’une vingtaine de personnes. La vrai question est combien de projet informatique ont vraiment besoin d’une grosse équipe ?
Concernant les projets open source, il est difficile de remplir certaines pratiques de XP : client sur site, équipe proche physiquement pour le pair programming (même si on peut utiliser Skype et VNC).