65
#AgileLaval16 #codeReview La relecture de code : avant tout des pratiques ! Eric SIBER - @esiber

[Agile Laval 2016] La relecture de code : avant tout des pratiques

Embed Size (px)

Citation preview

Page 1: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16#codeReview

La relecture de code : avant tout des pratiques !

Eric SIBER - @esiber

Page 2: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Merciànossponsorsetànospartenaires

#AgileLaval16

Page 3: [Agile Laval 2016] La relecture de code : avant tout des pratiques

© Geek & Poke

#AgileLaval16 #codeReview @esiber

But de la présentation

Page 4: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Une orientation selon le manifeste agile :

●  Les individus et leurs interactions plus que les processus et les outils

●  Des logiciels opérationnels plus qu’une documentation exhaustive

●  La collaboration avec les clients plus que la négociation contractuelle

●  L’adaptation au changement plus que le suivi d’un plan

#AgileLaval16 #codeReview @esiber

Page 5: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Qui suis-je ?

#AgileLaval16 #codeReview @esiber

Dans le monde du service en IT, en Région Parisienne depuis plus de 10 ans : ●  Agile Java Craftsman ●  Creative Ecosystem Organizer ●  Runner et Papa 2.0

Page 6: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Qui suis-je ?

Dans le monde du service en IT, en Région Parisienne depuis plus de 10 ans : ●  Agile Java Craftsman ●  Creative Ecosystem Organizer ●  Runner et Papa 2.0

Sur le plan communautaire : ●  Membre actif, modérateur, rédacteur et responsable

bénévole Java sur Developpez.com de 2005 à 2009 ●  Co-organisateur de la conférence Agile France en 2013 ●  Interventions en conférence (Scrum Day, Agile Toulouse,

Breizhcamp, Agile France) #AgileLaval16 #codeReview @esiber

Page 7: [Agile Laval 2016] La relecture de code : avant tout des pratiques

De quoi va-t-on parler ?

●  Bénéfices attendus ●  Quelques statistiques ●  Typologies de relectures ●  Aspects humains ●  Scope de la relecture (le quoi, le quand) ●  Facteurs clés de succès ●  Eléments disruptifs ●  Quelques références

#AgileLaval16 #codeReview @esiber

Page 8: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Qui estime avoir déjà fait de la relecture de code ?

#AgileLaval16 #codeReview @esiber

Page 9: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Qui estime avoir déjà bénéficié d’une relecture de code ?

#AgileLaval16 #codeReview @esiber

Page 10: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 11: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 12: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 13: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 14: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 15: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 16: [Agile Laval 2016] La relecture de code : avant tout des pratiques

«A"erexperiencingthebenefitsofpeerreviewsfornearlyfi*eenyears,Iwouldneverworkinateamthatdidnotperformthem»

#AgileLaval16 #codeReview @esiber

Page 17: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 18: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 19: [Agile Laval 2016] La relecture de code : avant tout des pratiques

« the average effectiveness of design and code inspections are 55 and 60 percent »

« software testing alone has limited effectiveness -- the average defect detection

rate is only 25 percent for unit testing, 35 percent for function testing, and 45 percent for

integration testing »

#AgileLaval16 #codeReview @esiber

Page 20: [Agile Laval 2016] La relecture de code : avant tout des pratiques

« A study of an organization at AT&T with more than 200 people reported a 14 percent

increase in productivity and a 90 percent decrease in defects after the organization

introduced reviews. »

Source : “Code Complete”

#AgileLaval16 #codeReview @esiber

Page 21: [Agile Laval 2016] La relecture de code : avant tout des pratiques

« In a group of 11 programs developed by the same group of people, the first 5 were developed without reviews. The remaining 6 were developed with reviews. After all the programs were released to production, the first 5 had an average of 4.5 errors per 100 lines of code. The 6 that had been inspected had an average of only 0.82 errors per 100. Reviews cut the errors by over 80 percent. »

Source : “Code Complete”

