<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>pair et mob programming - Tag - Jordan Chapuy - Blog d'un développeur passionné ❤️</title><link>https://jordanchapuy.com/tags/pair-et-mob-programming/</link><description>pair et mob programming - Tag - Jordan Chapuy - Blog d'un développeur passionné ❤️</description><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>Thu, 06 Jan 2022 15:30:00 +0100</lastBuildDate><atom:link href="https://jordanchapuy.com/tags/pair-et-mob-programming/" rel="self" type="application/rss+xml"/><item><title>Permis de développer</title><link>https://jordanchapuy.com/posts/2022/01/permis-de-developper/</link><pubDate>Thu, 06 Jan 2022 15:30:00 +0100</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2022/01/permis-de-developper/</guid><description><![CDATA[<p>Un développeur a-t-il besoin d&rsquo;une permission pour écrire des tests ? Pratiquer le Test-Driven Development ? Faire du <a href="https://jordanchapuy.com/posts/2021/06/le-refactoring/" rel="">refactoring</a> ? Travailler en Pair Programming ? Faut-il un permis à l&rsquo;image de la légendaire <em>licence to kill</em> de James Bond ?</p>
<p>Ma réponse est <strong>NON</strong> (sans surprise, comme la plupart des articles qui commencent avec une grande question fermée). Un développeur doit être autonome et décider de lui-même pour ce genre de pratiques. Il n&rsquo;a pas à demander l&rsquo;autorisation à un manager, ni un chef, ni un PO, ni un SM, ni même à un tech lead ou un autre développeur.</p>
<p>Encore moins se voir interdire (anecdote récente lors d&rsquo;un entretien technique, un développeur m&rsquo;a indiqué que son client lui interdisait d&rsquo;écrire des tests parce que ça prenait du temps). Au contraire, il faut promouvoir et pousser ces pratiques aux développeurs et aux équipes.</p>
<h1 id="ça-fait-partie-du-job">Ça fait partie du job</h1>
<p>L&rsquo;écriture de tests, le TDD, le Refactoring, le Pair Programming, et j&rsquo;en passe, ce sont des pratiques répandues dans l&rsquo;industrie. Elles sont reconnues et proviennent de mouvements comme le Software Craftsmanship, l&rsquo;eXtreme programming, ou le Domain Driven Design. Ce n&rsquo;est pas le n-ième <em>nouveau super framework</em> à la mode.</p>
<p>On parle ici de pratiques qui améliorent la qualité du code et du produit, qui facilite le changement, qui permettent de mieux collaborer, de mieux retranscrire le métier. Elles font partie intégrante du métier de développeur.</p>
<p>Un développeur n&rsquo;est pas un exécutant. Il n&rsquo;est pas là juste pour pisser du code. Il a un (grand) rôle à jouer pour concevoir un produit de qualité. Il existe de nombreux ouvrages sur ces pratiques et également sur la posture de développeur. Pour en citer un, <em>Sandro Mancuso</em> en parle très bien dans son livre <em>The Software Craftsman</em>.</p>
<h1 id="just-do-it">Just do it</h1>
<p>Je donnerais comme conseil aux développeurs de faire, de passer à l&rsquo;action, d&rsquo;utiliser ces pratiques. Sans attendre une permission officielle, sans aller chercher une approbation quelconque. Faites-le, tout simplement.</p>
<p>Il y a un proverbe qui dit <code>Il vaut mieux demander pardon que demander la permission</code>. Je l&rsquo;aime bien, et je trouve qu&rsquo;il a du sens dans cette situation. Vous êtes développeur et vous hésitez ? Lancez-vous, essayez, montrez par l&rsquo;exemple. Probablement, quelque chose de bon en sortira et on ne viendra pas vous taper sur les doigts. Ce n&rsquo;est pas parfait ? Vous deviendrez meilleur en continuant d&rsquo;essayer et de vous améliorer.</p>
<p>Rappelons que le développeur a l&rsquo;expertise. Il sait comment travailler, il connaît sa boîte à outils. Mon propos n&rsquo;est pas d&rsquo;enfermer le développeur dans sa vision - il doit rester ouvert, comme tout le monde - mais de lui faire confiance et de lui donner de l&rsquo;autonomie.</p>
<p>Ce qui n&rsquo;empêche pas de le challenger. Et quand on touche à ses limites, à sa zone où il ne maîtrise pas, on se penchera plutôt sur comment former, comment apprendre, comment expérimenter, plutôt que d&rsquo;empêcher.</p>
<h1 id="former-les-équipes">Former les équipes</h1>
<p>Ça fait partie du job, d&rsquo;utiliser ces pratiques, ça fait également partie du job de se former. Elles ne tomberont pas soudainement du ciel. Avis aux développeurs qui doivent faire l&rsquo;effort autant qu&rsquo;aux managers qui doivent investir ;)</p>
<p>On se forme, on forme les équipes, on expérimente, on s&rsquo;améliore en continue. Le retour sur l&rsquo;investissement est positif, on ira plus vite, on délivrera mieux. On veut démarrer un cercle vertueux (on apprend, on améliore le code, on change plus facilement, on livre plus vite, on satisfait davantage l&rsquo;utilisateur) plutôt que vicieux (on empêche, on n&rsquo;apprend pas, le code se détériore, les évolutions deviennent difficiles, on cumule des problèmes, on met du temps à livrer à l&rsquo;utilisateur).</p>
<p>Il y a un tas de moyens pour apprendre. Quelques idées : inviter des personnes à faire un BBL, l&rsquo;intervention de coachs, faire des katas seul ou en groupe, du mob-programming sur le projet, assister à des conférences, lire des livres, etc.</p>
<h1 id="casser-les-idées-reçues">Casser les idées reçues</h1>
<p>Et s&rsquo;il y a du blocage, des interdictions, des permissions à demander pour utiliser ces pratiques ? J&rsquo;essaierais de comprendre pourquoi, de challenger, de rappeler que ça fait partie du job, et de casser certaines idées reçues.</p>
<p>En rappelant la vision, la philosophie de certaines pratiques. Le <a href="https://jordanchapuy.com/posts/2021/06/le-refactoring/" rel="">refactoring</a>, ce n&rsquo;est pas un chantier de 3 mois en tunnel. Ce sont des petites étapes, ce sont des améliorations que l&rsquo;on fait au quotidien, qui facilitent le changement, qui améliorent la qualité.</p>
<p><a href="https://jordanchapuy.com/posts/2021/12/ce-nest-pas-plus-long-de-pratiquer-le-tdd/" rel="">L&rsquo;écriture de tests et le TDD, ce n&rsquo;est pas plus long</a>. C&rsquo;est une aide pour le développeur, un guide pour bien retranscrire le métier, le comportement. On obtient en plus de la sérénité quand il faut effectuer des changements. On entre dans des situations où l&rsquo;on ira plus vite.</p>
<p>Le Pair-Programming, ce n&rsquo;est pas juste deux ressources humaines qui se mettent sur un poste pour travailler sur un seul problème à la fois. C&rsquo;est une collaboration poussée, c&rsquo;est un feedback rapide, c&rsquo;est une transmission de connaissances, d&rsquo;informations, c&rsquo;est de l&rsquo;amélioration en continue. Là aussi on entre dans des situations où l&rsquo;on ira plus vite.</p>
<p>On améliore la qualité, on gagne du temps, on gagne de l&rsquo;argent. Trois arguments que l&rsquo;on peut aligner en fonction de l&rsquo;interlocuteur. On pourrait citer en touche finale  <em>Accelerate</em>, un livre qui montre, via une étude sur plusieurs années incluant de très nombreuses entreprises, qu&rsquo;il y a une corrélation entre la performance technique et la performance business.</p>
]]></description></item><item><title>Et si on arrêtait les revues de code ?</title><link>https://jordanchapuy.com/posts/2021/02/et-si-on-arretait-les-revues-de-code/</link><pubDate>Mon, 22 Feb 2021 09:05:00 +0100</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2021/02/et-si-on-arretait-les-revues-de-code/</guid><description><![CDATA[<p>Qu-Quoi ?! On arrêterait de contrôler la qualité ? « Hérétique, au bûcher ! » s’exclameraient certains paladins de la relecture de code. Et si, au lieu de contrôler la qualité en fin de chaîne, on co-créait cette qualité tout au long de la conception ?</p>
<p>Oui, je fais allusion au pair programming. Mais avant d’en parler, plongeons-nous dans une histoire. Une histoire que j’ai déjà vécu et que vous avez probablement aussi vécu. Je dirais même que beaucoup ont vécu, d’un côté de la revue ou de l’autre.</p>
<div class="details admonition quote open">
        <div class="details-summary admonition-title">
            <i class="icon fas fa-quote-right fa-fw"></i>Une revue de code<i class="details-icon fas fa-angle-right fa-fw"></i>
        </div>
        <div class="details-content">
            <div class="admonition-content"><p>Perceval est un des développeurs de l’équipe. Aujourd’hui, il commence une nouvelle tâche. Perceval veut bien faire. Il prend le temps de concevoir cette nouvelle fonctionnalité et de penser son code. Après 4-5 jours, il termine et ouvre une Merge Request. Il passe ensuite à autre chose, une correction de bug.</p>
