Notre blog

Le Peer-Programming : l’union fait la force !


Par Maxime et Rodrigue, développeurs web à l’Agence Dn’D

Le peer-programming est une pratique à part dans le processus de développement au sein d’une agence web. Cependant, ses retombées sont réelles et elles ne cessent d’impacter positivement les rendements des entreprises qui l’utilisent ainsi que le développement personnel des équipes. Au sein de l’Agence Dn’D, nous l’avons mis en place depuis plusieurs mois et nous pouvons maintenant vous partager nos retours.

Le peer-programming, qu’est-ce que c’est ?

On utilise généralement deux termes pour qualifier la programmation par pair : le pair-programming et le peer-programming. Tout d’abord, le pair-programming est une pratique dite “agile” à travers laquelle deux développeurs travaillent ensemble sur l’élaboration d’un développement. Le peer-programming se définit comme étant du binômage sans notion d’agilité. La différence est minime, mais nous utiliserons principalement l’appellation “peer-programming” dans cet article.

Rappel sur la méthode agile

Lors de l’initialisation d’un projet, une approche dite “traditionnelle” nécessite une connaissance précise des besoins du client. Cette méthode laisse peu de place aux changements et garantit un déroulement très procédural, n’offrant pas la possibilité d’apporter des améliorations.

Exemple : Vous planifiez un trajet en voiture en spécifiant l’ensemble des routes empruntées, l’heure de passage associé, les litres d’essence consommés et les kilomètres parcourus. Malheureusement, un trajet en voiture laisse place à beaucoup d’imprévus : des embouteillages, des déviations, des travaux, un risque de panne…. La planification initiale devient obsolète et inutile ; cela s’applique aussi bien pour le développement d’un projet !

L’ensemble des méthodologies utilisées par l’Agence Dn’D se rapprochent d’une pratique dite « agile« , ce qui permet au client de prendre part entièrement au projet mais aussi de s’adapter à ses besoins en fonction de ses exigences. Ainsi, l’approche agile augmente la visibilité et bonifie les relations avec le client, qui est impliqué du début à la fin du projet.

Reprenons l’exemple du trajet en voiture : avant de prendre la route, on se fixe des objectifs à court terme comme d’atteindre des grandes villes. À chaque objectif atteint, il faut ensuite échanger avec l’ensemble de l’équipe et adapter la suite de l’itinéraire en fonction de la situation. Les objectifs sont donc fixés grâce à la « vision du produit » communiquée par le client ainsi qu’à l’énumération des fonctionnalités attendues !

Les différentes méthodes de peer-programming

1. Le jumelage Conducteur – Observateur

Ce binômage se traduit par la collaboration de deux personnes sur un même poste de travail, avec un “conducteur” ou “driver” qui écrit le code et un “observateur” ou “observer” qui l’assiste dans son développement. Le rôle du conducteur est de rédiger le code en expliquant à voix haute les actions qu’il entreprend. De son côté, l’observateur doit veiller à ce que l’implémentation du code soit correct. Il est important que le binôme échange constamment, non seulement à propos des potentielles erreurs relevées mais aussi concernant les possibles alternatives de développement : la communication entre les membres du duo représente donc la clef de voûte de cette méthode. Afin qu’elle soit efficace, l’observateur doit rester attentif aux écrits du conducteur, mais si ce dernier reste passif et qu’il ne participe pas, ce peer-programming devient inutile.

2. Le jumelage fort et traditionnel

Cette technique dite de “couplage fort” oblige le conducteur à rester inactif tant que l’observateur ne lui a pas attribué de missions. Le “couplage traditionnel” est différent puisque le conducteur doit toujours demander l’avis de son partenaire avant de réaliser une tâche. Dans certains cas, il est même possible que la personne qui a une idée devienne l’observateur et laisse le clavier à son binôme. Ainsi, chaque personne expérimente le rôle d’observateur tour à tour en ayant la responsabilité d’expliquer clairement son idée. Ces techniques permettent d’éviter les inconvénients d’un jumelage Conducteur-Observateur en impliquant chaque partie dans le développement, dans le but d’être complètement engagé et responsable du processus de développement.

3. Le Jumelage “ping-pong”

Une autre méthode populaire de peer-programming est le jumelage “ping-pong. Il induit un développement piloté par des tests et il consiste en une succession de “défis entre les deux membres du binôme.
Le conducteur rédige un test de comportement tandis que l’observateur conçoit le code qui permettra de le passer. Une fois mis en oeuvre, l’observateur devient conducteur et l’opération est répétée, ce qui permet de mettre en place un cycle de défis en binôme tout en implémentant les fonctionnalités demandées (cette méthode reste tout de même plus chronophage que les deux précédents jumelage).

Les objectifs du peer-programming

Les objectifs de cette pratique sont principalement centrés vers les développeurs, mais elles concernent aussi l’entreprise en tant que telle ainsi que ses rendements.

Ces objectifs peuvent être différents en fonction des profils du duo :

  • Développeurs Junior & Senior : Permet de former les collaborateurs les moins expérimentés avec des sujets concrets afin d’accélérer considérablement leur montée en compétence. Cette technique se révèle être plus efficace que les solutions habituelles telles que l’auto-formation ou les formations théoriques. Dans ce cas de figure, le développeur Senior sera généralement le conducteur, mais rien n’empêche le duo d’échanger leurs rôles afin que le développeur Junior puisse coder dans un environnement sécurisant accompagné d’une personne expérimentée qui l’aide et qui la conseille.
  •  

  • Développeurs Senior & Senior : Permet de confronter deux façons de coder différentes afin de livrer un code impeccable. Dans le monde du développement Open Source, il devient de plus en plus important de fournir un code complet. Ainsi, deux personnes qui ont leurs propres expériences autour du développement pourront débattre et choisir la meilleure façon de développer une fonctionnalité.
  •  

  • Développeurs Junior & Junior : Cela permet aux deux protagonistes d’avancer sur des sujets trop complexes pour eux individuellement et ainsi d’acquérir des compétences sans dépendre d’un Senior. Cependant, cela n’est pas sans difficulté car le risque de blocage et de développement de mauvaises pratiques est assez conséquent.
  •  

  • Entretien d’embauche : Une autre finalité du peer-programming peut être évoquée lors des entretiens d’embauche. La programmation en binôme s’avère être un outil parfait pour tester les capacités d’un futur collaborateur. En confrontant une personne à un jumelage Conducteur-Observateur, le recruteur peut vérifier non seulement ses aptitudes techniques mais aussi ses capacités relationnelles et son aisance pour exprimer ses idées.

Les avantages et les inconvénients du peer-programming

