La programmation en binôme April 9, 2007
Posted by josephcargo in Culture, Développement, Frameworks, Free Software, IT Services, Software, Technologie, Web, Web 2.0, ingénierie.trackback
Etude réalisée par JDN.
Avec pour objectif de rendre le travail collectif supérieur à la somme des travaux individuels, cette méthode peut être envisagée comme une revue de code permanente… mais peut échouer pour causes relationnelles.
La programmation en binôme (ou pair programming en anglais) est une méthode de travail dans laquelle deux développeurs travaillent ensemble sur la même partie de code, en binôme sur un même poste de travail.
L’un est le “pilote” et entre le code, tout en exposant la solution qu’il a en tête. L’autre est le “copilote” et suit le premier avec attention, signalant les erreurs, prenant note de problèmes à résoudre, de tests unitaires à prévoir. Il a une vision du travail avec du recul. Dans l’idéal, ces deux rôles sont échangés fréquemment durant la session de programmation et, dans une équipe travaillant sur un projet, la composition des binômes est aussi à modifier.
Au premier abord on peut penser que cette méthode est deux fois moins productive que si les deux programmeurs travaillaient individuellement. Mais une étude réalisée en 2003 par deux chercheurs américains (Alistair Cockburn et Laurie Williams) a montré que la perte de temps n’était au pire que de 15% (et non de 100%), et que cette méthode produisait 15% moins de bugs que les travaux effectués par les développeurs individuels (voir l’étude).
Le léger surcoût lié à l’adoption de la pratique est largement compensé par les économies faites en évitant les bugs. Il est certes plus cher de localiser les bugs après avoir livré le projet.
Avantages
La méthode est bénéfique pour la motivation et la communication ainsi que pour la qualité du code. Le travail à deux augmente la discipline des programmeurs, et si l’un est interrompu, l’autre reste concentré. Le changement fréquent de la composition des binômes stimule le passage des connaissances sur l’ensemble du code du projet. A deux, on s’oblige à formuler oralement les problèmes, à expliciter les solutions, ce qui évite les raccourcis illisibles à la relecture.
Inconvénients
La programmation en binôme peut présenter des échecs principalement d’ordre relationnel. Par exemple, certaines personnes préfèrent travailler seules. Ou encore, pour un développeur expérimenté, coacher un moins expérimenté peut être une tache ennuyeuse. Enfin, il peut y avoir des conflits entre les styles de programmation. Par ailleurs, il reste difficile de mesurer la différence de productivité entre un binôme et deux personnes travaillant séparément.
L’intérêt de la programmation en binôme est de rendre le travail collectif supérieur à la somme des travaux individuels. L’efficacité de cette méthode dépend du potentiel de cohésion et de motivation contenu dans les relations au sein de l’équipe. Tenter de mettre en place la programmation en binôme en la décrétant obligatoire est un pari absurde. Dans un environnement où il est mal vu de faire des erreurs ou d’avouer une faiblesse, c’est un combat perdu d’avance.
Cette méthode représente néanmoins une véritable stratégie de collaboration, qui peut conférer à l’équipe – à condition que celle-ci ne résiste pas au changement -un rendement insoupçonné.
Qu’est ce que tu en penses Khalid, je veux bien profiter de ton expérience dans ce contexte ?
En faite ce n’est pas une grande expérience, durant mon parcours en développement la majorité des projets que j’ai réalisé c’était individuel,
Comme t’a dit Youssef chacun a son style de programmation, et chacun a sa méthode de voir les choses, le conflit des styles c’est un vraie problème, moi par exemple je vx utiliser l’héritage l’autre le voie autrement.
Le vrai problème en travail en binôme si lorsque le travail est mélangé avec des problèmes relationnels et personnels dans ce cas ni les problèmes relationnels et ni les problèmes professionnels se résouent, et les deux se trouvent coincés dans une labyrinthe.
Un autre problème si l’un des deux binômes n’est pas intéressé ou n’est pas motivé ou seulement l’un d’entre eux veux faire un travail extraordinaire et l’autre veux seulement un projet simple, ou l’un des deux veux compliquer rien que pour compliquer,….
Un autre problème, une fois le projet démarre, on ne peux pas revenir en arrière, en général un projet de programmation a une date limite et les binômes sont liés par un contrat donc il faut essayer de résoudre les problèmes survenus durant la phase de la réalisation et être patient dans le cas ou on possède pas la solution problème survenu.
On trouve dans certains binômes l’un des binôme fait le grand travail sans se soucier du temps perdu par l’autre pour éviter de créer les problèmes.
J’ai cité seulement quelques inconvénients et il y’en a d’autres, la prochaine fois je vais essayer de parler des avantages de travail en binôme.
Bonne soirée Youssef
Merci Khalid pour ces explications plutôt claires.
Bonne soirée