âïžCet article fait partie de la sĂ©rie âđ Trucs & astuces Ă lâusage des jeunes dĂ©veloppeurs webâ
Le pair programming, comme son nom lâindique, est lâaction de coder Ă deux : lâun des dĂ©veloppeurs tient le clavier et code, pendant que lâautre lit et participe Ă lâĂ©criture du code.
Dit comme ça, ça a lâair extrĂȘmement contre-productif, deux personnes qui font le boulot dâune, câest pas vraiment rentableâŠ
Câest ce que je pensais aussi avant de mây essayer.
Dâabord, le pair programming nâest pas systĂ©matique, mais devrait ĂȘtre rĂ©gulier : une fois par semaine, par exemple. Ensuite, et câest logique, les rĂŽles doivent sâinverser rĂ©guliĂšrement.
Lâutilisation rĂ©guliĂšre du pair programming dans une Ă©quipe apporte Ă©normĂ©ment dâavantagesâŠ
Renforcement de la cohĂ©sion de lâĂ©quipe
Bon, dâaccord, câest pas forcĂ©ment systĂ©matique, mais quand mĂȘme, ça joue.
Confrontation / mise en commun des idées
Deux dĂ©veloppeurs ne pensent jamais de la mĂȘme façon, et confronter ces idĂ©es avant dâĂ©crire le code est le meilleur moment pour le faire.
Augmentation de la couverture du code
Dans un projet en Ă©quipe, si une personne est lâauteur dâune grand partie du projet et vient Ă sâabsenter (maladie, vacances, dĂ©part), il faut du temps au reste de lâĂ©quipe pour se rĂ©approprier ces parties du projet. Le pair programming tend Ă rĂ©duire les parties de codes couvertes par une seule personne.
đ le paramĂštre dâimportance dâun dĂ©veloppeur dans une Ă©quipe est aussi appelĂ© le bus-factor, synthĂ©tisĂ© par la phrase âet si untel venait Ă passer sous un bus, Ă quel point ce serait le bordel pour le projetâ (on ne parle pas du facteur humain, qui est toujours nĂ©gatif â je ne souhaite Ă personne de passer sous un bus, câest lourd, un bus). Il est vital dans une Ă©quipe de rĂ©duire au maximum le bus-factor de chacun, le pair programming Ă©tant une bonne maniĂšre dây contribuer.
Rapport apprentissage / performance
Le pair programming est aussi une formidable mĂ©thode dâapprentissage interne dans une Ă©quipe, que je vais illustrer par un exemple :
Il y a peu, dans une Ă©quipe oĂč jâavais un rĂŽle de lead developper, nous avions une tĂąche dans notre backlog qui consistait Ă rĂ©gler un problĂšme visuel en implĂ©mentant un systĂšme de prĂ©chargement dâimages.
Objectivement, dans le contexte et avec lâexpĂ©rience, jâen aurais eu pour vingt minutes, douche comprise. Or, nous avions une nouvelle recrue dans lâĂ©quipe Ă ce moment et mettre en place un tel systĂšme Ă©tait Ă la fois quelque chose quâil nâavait jamais eu lâoccasion de faire et qui nâest pas forcĂ©ment simple Ă mettre en place.
Le hic, câest que dans le mĂȘme ordre dâesprit, sâil avait du le faire tout seul, je pense quâil en aurait eu pour une bonne demi-journĂ©e, voire une journĂ©e entiĂšre. Ăa nâaurait pas forcĂ©ment Ă©tĂ© mauvais pour lui, mais câĂ©tait un peu contre-productif par rapport Ă ma planification.
Du coup, on a planifiĂ© une sĂ©ance de pair programming, avec ma recrue au clavier et moi Ă cĂŽtĂ© de lui. Je lâai laissĂ© travailler en le guidant dans la bonne direction, en lui laissant volontairement faire les erreurs prĂ©visibles pour plus facilement lui montrer comment y pallier.
On en a eu pour 45 minutes, un compromis vraiment acceptable entre les deux Ă©valuations.
Bref, le pair programming, câest bien, mangez-en.