Catégories
Apéros Agiles Montpellier

Apéro agile de juin 2022 : Extreme Programming

Le thème

Nous avions rendez-vous pour échanger au sujet d’Extreme Programming, que vous retrouverez raccourci dans cet article sous l’acronyme « XP ».

Le contexte

Nous avons été hébergés gracieusement par l’entreprise VitrineMedia, leader en communication digitale et affichage lumineux, à Castelnau-le-Lez. Merci à eux pour leur accueil, ainsi que pour le buffet mis à disposition !

Nous étions 14 participants réunis le jour J autour de ce sujet, un public plutôt composé de développeurs, d’agilistes, et de développeurs agilistes. Les personnes présentes souhaitaient surtout découvrir XP ou approfondir leur connaissance du sujet. Ils cherchent à discuter plus concrètement d’XP afin de voir comment le mettre en œuvre au quotidien et améliorer la qualité de leur production.

Le déroulement

Marc Abegon, senior software engineer de profession et passion, nous avait préparé une présentation aux petits oignons sur le sujet, dont vous pourrez retrouver un aperçu via la carte heuristique ci-dessous.

Une fois la présentation de Marc suffisamment avancée, les participants se sont auto-organisés pour se répartir en petits groupes afin d’échanger sur une pratique particulière de XP. Chaque groupe a ensuite présenté le résultat de ses échanges.

Quelques photos sont visibles dans la galerie ci-dessous.

Propriété collective (« collective ownership »)

  • Va de pair avec les notions de résilience, d’intelligence collective
  • Impliquer de travailler de manière collaborative
  • Apporte de la sécurité psychologique
  • En revanche, certains membres de l’équipe peuvent craindre de se sentir dépossédés de leurs connaissances
  • Cela nécessite d’être dans des conditions de sécurité psychologique pour être dans les conditions du partage

Développement piloté par les tests (« test driven development », ou TDD)

  • Plus simple à mettre en œuvre sur du code backend
  • C’est un investissement sur le long terme, il faut donc créer un cadre favorable à cette pratique
  • Les suites de tests peuvent être considérées comme de la documentation vivante
  • Les cas de test doivent être pertinents pour un maximum d’efficacité
  • Comme on remanie le code régulièrement, il faut aussi remanier les cas de tests pour ne pas générer de la dette
  • Cela peut s’avérer complexe à mettre en œuvre et nécessite une certaine expertise du sujet
  • Le coût d’entrée peut être élevé, en particulier sur un système déjà en place et qui n’aurait pas été élaboré en TDD depuis le départ

Programmation en binôme (« pair programming »)

  • Favorise le partage des connaissances et la montée en compétences avec du pair entre senior et junior
  • Au-delà de l’effet “canard”, des visions différentes entre la pair de développeurs vont permettre d’aller plus loin dans la conception et l’implémentation
  • La revue de code est “immédiate” et le navigateur va avoir un rôle de “garde-fou” par rapport au pilote
  • Cela nécessite d’appliquer des règles d’organisation pour que l’exercice soit le plus efficace possible
  • C’est un investissement sur le long terme pour la qualité
  • C’est parfois difficile à accepter comme pratique de travail pour les personnes qui ont l’habitude de travailler en autonomie
  • Cela peut être vu comme une perte de temps par la hiérarchie avec une personne qui semble “regarder” une autre travailler
  • Le télétravail peut être un frein à la programmation en binôme, cela nécessite donc des outils adaptés pour le partage du code et le travail à deux
  • La taille de l’équipe (trop petite, nombre impair, trop grande) peut avoir des effets négatifs sur l’organisation des pairs, il faut donc l’anticiper
  • Parfois, le fait de travailler en pair peut être plus fatiguant/exigeant que le travail individuel

Rendez-vous au prochain Meetup !

Un grand merci aux personnes présentes pour la qualité des échanges, et rendez-vous mercredi 27 juillet pour un prochain Meetup !

Quelques liens utiles

Laisser un commentaire

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