Les bénéfices du peer-coding

Les bénéfices du peer-coding

Alexandre P. dans Dev - Le 06-06-2022

Comment utiliser le Peer Programming comme un levier lors de la résolution de problèmes ? Si une équipe s'en sert efficacement, elle peut améliorer considérablement ses rendements.

Programmer à deux : le Peer-Programming

Vous est -il déjà arrivé d'être complètement bloqué sur quelque chose, de passer des heures, voire des jours pour débloquer la situation alors que cela aurait très bien pu se faire en une vingtaine de minutes si vous aviez une information clé ?

Cela arrive à tout le monde, et nous réagissons très différemment face à cette situation. Certains se renferment sur eux même et cherchent la solution jusqu'à la trouver. D'autres n'hésitent pas à faire des signes lorsqu'ils sont bloqués.

Cela demande parfois un peu de courage de dire que l'on n'arrive pas à comprendre ou à faire quelque chose, or, le Peer Coding ou encore le Peer Programming peut nous permettre d'avancer beaucoup plus vite.

La résolution de problèmes, c'est notre quotidien

On le sait tous, le développement est un outil, il sert à matérialiser une idée, à répondre à un problème, à répondre à un besoin. Or, il est prouvé que la résolution de problème occupe au minimum 20% à 30% de notre temps de développement.

Avec le temps, les outils tels que les Tests Unitaires (TU) ou encore les langages fortement typés servent à réduire ce temps d'intervention.

Il est tout de même bien mieux de faire du préventif, c'est à dire anticiper en amont les dysfonctionnements, que faire du curatif, c'est à dire faire le pompier et éteindre le feu, une fois que ça brûle déjà.

La résolution, où l'anticipation de problème devient de ce fait obligatoirement présent dans nos journées types de développeur. Parfois même, lorsque l'organisation est très mauvaise, elle occupe plus de la moitié du temps passé à travailler.

J'espère que vous réalisez que plus de 50% de votre temps, passé à fixer des bugs et gérer des problèmes non anticipés, c'est un signal d'alarme grave. Il faut revoir les méthodologies, les outils, l'organisation du projet pour faire plus de "prédictions" sur les scénarios... 

Bien que la résolution de problème est un passage obligatoire de notre journée voire nos semaines de développement. Je constate que le Peer Coding dans ces moments là est un outil adapté à ces situations.

Qu'est-ce que le Peer Coding

Le Peer Coding, signifie travailler en équipe avec un collègue. Et contrairement à ce que l'on peut penser, cela ne retire pas une capacité de production du projet, car comme expliqué plus haut, la résolution de problème occupe déjà du temps quoique l'on fasse. Tout projet connait forcément des bugs, il s'agit alors de s'organiser pour les anticiper, ou les résoudre plus rapidement.

Le Peer Programming, c'est un accélérateur de résolution de problèmes

Cela permet plusieurs choses : 

  • Réfléchir selon différentes perspectives (et très souvent cela permet une observation jusqu'alors mise de côté par le développeur)

  • 2 cerveaux valent mieux qu'un, donc cela double presque le nombre de solutions ou propositions envisageables

  • Cela permet de renforcer le travail d'équipe, c'est à dire, partager sur un point précis les conventions sur lesquels on s'est mis d'accord pour collaborer

  • Monter en compétence, si un des développeur est plus expérimenté

Il est important de gagner en expérience collectivement. Cela signifie que chacun des membres de l'équipe, face à une même problématique connait désormais le chemin pour le résoudre. Aussi, cela permet de lisser le niveau moyen de l'équipe et de pouvoir plus facilement absorber le turnover.

Retour à l'essentiel

Lorsque l'on résout des problèmes, ce n'est pas par envie, par passion ou parce que c'est fun, mais surtout parce que c'est vital pour le projet. On le fait parce qu'on doit le faire. Cependant, il faut tout de même reconnaître que cela apporte, en définitive, moins de valeur pour le projet final, même s'il permet d'augmenter les connaissances techniques de l'équipe.

Il convient donc d'user de tous les moyens à notre portée pour mettre un terme au problème rencontré. Le Peer Coding qui est un outil permettant d'accélérer la résolution de problèmes, ne vas peut être pas réduire le nombre de problèmes rencontrés pendant le temps de travail, mais accélérer la résolution afin de pouvoir se remettre à faire du code productif, soit l'implémentation de nouvelles features.

Quand le Peer Programming sert à boucler des tâches pointues

Lorsque l'on travaille sur des features techniques très complexes, il est préférable de réfléchir à plusieurs afin de ne rien laisser au hasard. La conception se fait alors en équipe, et il n'est pas rare que les premières implémentations aussi. 

Créer un nouveau module en équipe se fait couramment, d'autant plus que cela permet de partager le même niveau d'information avec tout le monde. 

Ce procédé accélère même souvent la sortie de ce nouveau module car il est stimulé par une poussée collective.

Les outils de Peer Programming

Pour faire du Peer Programming, faut aussi des outils.

Contrairement aux outils de versionning tel que git etc qui permettent déjà de travailler en collaboration, le Peer Coding, c'est le fait de travailler simultanément sur une tâche avec un collègue. Et pour le faire efficacement, il faut impérativement des outils.

Lorsque l'on travaille en présentiel, cela peut très bien se faire dans un bureau avec un crayon et une feuille de papier. Mais depuis le COVID et la standardisation du télétravail, pour faire du Peer Coding, il faut des outils de communication performants.

Pour ma part, j'ai choisi d'utiliser Discord  car il permet de faire tout ce dont on a besoin :

  • La communication vocale

  • La communication vidéo (Webcam ou Partage d'écran)

  • Un chat écrit pour s'échanger du code source

J'ajoute à cela d'autres outils qui permettent de faire des dessins et schéma : 

Parfois un schéma vaut 15 minutes d'explications

Il est beaucoup plus simple de pouvoir visualiser un schéma notamment pour traiter les états d'un programme, les parcours possibles, les embranchements, que de lister uniquement les cas envisageables. 

En conclusion, le Peer Coding est un outil super pour faire progresser ses équipes. Il est bien loin le temps où on te disait "Surtout ne copiez pas sur votre voisin", lorsque l'on est une équpe de développeurs, rien n'est plus faux. 

Faire du Peer Programming vous aidera à résoudre plus rapidement les problèmes et partagera immédiatement l'information entre les développeurs.

Cependant, pour pouvoir le faire efficacement, il faut des outils adaptés. J'ai essayé pendant longtemps avec Slack, mais comparé à Discord, les appels vidéos font parties de la formule payante. Pour Microsoft Teams, il fait quasiment tout, si ce n'est qu'il n'y a qu'un présentateur à la fois, alors que sur Discord, on partage tous nos écrans simultanément et cela permet un retour d'informations immédiat de la part de chacun.

#peercoding#team#programming#advices

user picture
Alexandre P.

Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.