<p>Le lendemain, Arthur commence la revue de code sur GitLab. Aïe. Ce n’est pas du tout ce à quoi il pensait. Il avait une tout autre vision du design de code. Et il le fait savoir à travers de multiples commentaires écrits. Refaire ci, refaire ça, structurer de cette manière-là, utiliser ces composants, mettre ça ici, etc. Tout un chantier.</p>
<p>Deux heures après, Perceval lit les commentaires. Il met en pause sa recherche d’un correctif et retourne sur la branche de sa première tâche. Il retravaille ses modifications afin de prendre en compte les retours d’Arthur. Ce travail occupera une grande partie de l’après-midi de Perceval. Commit, push, merge request assignée à Arthur. Retour sur le correctif.</p>
<p>En fin de journée, Arthur prend le temps de regarder les changements effectués. Il repense à ce qu’il avait dit à Perceval, et globalement, ce qu’il voit lui plaît bien. Juste quelques petits retours sur des nommages à améliorer et une fonction qui pourrait être créée afin d’éviter la duplication.</p>
<p>Des changements rapides, que Perceval effectuera le lendemain matin. Il y a cependant quelques conflits à résoudre, la branche a pris du retard. S’en suivra une validation de la part d’Arthur une heure après. Tout est validé, la story est terminée et le déjeuner mérité.</p>
</div>
        </div>
    </div>