La mise en place du binômage dans les tâches de développement revêt plusieurs avantages comme :

  • L’amélioration du code fourni avec moins de risques de négligence et d’erreurs
  • Le partage de la charge de travail afin de maintenir un flux de développement constant
  • Une meilleure compréhension globale du code et des concepts abordés
  • La mise en place d’un feedback constant et permanent
  • Le partage des responsabilités
  • Le renforcement des liens entre les collaborateurs
  • L’adoption d’un vrai esprit d’équipe
  • Les progrès et la montée en compétences des développeurs juniors
  • L’accroissement des rendements lorsque le peer-programming est bien organisé
  •  
    Bien-sûr, ces avantages ne peuvent exister uniquement que si les deux personnes participent activement au développement. La condition sine qua non est que le conducteur développe à voix haute en expliquant son code et que l’observateur n’hésite pas à donner son avis et à poser des questions. Dans le cas contraire, de nombreux risques et problèmes apparaissent dans la réalisation de la tâche.

    On peut donc discerner plusieurs inconvénients et risques tels que :
     

  • La perte de temps lors des moments creux de la journée
  • La divergence des opinions
  • L’attribution de deux ressources sur la même tâche
  • La fatigue physique liée à l’attention qu’il faut maintenir
  • Cela peut déranger l’entourage lorsque l’on travaille en open space
  •  
    Il est très important de choisir un conducteur pédagogue qui n’a pas une vision du code trop réfractaire, car l’observateur a tendance à s’inspirer de ses pratiques une fois de retour sur son poste de travail. De plus, l’observateur doit être actif afin que le binômage ne se transforme pas en une démonstration de compétences unilatérale.
    Enfin, il faut absolument planifier le peer-programming sur une tâche précise plutôt que sur une demi-journée pour que l’observateur et le conducteur soient impliqués à 100 % dans le projet et non distraits par des éléments extérieurs.

    Les autres formes de binômage

    Le peer-programming n’est pas la seule méthode de travail en duo qui permet d’obtenir ces résultats. En effet, il existe d’autres formes de binômage tout autant utiles et efficaces que les entreprises du digital peuvent mettre en place.

    Le peer-reviewing

    La “revue par pair est un processus utilisé pour faire vérifier le travail d’une personne par l’un de ses collaborateurs. Utilisée dans de nombreux domaines comme la recherche ou la science, elle est aussi appliquée dans le digital et plus particulièrement lors du développement d’un projet, où les développeurs vérifient le code de leurs collègues. Tout comme le peer-programming, la peer-review responsabilise l’ensemble de l’équipe sur le développement global de l’application. L’avantage de cette revue est qu’elle ne nécessite pas que les deux personnes soient disponibles en même temps, puisqu’elle peut s’organiser lors du temps de travail, en fonction des disponibilités de chacun.
    Le peer-review est une pratique très utile à la compréhension du code et dans certains cas à l’apprentissage de nouveaux concepts. En tant que développeur, il est important de se confronter à une autre façon de développer afin d’en tirer les points positifs et de s’améliorer dans un domaine que l’on maîtrise déjà.
     

    Le soutien, “deboggage” en duo

    Même si ce soutien n’est pas à proprement parler du peer-programming, il est important de le mentionner car il occupe une place très importante au sein d’une agence web. L’entraide est un réel moteur dans la vie quotidienne d’un développeur, surtout lorsque l’on est confronté à une problématique qui demande beaucoup de temps. En effet, l’apport d’un point de vue externe met souvent de nouvelles solutions possibles à jour. Ce soutien peut autant s’opérer entre deux développeurs expérimentés qu’entre un développeur Senior et Junior.
    Son fonctionnement est similaire au peer-programming mais il ne comporte pas toutes ses règles et ses obligations. Bien entendu, cette aide ne fonctionne que si le demandeur parvient à retranscrire les informations et si le soutien apporté est volontaire et motivant pour les deux développeurs.
     

    Binômage à distance

    Il arrive souvent que deux développeurs se concentrent sur le même problème sans pour autant être physiquement ensemble, c’est pourquoi il est primordial d’échanger à distance afin de faire avancer l’investigation et le développement.
    C’est certainement l’une des solutions la moins agile mais qui reste l’une des plus pratique, son principal risque étant l’éventuel manque de coordination entre les collaborateurs.

    Peer-Programming & Peer-Review : le regard de l’Agence Dn’D

    Nous avons interrogé notre équipe afin d’obtenir le regard de l’agence vis-à-vis du binomage, en voici les éléments de réponse.

    Le point de vue de la Direction

  • Comment avez-vous mis en place le peer-programming lorsque vous l’avez exercé ?
  • Durant un soutien sur un développement et pour permettre à certains développeurs de monter en compétence.
     

  • Quelles sont les règles que vous suivez pour que cela se déroule bien ?
  • Il faut être à l’écoute et se remettre constamment en question. En amont, il convient de jauger le niveau de la personne en terme de code et de développement pour adapter son exigence aux éventuelles erreurs commises.
    Si une idée survient et que l’on sait déjà qu’elle ne sera pas adaptée au contexte, il est préférable d’essayer quand même afin de permettre au pair de comprendre l’erreur dans sa logique, cela fait partie du processus d’apprentissage. De plus, il faut laisser son égo de côté pour favoriser l’aspect collaboratif. Certains détails ont beaucoup d’importance pour s’organiser au mieux et pour être efficace : se mettre à l’aise, se donner une deadline pour résoudre une problématique ensemble, convenir à l’avance de qui utilise le clavier et s’y tenir en font grandement partie !
     

  • Avez-vous eu des résultats positifs ?
  • D’une manière générale oui, dans le sens où l’on réfléchit toujours mieux à deux : les lacunes de l’un sont compensées par les connaissances de l’autre, d’abord par l’apport d’idée puis par l’appropriation des connaissances.
    C’est aussi un excellent moyen de “sortir de sa bulle” lorsque l’on devient fermé à force de bloquer sur un problème. Ainsi, on peut reprendre de la distance, remettre les tâches en perspectives en ayant un avis neuf sur le sujet et obtenir le résultat escompté.
     

  • Quelles sont les limites et les défauts de ces pratiques ?
  • Aucun lorsque les deux parties du binôme sont motivés et productifs. Cependant, il ne faut pas l’imposer.

    Le point de vue du Pôle Gestion de Projet

  • Quels sont les objectifs du peer-programming et de la peer-review ?
  • Le peer-programming permet aux Développeurs Junior de monter en compétence sur des cas concrets grâce à la transmission de connaissances par les équipes Senior.
    En plus d’avoir un point de vue différent sur un développement et de confronter ses différentes idées, cela permet aussi d’améliorer la communication et les interactions entre les membres des équipes. En améliorant la qualité des développements via un échange et une réflexion commune entre les développeurs (qu’ils soient Senior ou Junior), le peer-programming aide à se poser les bonnes questions, à soulever des potentiels points de blocage et d’acter ensemble les bonnes solutions techniques.
     

  • Quelles en sont les limites et les défauts ?
  • Les limites de temps peuvent être une contrainte puisque cela peut entraîner un ralentissement des process et donc un coût financier (2 développeurs pour 1 développement facturé 1 seule fois). De plus, les Développeurs Junior ne sont pas toujours amenés à manipuler. Pour ce faire, le Développeur Senior doit se montrer pédagogue.
     

  • Est-ce que ces méthodes peuvent marcher selon vous au sein de Dn’D et pourquoi particulièrement chez nous ?
  • Dn’D est une agence formatrice avec des personnes passionnées et expérimentées, désireuses de transmettre leur savoir-faire. La bienveillance et la pédagogie de nos équipes favorisent le succès de cette méthode de travail, ce qui est idéal pour garantir une montée en compétences commune !
     

    Conclusion

    Le concept de peer-programming ne consiste pas uniquement à réunir deux développeurs et à leur demander de coder : cette méthodologie est à utiliser dans des circonstances variées mais précises pour maximiser ses apports. C’est un processus complexe qui nécessite une période de tests et d’exploration afin de l’utiliser et de l’appliquer à bon escient. Lorsqu’il est bien encadré, le peer-programming est un facteur de productivité permettant d’approfondir ses connaissances avec plus d’efficacité ; il s’inscrit donc parfaitement dans l’ADN de Dn’D.
     

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *