Quelle est l'utilité de la relecture de code ? Bonnes pratiques, mauvaises pratiques, comment s'y prendre pour mener cette tâche à bien malgré les obstacles organisationnels ?
Cette session vise à sensibiliser les participants à la problématique de relecture de code. Souvent ce sont les outils qui font le buzz, reléguant les pratiques et leur adoption au second plan. Loin des effets whaou de la démo d'un outil, je souhaite vous sensibiliser au pourquoi et comment, tout en illustrant par des pratiques : de la plus élémentaire à la plus tendance. Des pistes seront données à l'audience pour mettre en place ou renforcer la démarche qualité sur le terrain, ainsi que les références aux outils qui s'inscrirons dans ces pratiques.
A l'image du premier principe du manifeste agile (Les individus et leurs interactions plus que les processus et les outils), la présentation sera donc largement tournée sur l'humain, le relationnel, elle ne détaille ni ne fait la promotion d'un processus ou d'un outil donné de relecture de code (qui seront néanmoins mentionnés).
[BreizhCamp 2016] La relecture de code : avant tout des pratiques
1. BreizhCamp 2016 #BzhCmp
#codeReview #BzhCmp
BreizhCamp 2016 #codeReview #BzhCmp
La relecture de code :
avant tout des pratiques !
Eric SIBER - @esiber
@esiber
3. But de la présentation
BreizhCamp 2016 #codeReview #BzhCmp@esiber
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
4. Qui suis-je ?
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Dans le monde du développement en Région
Parisienne depuis plus de 10 ans, actuellement :
● Agile Java Craftsman chez Novedia, groupe VISEO
● Creative Ecosystem Architect pour VISEO Technologies
● Runner et Papa 2.0
5. Qui suis-je ?
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Dans le monde du développement en Région
Parisienne depuis plus de 10 ans, actuellement :
● Agile Java Craftsman chez Novedia, groupe VISEO
● Creative Ecosystem Architect pour VISEO Technologies
● 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
6. 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
BreizhCamp 2016 #codeReview #BzhCmp@esiber
15. Statistiques : ils en parlent
After experiencing the benefits of
peer reviews for nearly fifteen
years, I would never work in a
team that did not perform them
BreizhCamp 2016 #codeReview #BzhCmp@esiber
16. Statistiques : ils en parlent
BreizhCamp 2016 #codeReview #BzhCmp@esiber
17. Statistiques : ils en parlent
BreizhCamp 2016 #codeReview #BzhCmp@esiber
18. Statistiques : ils en parlent
BreizhCamp 2016 #codeReview #BzhCmp@esiber
“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”
19. Statistiques : ils en parlent
BreizhCamp 2016 #codeReview #BzhCmp@esiber
“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”
20. Statistiques : ils en parlent
BreizhCamp 2016 #codeReview #BzhCmp@esiber
“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”
21. Statistiques : ils en parlent
SOFTWARE QUALITY TOOLS FOR THE
CONNECTED WORLD
BreizhCamp 2016 #codeReview #BzhCmp@esiber
22. Statistiques : ils en parlent
BreizhCamp 2016 #codeReview #BzhCmp@esiber
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 : Best Kept Secrets of Peer Code Review
31. 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
BreizhCamp 2016 #codeReview #BzhCmp@esiber
37. Aspects humains
● Sentiment d’envahissement ?
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Comment appréhender d’être relu ?
o C’est le code qui est évalué,
pas son auteur
38. Aspects humains
● Augmentation de ses
exigences ?
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Comment appréhender d’être relu ?
Source : http://www.tivix.com/blog/everyone-loves-a-good-book/
o Davantage d’efforts dans
la rédaction du code ?
39. Aspects humains
● Attendre ou solliciter la relecture ?
o Crainte de la relecture ?
o Frustration de ne pas avoir de feedback ?
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Comment appréhender d’être relu ?
40. Aspects humains
● 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
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Comment s’y prendre pour relire ?
41. Aspects humains
● 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
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Les dérives de la modification directe du code
Ces conseils peuvent s’appliquer hors
revue de code !
42. Le scope de la relecture
BreizhCamp 2016 #codeReview #BzhCmp@esiber
43. Le scope de la relecture
● Un ensemble de ressources remplissant une
fonction ?
● Un différentiel lié à la mise en place d’une
nouvelle fonctionnalité ?
● Une couche applicative ?
● Etc.
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Quoi ?
44. Le scope de la relecture
● 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é ?
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Quand (dans le cycle de vie) ?
45. Le scope de la relecture
Focus sur le commit, 2 nuances à considérer
• Pre-commit review
• Post-commit review
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Quand (dans le cycle de vie) ?
Source : http://devmag.fr/pourquoi-il-vous-faut-adopter-les-pull-requests/
46. Le scope de la relecture
• Moins intrusif qu’une intervention sur une
anomalie de production (sauf s’il faut relire la
correction)
• L’impact est lié au workflow employé
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Ne pas négliger l’interruption de l’activité
courante
47. Le scope de la relecture
Le quand et le quoi sont à confronter à un
aspect quantitatif
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Une tendance
• Le plus souvent
• La plus petite unité de code (le moins
longtemps)
48. Facteurs clés de succès
BreizhCamp 2016 #codeReview #BzhCmp@esiber
49. Facteurs clés de succès
Respect du code
● Le résultat des relectures ne le surcharge
pas
● Le code conserve sa lisibilité naturelle
BreizhCamp 2016 #codeReview #BzhCmp@esiber
50. Facteurs clés de succès
BreizhCamp 2016 #codeReview #BzhCmp@esiber
L’importance de la visualisation
51. Facteurs clés de succès
BreizhCamp 2016 #codeReview #BzhCmp@esiber
L’importance de la visualisation
52. Facteurs clés de succès
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Centralisation et conservation d’un
historique des relectures
53. Facteurs clés de succès
BreizhCamp 2016 #codeReview #BzhCmp@esiber
Définition / renforcement d’un workflow de
travail
55. Eléments disruptifs
BreizhCamp 2016 #codeReview #BzhCmp@esiber
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
56. Eléments disruptifs
BreizhCamp 2016 #codeReview #BzhCmp@esiber
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)
62. BreizhCamp 2016 #BzhCmp
#codeReview #BzhCmp
BreizhCamp 2016 #codeReview #BzhCmp
La relecture de code :
avant tout des pratiques !
Eric SIBER - @esiber
@esiber
63. RDV à Agile France 2016
BreizhCamp 2016 #codeReview #BzhCmp@esiber
http://lanyrd.com/2016/agilefrance/