<p>Cette histoire vous est-elle familière ? À quel point la vivez-vous ? Vous en êtes-vous déjà rendu compte ? La review est-elle douloureuse pour vous ou votre équipe ? Prenez le temps de vous poser des questions.</p>
<h2 id="ce-que-lon-peut-observer">Ce que l&rsquo;on peut observer</h2>
<p>Une grande partie du travail est refait. Perceval ayant créé quelque chose qui ne convient pas, du code est jeté. C’est du temps en partie perdu. De plus, la durée de la tâche s’allonge : qui dit suppression dit ré-écriture. Perceval a dû reprendre son travail avec une autre manière de faire. Les chances d&rsquo;avoir des conflits à résoudre pour merge augmentent, leurs complexités aussi.</p>
<p>Perceval a passé beaucoup de temps tout seul et n’a eu <strong>le premier feedback que très tardivement</strong> - une fois qu’il pensait avoir terminé, ce qui augmente le coût de re-travail. Arthur a également mis du temps à faire la revue car il y avait beaucoup de code à lire.</p>
<p>Les discussions sont à l’écrit, et en décalées. La revue est ouverte, plus tard des commentaires sont ajoutés, plus tard des retours sont effectués, et ainsi de suite. Le temps d’attente peut être long. La tâche met plus de temps à être terminée.</p>
<p>À chaque aller-retour, il y a un <strong>changement de contexte</strong>. La personne (auteur ou lecteur) doit arrêter ce qu’elle était en train de faire, doit se plonger dans la revue, puis se remettre sur son ancienne tâche avec la nécessité de se re-plonger dans ce qu’elle faisait. Ce temps n’est pas négligeable.</p>
<p>Et que ressent Perceval ? Quand il apprend qu’il doit tout refaire. Quand il lit les commentaires d’Arthur, sujet à interprétation, pouvant être pris personnellement.</p>
<h2 id="ce-que-lon-peut-faire">Ce que l&rsquo;on peut faire</h2>
<p>On communique davantage. On donne du feedback tôt et régulièrement. On collabore. Perceval et Arthur peuvent échanger dès le début de la tâche, pendant, et même à la fin lors de la revue. Ils peuvent la faire ensemble sur le même poste. Et soyons fous, ils peuvent se mettre au pair programming. Ça y est, on y vient.</p>
<div class="details admonition quote open">
        <div class="details-summary admonition-title">
            <i class="icon fas fa-quote-right fa-fw"></i>Du pair programming<i class="details-icon fas fa-angle-right fa-fw"></i>
        </div>
        <div class="details-content">
            <div class="admonition-content"><p>Ce matin, Perceval et Arthur s’assoient côte à côte afin de développer une nouvelle fonctionnalité ensemble. À tour de rôle, ils écrivent du code et échangent tout le long. Ils challengent le code et la qualité. Arthur et Perceval apprennent l’un de l’autre, se transmettent des connaissances, des bonnes pratiques.</p>
<p>À la fin de la journée, la fonctionnalité est terminée. Le design du code et la qualité sont encore meilleurs que ce qu’ils pensaient faire chacun dans leur tête avant de commencer. Ils rapatrient la fonctionnalité sur la branche principale. Fin.</p>
</div>
        </div>
    </div>
<p>Qu’en pensez-vous ? Remémorez-vous la première histoire.</p>
<p>En travaillant de paire, <strong>le feedback est immédiat et continu</strong>. Arthur accompagne en temps réel Perceval. Il n’y a plus d’aller-retour ou d’échanges à l’écrit, ni d’attente, ni de changement de contexte. Il n’y a même plus besoin de faire de code review, chaque retour a été pris en compte sur le moment et le résultat est de meilleure qualité. Avec le pair programming, la revue de code est poussée à son extrême : le binôme en fait tout le long, à chaque instant.</p>
<p><strong>Les échanges sont plus humains et plus riches</strong>. Chacun apprend, partage. Chacun challenge et améliore le code écrit. Chacun comprend le code et la fonctionnalité - la propriété est collective. Les bénéfices du pair programming sont multiples. Alors pourquoi attendre ? Une heure, une journée, une fonctionnalité de bout-en-bout, … Lancez-vous. À votre rythme, mais lancez-vous.</p>
<p>Testez, observez ce qui change, prenez du feedback. Apprenez à faire du pair programming, acceptez au début de ne pas savoir faire, améliorez-vous. Et appréciez :)</p>
<hr>
<p><em>Post-scriptum du prêtre : toute ressemblance avec des personnes existantes ou ayant existé dans la légende arthurienne ne saurait être que fortuite. Ou pas. Je suis en manque de film Kaamelott.</em></p>
]]></description></item><item><title>Mob-Programming - Assigner des rôles et les faire tourner</title><link>https://jordanchapuy.com/posts/2020/10/mob-programming-assigner-des-roles-et-les-faire-tourner/</link><pubDate>Tue, 27 Oct 2020 09:00:00 +0200</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2020/10/mob-programming-assigner-des-roles-et-les-faire-tourner/</guid><description><![CDATA[<p>Plus tôt dans le mois, on a eu un loupé sur un Mob-Programming : une faible dynamique plombait le début. Le format trop libre freinait le groupe. On a rattrapé le coup en faisant tourner des binômes. J&rsquo;ai pris conscience de l&rsquo;intérêt d&rsquo;assigner des rôles et de les faire tourner au sein du groupe pour maximiser les bénéfices du Mob-Programming.</p>
<p>C&rsquo;était lors d&rsquo;un beCom début octobre - un événement à benext qui regroupe toute une communauté sur l&rsquo;après-midi. Les participants étaient demandeur d&rsquo;approfondir un sujet, notamment avec de la pratique. On a proposé avec Cédric d&rsquo;animer un Mob-Programming.</p>
<p>J&rsquo;aime beaucoup faire du Mob-Programming. C&rsquo;est un excellent moment pour partager, apprendre, et explorer avec plusieurs personnes. On s&rsquo;est dit que ce serait un très bon moyen pour que le groupe puisse apprendre activement. Que les plus sachant transmettent. Que les plus néophytes découvrent et essayent. Que tout le monde se challenge à son niveau.</p>
<p>Cédric restait au clavier (covid oblige) pour retranscrire toutes les volontés du groupe. De mon côté, je facilitais. Nous étions aussi là en conseil pour accompagner le groupe lorsqu&rsquo;il y avait besoin.</p>
<h2 id="trop-de-libertés-peu-dinitiatives">Trop de libertés, peu d&rsquo;initiatives</h2>
<p>On a démarré avec un format très libre. Tout le monde pouvait participer, proposer et faire avancer à tout instant. Résultat, de nombreux silences et non un brouhaha. Une seule personne participait activement et deux autres de manière sporadique (oui, je suis en manque de Kaamelott). Le reste du groupe était totalement passif.</p>
<p>Un début pas très dynamique, probablement ennuyant pour certains participants. Un début qui me demandait également beaucoup d&rsquo;énergie pour la facilitation, pour insuffler de la vie, faire participer, faire questionner, etc.</p>
<p>Avec le recul, je me dis que l&rsquo;on n&rsquo;a pas assez pensé au public ciblé en amont. Un public composé majoritairement de jeunes développeurs et non habitué à des pratiques tel que le Mob-Programming. Avoir trop de liberté était contre-productif, cela freinait les participants. Et avec 10 personnes, c&rsquo;était un grand groupe. Il fallait un cadre plus fort.</p>
<h2 id="des-binômes-et-de-laction">Des binômes et de l&rsquo;action</h2>
<p>Au bout d&rsquo;une heure, j&rsquo;ai proposé de faire un break pour s&rsquo;aérer l&rsquo;esprit. On a échangé brièvement avec Cédric et on était du même avis, c&rsquo;était difficile. On a repris avec une nouvelle formule.</p>
<p>On a désigné deux personnes au hasard. Celles-ci héritèrent du rôle de leader : elles devaient faire des choix, réfléchir à voix haute et indiquer comment avancer à Cédric (au clavier). Toutes les dix minutes, on tournait avec les deux personnes à côté. Et ainsi de suite. Le reste du groupe pouvait bien entendu participer en même temps, mais c&rsquo;est le binôme qui était responsable de faire avancer.</p>
<p>Rapidement, le Mob-Programming est devenu vivant. Les échanges au sein du binôme étaient intéressants, il y a avait de l&rsquo;interaction entre les personnes, et le groupe avançait bien. L&rsquo;ensemble du groupe s&rsquo;est mis à participer. Les personnes étaient avec nous. Lors du debrief de fin de journée, les retours étaient très positif sur le passage en binômes.</p>
<p>J&rsquo;avais également moins d&rsquo;effort à fournir sur la facilitation. Inconsciemment, j&rsquo;essayais de combler cette absence de cadre en première partie. Le groupe gagnait en autonomie et je pouvais me concentrer sur d&rsquo;autres choses.</p>
<h2 id="assigner-des-rôles-et-les-faire-tourner">Assigner des rôles et les faire tourner</h2>
<p>En assignant des rôles, on a proposé un cadre dans lequel les participants évoluaient. Ce rôle les responsabilisait. Le rôle les poussait à l&rsquo;action et à la réflexion. Au sein d&rsquo;un grand groupe, cela évite l&rsquo;effet &ldquo;quelqu&rsquo;un le fera à ma place&rdquo;.</p>
<p>Faire tourner ces rôles permet de rendre tout le monde actif à un moment. Les participants étaient davantage présents, et le fait de minuter donnait un rythme. Le groupe arrête de se reposer sur une seule personne très active, et celle-ci laisse la main.</p>
<p>Je repense aux sessions de Mob-Prgramming que je fais avec des personnes plus chevronés, en format assez libre : il y a aussi des moments où l&rsquo;on désigne une personne qui prend le lead. Et des moments où l&rsquo;on change. Ca fonctionne bien.</p>
<p>Tout ceci me fait dire qu&rsquo;avoir des rôles tournant, ou au moins un lead tournant au sein du groupe est une composante importante du Mob-Programming. La méthode du Driver &amp; Navigator va d&rsquo;ailleurs dans ce sens.</p>
]]></description></item><item><title>Pair Programming ritualisé</title><link>https://jordanchapuy.com/posts/2020/09/pair-programming-ritualise/</link><pubDate>Tue, 22 Sep 2020 09:00:00 +0200</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2020/09/pair-programming-ritualise/</guid><description><![CDATA[<p>Au printemps, alors que les arbres commençaient à fleurir, j’ai eu l’idée de ritualiser un créneau de pair programming. J’aime beaucoup cette pratique. À mon sens, le pair programming apporte beaucoup de bonnes choses. Peu importe le niveau des personnes, ou même leur écart de niveau, ce qui en émerge est très intéressant. Les discussions, le code collectif, l’exploration, l’apprentissage, etc.</p>
<p>C’est quelque chose que j’utilise régulièrement avec mon binôme. Sur la demande de l’un ou de l’autre. Je m’en sers beaucoup pour accompagner, partager mes connaissances, donner du feedback. On a des cas concrets pour échanger, confronter des idées et résoudre des problèmes.</p>
<p>Et puis un jour je me suis dit, tiens, et si on se fixait un moment dédié et régulier pour faire du pair programming ? En conservant toujours la possibilité de le faire spontanément si besoin. L’un n’empêche pas l’autre. Je l’ai proposé à mon collègue et on s’est lancé. On a essayé une fois par semaine, un créneau récurrent inscrit dans l’agenda. On a tenu chaque séance depuis le début. Aujourd’hui, j’ai eu envie de revenir sur cette expérimentation et sur ce que ça nous a apporté.</p>
<hr>
<h2 id="pourquoi-cette-envie-de-ritualiser-">Pourquoi cette envie de ritualiser ?</h2>
<p>Printemps 2020 rime, malheureusement, avec la pandémie de Covid-19. Lorsque l’on a été confiné, mon équipe est passée de quelques rares jours de télétravail par mois à du full remote. Je voulais garder <strong>un lien fort de partage</strong> avec mon binôme. Sur notre lieu de travail, nous étions côte à côte. Il était aisé de tourner l’écran de manière spontanée et de dire « Hey, qu’est-ce que tu en penses ? » ou « Je suis bloqué ici, tu peux regarder avec moi ? ».</p>
<p>À distance, j’avais peur que l’on perde ça. On ose peut-être moins. Ça demande plus d’effort. Plus de synchro. Il faut demander et appeler. Je pense qu’il peut y avoir une peur de déranger, on ne sait pas ce que l’autre fait à ce moment, on ne le voit pas. La raison première était donc de garder un lien. En ritualisant, je savais que l’on avait un créneau réservé sur nos agendas pour le faire.</p>
<p>Ce que j’en attendais également, c’était de partager encore plus. En faisant régulièrement du pair programming, au moins une fois dans la semaine, je voulais accentuer mon accompagnement. Avoir plus de moments où je pouvais transmettre et échanger.</p>
<h2 id="quest-ce-que-jai-observé-">Qu’est-ce que j’ai observé ?</h2>
<p>Beaucoup de bonnes choses. J’ai même envie de dire que des bonnes choses. J’ai été agréablement surpris par chacune de nos séances. On a, à plusieurs reprises, dépassé notre créneau et continué naturellement, parce que c’était utile, parce que ça apportait de la valeur. On s’est beaucoup entraidé avec nos différentes connaissances du métier et du code. La confrontation régulière des idées a permis d’avancer plus vite sur des sujets parfois complexes.</p>
<p>J’ai remarqué un effet <em>canard en plastique</em>. <strong>Expliquer son problème à quelqu’un d’autres aide à mieux le comprendre et à trouver une solution</strong>. Donc le faire régulièrement (avec plus de pair programming) aide à trouver plus souvent et plus rapidement des solutions. C’est très bénéfique.</p>
<p>Une de mes craintes au départ était « est-ce qu’on aura à chaque fois des sujets adapté au pair programming ? ». En fait, oui. Ce n’est pas du tout un problème. Un jour, j’étais sur une correction de bug assez mystique. Je n’étais pas très avancé dessus et je n’avais pas de pistes intéressantes. Je pensais que ce ne serait pas très intéressant pour le créneau de pair programming qui allait démarrer.</p>
<p>Mais je me trompais. Ce fut l’une des sessions les plus utiles. Avec nos deux cerveaux et nos échanges, on a avancé extrêmement vite sur ce sujet. On a fait du pair programming l’après-midi entière et on a pu corriger ce bug. On a été très productif. Beaucoup plus que si j’étais resté seul.</p>
<p>En plus du gain de productivité et de la résolution de problèmes, <strong>j’ai pu beaucoup plus transmettre et accompagner mon binôme</strong> avec ces séances de pair programming régulières. Je trouve que c’est un excellent moyen d’apprendre les uns des autres, de guider, d’expliquer, d’essayer. On fait des choses concrètes, ensemble. On code et on échange en direct.</p>
<p>Enfin, une autre conséquence que j’ai observée avec l’augmentation de pair programming est la <strong>réduction du temps passé à faire du code review</strong>. Elles sont moins nombreuses et plus rapides. Plus on écrit du code ensemble, moins il y a besoin d’un processus où on le relit. Et c’est une bonne chose je trouve. Je préfère faire davantage de pair programming que de code review. <a href="https://jordanchapuy.com/posts/2021/02/et-si-on-arretait-les-revues-de-code/" rel="">Et si on arrêtait les revues de code ?</a></p>
<p>Le pair programming nous fait collaborer. On partage la propriété du code (collective code ownership), on est capable de comprendre chaque partie. C’est interactif. C’est en direct. Les code reviews sont asynchrones. On échange à l’écrit. On donne du feedback bien après l’écriture du code.</p>
<h2 id="et-maintenant-">Et maintenant ?</h2>
<p>Je compte bien conserver ce rituel et continuer à avoir un créneau dédié au pair programming. Même si le confinement est terminé et que l’on retourne partiellement au bureau, j’aime beaucoup tout ce que le pair programming nous apporte. Le fait de le ritualiser permet d’en faire plus régulièrement. Ca nous apporte un cadre.</p>
<p>Je songe à augmenter notre « temps minimum » de pair programming par semaine. Soit en augmentant la durée du créneau, soit en ayant deux créneaux dans la semaine. Je réfléchis aussi à une variante. Au début d’un sprint, choisir une story et décider de la faire entièrement en pair programming. Du début à la fin.</p>
<p>Une autre idée qui me semble intéressante serait de faire du pair programming avec une autre spécialité de temps en temps (on est organisé en feature team, il y a des développeurs Android, iOS et backend dans l’équipe). De cette manière, on obtiendrait plus de compréhension sur les autres plateformes. On irait également plus loin dans la pluridisciplinarité. J’ai pu le faire à deux reprises au début de l’année avec un développeur Android pour comprendre un problème commun, ce fut très utile.</p>
<hr>
<h2 id="bref">Bref</h2>
<p>L’expérimentation de ritualiser le pair programming s’est révélée très positive. Nous en avons tiré beaucoup de bonnes choses. Du partage, de l’accompagnement, de la collaboration, collective code ownership, etc. Tout ça régulièrement. Nous étions très productifs dans ces moments-là. Les discussions autour de l’écriture du code ont apporté des idées, des résolutions de problèmes, de l’apprentissage.</p>
<p>Je recommande vivement de faire davantage de pair programming. Avoir un créneau dédié peut être un moyen d’y parvenir. Essayez. C’est simple à mettre en place et très efficace. Si vous n’en faites pas du tout, lancez-vous. Si vous en fait de temps en temps, tentez de fixer un créneau. Vous pouvez commencer petit, avec une heure par semaine par exemple. Décidez d’un moment, officialisez-le dans l’agenda, et tenez le.</p>
<p>Et vous, à quel point faites-vous du Pair Programming ? Et comment ?</p>
]]></description></item></channel></rss>