- Format: Forum Ouvert
- Sujet: Parlons des relectures de nos PR/MR
- Meetup
- 14 personnes présentes / 21 inscrites
Forum ouvert
Session 1 : 19h15 - 19h45
Salle 1
- [Colin] Je demande 3 PRs / MRs / jour par poste ou on fait du code, ça vous semble cohérent ou délirant ?
2 heures :
- pattern (d’autres que Colin font ça)
- biais cognitifif : dur de perdre plus
- son propre score : 8 par jour en moyenne, alors que TL donc réunions
- pas de PR qui partent d’une autre PR
- mergé sans que ce soit utilisé
- relecture avec un expert métier, PO (enfin, pas le code des adapters ;-) (autre exemple : le code des adapteurs sera revue par l’experte Oracle qui verra des index manquants)
- difficultés d’adoption, ça nécessite du TDD (les séniors préfèrent payer l’apéro que d’essayer)
- ensuite la CI souffre :-D
- une grosse PR créée de la frustration (des centaines de commentaires), et du gâchis (une relecture ne devrait prendre que quelques minutes pendant un temps mort) -> ça passe par dépit
- l’enfer des grosses PR (ex: sprints de 3 semaines, la dernière est consacrée aux MRs)
- ne pas chercher la PR de 2 heures tout de suite, y aller au fur et à mesure du TDD (ex : renommage de champ). Ça serait du bruit pour rien au sein du travail principal
- Inside Out, composition plutôt qu’héritage
- débit de relecture : auto-merge accepté. Priorités :
- prod 2 pause quand on en a besoin 3 relecture de PR (très petites, claires, documentées, …)
- dévelopement
- attention à la friction des outils (ex : GitLab vs BitBucket)
- CI : 15 minutes max par branche, 30 sur main (plus long sur main car sécurité, e2e, …). Quand ça dépasse on investi (en urgence + de matos, puis parallélisation, cache [souvent le plus rentable], …)
- CI : maintenant on différencie l’intégration (build, tests, e2e, …) de la delivery et déploiement
Salle 3
- [David] Est-ce que la manière de review une PR doit être harmonisée à l’échelle de l’équipe ? C’est-à-dire que chaque dev fasse la review de la même manière.
Contexte:
-
Une équipe de 3 ou 4
-
Manière très différente de faire des PR
-
Première personne : commencer par les tests, si pas bon => regarder le code plus tard, si bon => regarder le code
-
Autre personne possible : télécharger le code pour la review
-
Pas forcément un problème de relecture de code mais plus un problème de standard dans l’équipe
-
Est-ce qu’on doit harmoniser ou non ?
-
Tendance à regarder l’implémentation et vérifier par les tests ont la bonne valeur
-
On a tendance à savoir assez vite si le code a été écrit en TDD ou non, avec des Types ou non
-
Tenter de s’harmoniser sur le but de la relecture, comprendre pourquoi c’est codé comme ça, ce que la revue par un tiers peut apporter
-
Avoir en tête le nommage, les types expressifs, fonctions expressives mais ne pas s’acharner dessus
-
Si c’est automatisable, l’automatiser : exemple linter
-
Utilisation d’un linter qui ajoute des commentaires parfois contraignantes
-
Standard de pratique que l’équipe finit par avoir en commun, exemple:
- Exemple : si quelqu’un ne fait pas du TDD, l’accompagner vers l’approche
-
Plutôt s’interroger sur le “pourquoi” que le “comment” review une PR
-
But possible de la PR : transmettre à l’équipe les changements
-
Rôles tournants (par semaine) avec quelqu’un qui relit toutes les PRs ?
-
Beaucoup de temps à passer sur la PR lorsqu’on ne connaît pas le sujet, peut dissuader
-
Présenter la PR, le problème métier et comment on l’a résolu
-
Ref : podcast https://www.codingblocks.net/
-
Nous sommes plusieurs à faire de l’auto review
-
Les outils de reviews (MR dans GitLab par exemple) ne sont pas toujours très pratiques pour relire
Session 2 : 19h55 - 20h25
Salle 1
-
[Gautier] Peer review vs pair programming : dans quelles situations sont-ils pertinents?
-
Contexte :
- Ancienne équipe sur la même timezone
- Faire des PR : point de friction
- Certains fusionnaient les PR sans la review
- Effet “laisser filer” sur les PR
- Nouvelle équipe sur des timezones différentes
-
Est-ce que la PR n’est pas la “pair programming” du pauvre ?
-
Sur plusieurs timezones, il est difficile de faire du pair => les PR sont sans doute plus efficaces pour ça
-
Si une PR reste en review trop longtemps => nécessite une séance de pair plutôt que de laisser vivre
-
Proposition de durée trop longue pour nécessiter une review en pair/mob : 3 jours
-
Problème de la review obligatoire : si au moins une personne est nécessaire pour une review, ça n’inclue pas le pair/mob
-
Supprimer une PR => souvent mal vu par son auteur/autrice ; plus simple lorsque la décision est collégiale
-
Problème des (story) points => difficile de prendre de la hauteur pour ne pas laisser trop vivre longtemps une PR
-
On a beaucoup moins de soucis avec du Pair Programming qu’avec des PR en général
-
Suite à un Pair, la PR peut permettre de prendre de la hauteur
-
Possible de review à chaque commit
-
Utilisation d’une PR à titre d’exemple sans but d’être fusionné
-
Apport du “craft” : détachement de l’humain de la PR
Salle 2
- [Jérémy] Propriétés d’une PR/MR : Quelle taille max ? Faut-il séparer feature et refacto ? Faut il une PR pour tout ?
- [Nolwenn] Faut-il toujours demander des relectures ?
- Plus c’est long, plus c’est compliqué à relire
- Un rename peut impacter N classes, pas intéressant
- S’efforcer de faire plusieurs commits pour faciliter la relecture plutôt qu’un énorme commit
- Organisation : par défaut on review et y’a des exceptions VS l’inverse
- Limiter la taille d’une MR :
- Découper le problème : domaine, puis ports secondaires, puis ports primaires…
- Si grosse refacto identifiée sur code legacy => Kent beck => MR de refacto puis MR de feature
- Pas besoin de relecture : modifications automatiques
- Code Scene => analyse de l’utilisation du code
- Code Red: The Business Impact of Code Quality (par le créateur de codescene) ->https://www.youtube.com/watch?v=X2RdwmPqBvQ
- Feature + refacto ? Rendre le changement simple avant de faire le changement
Salle 3
- *[Tlaop] Checklists/standards de relecture de PR ?
- Une checklist différente par PR (en fonction du niveau de séniorité, des tâches, du parcours [ex : reconversion])
- Plutôt junior : nommage, tests, extraction de méthode, … (ça tient en un écran). On n’utilisera pas la terminologie craft, les noms de patterns, … (aider à prendre confiance)
- on peut se permettre de laisser passer des erreurs
- “injustice”
- En open-source ce sera complètement différent
- les fameuses micro-PR de renommage, … du round précédent c’est ça
- chaque personne tend à faire des erreurs qui leurs sont spécifiques (typos, visibilité, …)
- se limiter dans le nombre de retours par PR
- Conventional comments : https://conventionalcomments.org/
- Faire la review avec la personne plutôt que de mettre des commentaires (bonus: facilite le mentoring)
- les joies des PRs en open-source (barrières de langues et cultures, temporalité des merges, …)
ROTI :
- 3 : 3
- 3.5 : 2
- 4 : 5
- 5 : 2