#AgileLaval16 #codeReview @esiber

Page 22: [Agile Laval 2016] La relecture de code : avant tout des pratiques

SOFTWARE QUALITY TOOLS FOR THE CONNECTED WORLD

#AgileLaval16 #codeReview @esiber

Page 23: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Expérience d’un client sur un projet de 10 000 LOC avec 10 développeurs : ●  les anomalies détectées par l’homologation et les utilisateurs

sur une période de 6 mois ont été consignées ●  un groupe de développeur a fait une revue de code sur la

même base de code initial et a identifié 162 bugs supplémentaires

●  d’après des métriques ils ont estimé que la revue de code aurait pu réduire de 50% le coût de correction des anomalies

Source:BestKeptSecretsofPeerCodeReview

#AgileLaval16 #codeReview @esiber

Page 24: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 25: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Over The Shoulder –

Face to face

#AgileLaval16 #codeReview @esiber

Page 26: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Typologies de relecture à posteriori

#AgileLaval16 #codeReview @esiber

Page 27: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Email pass around

#AgileLaval16 #codeReview @esiber

Page 28: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Assisté par un outil dédié #AgileLaval16 #codeReview @esiber

Page 29: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 30: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 31: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 32: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Typologies de relecture : variantes

●  Réunions de type revue / relecture de code ●  Plusieurs intervenants (de 3 à 6) ●  Différents rôles attribués ●  « Formal Inspections » (défini comme une 5ème typologie

dans Best Kept Secrets of Peer Code Review) ●  Mob Programming ●  Remote Pair-programming ●  Partage de bureau à distance ●  VS Anywhere ●  Eclipse Saros

#AgileLaval16 #codeReview @esiber

Page 33: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 34: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Propriété collective du code (collective ownership) Responsabilité partagée

#AgileLaval16 #codeReview @esiber

Page 35: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Quand relisez vous votre code ?

#AgileLaval16 #codeReview @esiber

Page 36: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 37: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 38: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Sentiment d’envahissement ?

Comment appréhender d’être relu ?

o  C’est le code qui est évalué, pas son auteur

#AgileLaval16 #codeReview @esiber

Page 39: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Comment appréhender d’être relu ?

Source:h@p://www.Cvix.com/blog/everyone-loves-a-good-book/

#AgileLaval16 #codeReview @esiber

Page 40: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Augmentation de ses exigences ? o  Davantage d’efforts dans la rédaction du

code ?

Comment appréhender d’être relu ?

#AgileLaval16 #codeReview @esiber

Page 41: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Attendre ou solliciter la relecture ?

o  Crainte de la relecture ? o  Frustration de ne pas avoir de feedback ?

Comment appréhender d’être relu ?

#AgileLaval16 #codeReview @esiber

Page 42: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Evaluer le code, pas son auteur ●  Poser des questions

○  Chercher à comprendre le raisonnement suivi ○  Eviter le « pourquoi » trop accusateur

●  Conseiller plutôt que réprimander ●  Ne pas chercher systématiquement à

imaginer comment on aurait fait soi même

○  Il y toujours plusieurs solutions à un problème

Comment s’y prendre pour relire ?

#AgileLaval16 #codeReview @esiber

Page 43: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Illustre une absence de pédagogie ●  Justifié ou non, l’auteur initial n’aura rien

appris et continuera à faire ce type d’erreur ●  Risque de conflit et de défiance / compétition

Les dérives de la modification directe du code

Ces conseils peuvent s’appliquer hors revue de code !

#AgileLaval16 #codeReview @esiber

Page 44: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Jeu de rôle pour le candidat o  Relire un code existant qu’on lui présente o  Subir la relecture sur un code qu’il a produit o  Situation de Pair-programming

●  Les aspects humains comptent pour 50%, autant que les aspects techniques

L’exercice de relecture peut s’appliquer dans le cadre d’un entretien de recrutement

#AgileLaval16 #codeReview @esiber

Page 45: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 46: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Un ensemble de ressources remplissant une fonction ?

●  Un différentiel lié à la mise en place d’une nouvelle fonctionnalité ?

●  Une couche applicative ? ●  Etc.

Quoi ?

#AgileLaval16 #codeReview @esiber

Page 47: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 48: [Agile Laval 2016] La relecture de code : avant tout des pratiques

●  Projet terminé ? ●  Fonctionnalité livrée sur un environnement

donné ? ●  Itération de développement terminée ? ●  Développement d’une fonctionnalité

complète terminée ? ●  Code propagé ?

Quand (dans le cycle de vie) ?

#AgileLaval16 #codeReview @esiber

Page 49: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Focus sur le commit, 2 nuances à considérer •  Pre-commit review •  Post-commit review

Quand (dans le cycle de vie) ?

Source:h@p://devmag.fr/pourquoi-il-vous-faut-adopter-les-pull-requests/

#AgileLaval16 #codeReview @esiber

Page 50: [Agile Laval 2016] La relecture de code : avant tout des pratiques

•  Moins intrusif qu’une intervention sur une anomalie de production (sauf s’il faut relire la correction)

•  L’impact est lié au workflow employé

Ne pas négliger l’interruption de l’activité courante

#AgileLaval16 #codeReview @esiber

Page 51: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Le quand et le quoi sont à confronter à un aspect quantitatif

Une tendance •  Le plus souvent •  La plus petite unité de code (le moins

longtemps)

#AgileLaval16 #codeReview @esiber

Page 52: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 53: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Respect du code ●  Le résultat des relectures ne le surcharge

pas ●  Le code conserve sa lisibilité naturelle

#AgileLaval16 #codeReview @esiber

Page 54: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 55: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 56: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 57: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 58: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Ce qui a fait évoluer les pratiques dans le passé récent

•  Les DVCS (ex. Git) et l’apparition de workflows de développement

•  Les interactions avec les plateformes d’intégration continue (PIC)

•  Le Cloud comme support aux 2 outils précédemment mentionnés

#AgileLaval16 #codeReview @esiber

Page 59: [Agile Laval 2016] La relecture de code : avant tout des pratiques

Quelques prédictions / tendances pour l’avenir (déjà bien en route)

•  Elaboration de solutions ALM complètes o  Poussé par la tendance Cloud o  Favorisé par l’évolution des technologies Web tel HTML5

•  Percée des Web-IDE o  Encore davantage d’interactions o  Favorisé par l’évolution des technologies Web tel HTML5

•  Solutions de type realtime sharing (ex. Google Docs)

#AgileLaval16 #codeReview @esiber

Page 60: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16 #codeReview @esiber

Page 61: [Agile Laval 2016] La relecture de code : avant tout des pratiques

hDp://www.amazon.com/Code-Complete-PracJcal-Handbook-ConstrucJon/dp/0735619670/

#AgileLaval16 #codeReview @esiber

Page 62: [Agile Laval 2016] La relecture de code : avant tout des pratiques

hDp://www.amazon.com/Peer-Reviews-SoSware-PracJcal-Guide/dp/0201734850/

#AgileLaval16 #codeReview @esiber

Page 63: [Agile Laval 2016] La relecture de code : avant tout des pratiques

hDp://www.amazon.fr/The-Psychology-Computer-Programming-Anniversary/dp/0932633420

#AgileLaval16 #codeReview @esiber

Page 64: [Agile Laval 2016] La relecture de code : avant tout des pratiques

hDp://www.amazon.com/Best-Kept-Secrets-Peer-Review/dp/1599160676hDp://smartbear.com/SmartBear/media/pdfs/best-kept-secrets-of-peer-code-review.pdf

#AgileLaval16 #codeReview @esiber

Page 65: [Agile Laval 2016] La relecture de code : avant tout des pratiques

#AgileLaval16#codeReview

La relecture de code : avant tout des pratiques !

Eric SIBER - @esiber