jeudi 11 mars 2010

Le “Pair Programming” revu et visité !

L’une des grandes forces de la méthodologie « Extrem Programming (XP) », est bien sont “Pair Programming” ou d’une mauvaise traduction, la programmation en duo.

Pour avoir travaillé en ce monde, je suis conscience tant de sa puissance que de ses forces. Un bon duo pourra rapidement acquérir un rendement de 2.5 à 3 fois, et peut-être plus, leur cumul du travail individuel. Mais, il faut une bonne complémentarité dans l’équipe.

Dans nos grandes organisations avec leurs grands projets, il est facile de trouver les individus qui fonctionneront bien sur ce principe.

Mais, lorsque nous intervenons dans de plus petites organisations, avec les effectifs réduits et aussi le budget d’autant réduit. Il est difficile d’immobiliser, 2 ressources sur une même tâche. Même, si à moyen terme, serait plus efficace.

Prenons par exemple un projet de 700-800 jours/personnes, environ 1 an avec 4-5 ressources. Il est difficile de doubler le nombre de ressources pour faire du « Pair Programming ». Et le temps total du projet (d’autant si c’est la première expérience ensemble des pairs), elle risquerait de ne pas trouver leur vitesse de croisière tant recherchée.

Donc, comment tirer parti de cette force, sans pour autant immobiliser les 2 ressources en même temps. C’est une question que je vais tenter de répondre avec vous.

Faisons ensemble les constats des forces de cette paire, et essayons d’en tirer parti au mieux.

  1. On dit qu’il y a plus dans 2 têtes que dans une.
  2. Qu’en travaillant à 2 sur un même ordinateur, la qualité intrinsèque du code et des algorithmes augmente
  3. Si une personne est absente, surtout lors d’une absence prolongée. L’autre personne peut continuer où l’équipe avait laissé.
  4. L’Augmentation du rendement, augmentation de l’efficacité.

Révisons ensemble cette liste. Essayons d’en exploiter les forces, sans passer à l’absolue du « Pair Programming »

  1. « On dit qu’il y a plus dans 2 têtes que dans une. » Par cette expression, on parle souvent du cumul de connaissance, du cumul d’expérience.
    • Même si les gens ne travaillent pas en pair, il n’est pas interdit de faciliter le travail collectif.
    • Il est recommandé de mettre en place une structure, ou des structures qui permettent l’échange d’information comme les Wikis, les forums à l’interne de votre organisation. Ne paniquez pas, il existe de bonnes solutions opens sources qui pourront vous aider à les mettre en place
    • lorsqu’il y a un problème, qu’une personne ne réussis pas à résoudre toute seule, il n’est pas interdit (même recommander) de demander l’aider. Utiliser momentanément le travail par pair pour résoudre le problème.
    • Après tout, nous n’avons pas besoin du « pair programming » pour travailler en équipe, ensemble !

  1. La qualité du code et des algorithmes.
    • La qualité du code, et des algorithmes est souvent 2 choses qui sont problématiques dans le développement logiciel.
    • Les programmeurs ont souvent le syndrome de « DIEU », en croyant que leur code et leurs algorithmes sont les meilleurs. Mais, c’est FAUX. Le code fait par une personne n’est pas la solution ultime. L’équipe de doit avoir une connaissance générale du travail de tous ces membres !
    • Une autre technique que contient XP (Extrem Programming), c’est la revue de code. Elle permet en groupe ou par un autre membre de l’équipe une revue du code.
    • Une bonne revue de code devrait compter au minimum ces critères.
i. Revue des standards de codification
ii. Le respect de la nomenclature de l’application.
iii. La simplicité de compréhension et la qualité des algorithmes.
iv. La documentation intrinsèque du code et autre documentation nécessaire à sa compréhension.
    • Ce que ce n’est pas une revue de code
i. Un exercice pour démontrer l’incompétence d’un individu
ii. Un procès, une vengeance entre individus.
iii. Une amélioration du code par le réviseur. Le réviseur doit remettre ses recommandations de corrections à l’auteur. Il n’est jamais recommandé d’effectuer soi-même (Réviseur) les corrections à faire
    • Les recommandations de corrections ou d’amélioration ne sont pas actes de Dieux. Elles doivent être considérées comme une « RECOMMANDATION », une « OBSERVATION » et surtout laisser la place à la discuter tant en équipe que dans la relation Révisé-Reviseur.
  1. L’absence ou l’indisponibilité d’une ressource. Le calvaire de tout chargé de projets. Le pair programming nous aide, dans la gestion de cette non-disponibilité d’une ressource. Mais, lorsqu’on ne peut pas avoir 2 personnes qui font le travail, surtout en simultanées. Il est difficile de trouver de la remplacer aux pieds levés.
· Une solution que j’applique dans ces cas là est le principe de la ressource et demi. Une ressource qui a la responsabilité première d’une tache. Généralement, la personne plus expérimentée du groupe.
· A laquelle, s’ajoute une demi-ressource. Généralement, une personne moins expérimentée que la première. Mais, qui a toute la capacité de faire et surtout l’intérêt de le faire.
· Le secret de la sauce, c’est la communication entre les 2. La demi-ressource doit avoir la capacité. Donc, la connaissance nécessaire du «quoi » et du « comment » des travaux.

  1. La fameuse augmentation de la capacité de travail. C’est plus que vrai, qu’il y a de possibilités d’un bon gain de performance. Mais, pour arriver au fameux gain tant attendu, il aura une transition, une adaptation. Car, il ne sera pas immédiat. Les 2 personnes devront apprendre à travailler ensemble. Donc, si on inclut ce délai dans le calcul du gain de productivité. Je ne suis sûr qu’une petite organisation soit capable d’absorber les coûts durant cette transition afin d’atteindre la productivité attendue.

Pour avoir mis en pratique le principe de la ressource et demi, à plusieurs reprises. C’est le meilleur compromis sur plusieurs aspects pour les petites organisations.

Donc, en résumé, le « pair programming » c’est une excellente technique. Je vous la recommande, mais, tout comme application des principes Agiles. Il faut prendre le temps de bien évaluer nos besoins et d’aller chercher les outils dont on a besoin.

Le « pair programming » n’est pas une religion ! Mais, une bonne pratique de développement !

Aucun commentaire: