Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sur le chemin de la qualité : en équipe et dès demain !

Sur le chemin de la qualité : en équipe et dès demain !

Ça y est ! C’est décidé ! Vous allez construire des applications de meilleure qualité. Vous êtes convaincu•e que, pour cela, certaines pratiques de développement sont fondamentales comme par exemple les revues de code ou les tests unitaires automatisés.

Mais le problème, c’est que vos collègues n’en font pas. Parce que « c’est trop cher on n’a pas le temps », « je ne connais pas », « on ne m’écoutera pas », « ça ne marchera pas chez nous », « je crains les remarques sur mon code »…

Comment aider votre équipe ?

Après cette conférence, quand vous reviendrez sur votre plateau projet, vous aurez quelques éléments à essayer tout de suite. Et peut-être de quoi élaborer un plan de bataille pour que vous et votre équipe soyez fiers de votre code et ainsi conquérir le monde ! 😉

Julien Jakubowski

June 14, 2019
Tweet

Other Decks in Programming

Transcript

  1. OCTO Part of Accenture Digital © 2019 - All rights reserved

    View full-size slide

  2. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Qui suis-je ?
    Julien Jakubowski
    Consultant-codeur
    OCTO Nord
    @jak78

    View full-size slide

  3. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤C’est mon vécu
    ¤Ça ne se passera pas comme prévu
    ¤Contexte :
    >Equipe < 10 personnes
    colocalisées
    >L’équipe souffre de la non-qualité
    >Pas de blocage par le
    management
    DISCLAIMERS

    View full-size slide

  4. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Donc vous voulez
    changer les choses ?
    5

    View full-size slide

  5. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Attention à la condescendance

    View full-size slide

  6. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤Humilité, au service de l’équipe
    ¤Bien connaître ce que l’équipe veut
    améliorer
    Adopter la bonne posture, au service de l’équipe

    View full-size slide

  7. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤A quoi on reconnaît une qualité de code
    insuffisante ?
    ¤S’intéresser aux impacts de la non-qualité,
    ce que tout le monde voit
    Un problème de qualité ?

    View full-size slide

  8. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Impacts de la non-qualité
    ¤Time to market plus long
    ¤Indisponibilités accrues
    ¤Désengagement des
    développeurs

    View full-size slide

  9. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    "If you can not measure it, you can not improve it. » -
    Lord Kelvin

    View full-size slide

  10. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Mesurer
    ¤Nombre d’anomalies par
    fonctionnalités/User Story
    ¤Nombre d’anomalies
    détectées avant une
    MEP/une livraison

    View full-size slide

  11. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    >Trouver les plus grosses douleurs
    >Connaître ce qui a déjà été essayé et les blocages
    rencontrés
    Phase d’observation et d’imitation - buts

    View full-size slide

  12. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Phase d’observation et d’imitation – 2 semaines
    ¤Faire comme fait l’équipe
    et taire ses réflexes
    ¤Observer:
    > Fiertés et douleurs
    > Symptômes et Dixits
    Designed by Freepik

    View full-size slide

  13. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    >Des commits le soir voire la nuit
    >Une moyenne de 5 livrables par itération
    >Nombre de bugs dans le backlog en
    augmentation
    Phase d’observation et d’imitation – symptômes
    #DevoxxFR #TechLead @damienbeaufils

    View full-size slide

  14. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    > « Le build est rouge mais c’est normal. Relance-le et ça
    devrait passer »
    > « Tester unitairement c’est compliqué sur le projet »
    > « On reçoit tellement de mails de Jenkins qu’on ne les lit
    plus »
    > « Hier j’ai passé mon après-midi à essayer de corriger le
    build »
    Phase d’observation et d’imitation – exemples de dixits
    #DevoxxFR #TechLead @damienbeaufils

    View full-size slide

  15. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Par où commencer ?
    Git
    TDD
    Pair programming
    Continuous integration Méthodes plus petites
    BDD DDD
    « ça marche sur ma machine pourtant »
    Build plus rapide
    Moins de couplage
    Standards
    Linter
    Selenium
    "

    View full-size slide

  16. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Par où commencer ?
    Problème
    concret,
    observé par
    l’équipe
    Amélioration
    Petit pas
    Observation
    des résultats

    View full-size slide

  17. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Voir les problèmes
    18

    View full-size slide

  18. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Management visuel
    2
    16
    13
    10
    5
    19
    6
    7
    3
    1
    12
    17
    21 9
    12
    16
    20
    15
    13
    27
    22
    17
    4
    8
    25
    14
    24
    11
    26
    18
    28
    29
    30
    33
    35
    38
    49
    45
    50
    31
    34
    32
    36
    17
    21
    40
    41
    47
    48
    43
    17
    37
    46
    25
    44
    39
    42
    1 2 3 4 5 6 7 8 9 10
    11 12 13 14 15 16 17 18 19 20
    21 22 24 25 26 27 28 29 30
    31 32 33 34 35 36 37 38 39 40
    41 42 43 44 45 46 47 48 49 50
    Où est le problème?
    Fig. 1 Fig. 2

    View full-size slide

  19. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Management visuel
    0
    100
    200
    300
    400
    500
    600
    700
    800
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    Stock de bugs

    View full-size slide

  20. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Management visuel - exemples de board

    View full-size slide

  21. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Rétrospective

    View full-size slide

  22. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Que faire quand il y a
    un bug ?
    23

    View full-size slide

  23. L’appli a planté

    View full-size slide

  24. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    L’appli a planté – on va fixer…
    Les utilisateurs n’ont plus accès à
    l’application
    Les requêtes plantent en
    NullPointerException
    La propriété nodeparams.country
    est null.
    è Pourquoi ?
    è Pourquoi ?
    è OK on va fixer

    View full-size slide

  25. Un mois plus tard…

    View full-size slide

  26. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Ce qu’on aurait pu faire
    Les utilisateurs n’ont plus accès à l’application Pourquoi ?
    Les requêtes plantent en NullPointerException Pourquoi ?
    La propriété nodeparams.country est null. Pourquoi ?
    Elle n’a pas été précisée lors du déploiement Pourquoi ?
    On l’a oublié Pourquoi ?
    è Contre-mesure : l’ajouter dans la checklist de déploiement

    View full-size slide

  27. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    5 pourquoi et contre-mesure
    Les clients ne reçoivent plus les devis par mail Pourquoi ?
    Le worker n’envoie plus les mails Pourquoi ?
    Le code échoue à parser une chaîne en date Pourquoi ?
    La méthode send(String body, String
    sendDate) a été appelée en inversant les
    arguments
    Pourquoi ?
    Le développeur n’a pas eu de feedback sur cette
    erreur
    Pourquoi ?
    èContre-mesure : donner un type Date à sendDate
    èPlus loin : code review ? Tests ? Standards de code ?
    Problème
    concret,
    observé
    par
    l’équipe
    Amélioratio
    n
    Petit pas
    Observatio
    n des
    résultats

    View full-size slide

  28. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Les pratiques de dev
    de qualité
    29

    View full-size slide

  29. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Comment j’ai introduit chaque pratique
    Simple à mettre en œuvre
    Douleurs observées
    On essaie maintenant
    On fait un 1er pas
    Douleurs que vous anticipez
    Pas tout de suite
    Pas tout de suite
    Difficile à mettre en œuvre

    View full-size slide

  30. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤Problèmes observés è nouvelle
    pratique
    ¤Exemplarité
    ¤Se faire des alliés
    Comment j’ai introduit chaque pratique

    View full-size slide

  31. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Comment j’ai introduit chaque pratique – first follower

    View full-size slide

  32. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤« On a trouvé 3 bugs en revue de
    code »
    ¤« J’ai apprécié… »
    ¤Rétrospective
    Ne pas oublier la comm !

    View full-size slide

  33. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤Exemples:
    >Revues de code
    >Pair programming
    >Live-codings, dojos…
    ¤Pourquoi en premier ?
    >Trouvent beaucoup de bugs
    >Communiquent
    >Donnent un terrain
    Pratiques collaboratives : souvent en premier

    View full-size slide

  34. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    La revue de code

    View full-size slide

  35. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Trouver un maximum de défauts au plus tôt
    Coût de correction
    Correction en : dev recette production

    View full-size slide

  36. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    National Software Quality Experiment:
    ROI de 4 pour 1
    Chez CISCO : 50% de réduction des défauts
    Le R.O.I. de la revue de code

    View full-size slide

  37. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Mesures des revues
    ¤Nombre de défauts trouvés
    ¤Nombre de lignes revues

    View full-size slide

  38. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Revue collective Revue par un pair Pair programming
    Efficience (nombre
    de défauts détectés)
    Communication,
    diffusion
    Facilité de mise en
    oeuvre
    Avantages Plus d’impact sur la
    qualité
    Plus facile à
    démarrer
    Montrer les
    pratiques
    A
    A
    B B
    B
    C A B
    Les pratiques collaboratives
    A

    View full-size slide

  39. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Pair programming, MOB programming
    > D’abord via des
    demandes d’aide
    > Followers
    > Devient peu à peu une
    habitude
    > Puis : MOB
    https://www.flickr.com/photos/f_mafra/11118328576

    View full-size slide

  40. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Revue de code et pair programming – objections
    « oui mais pendant qu’on revoit, on ne code
    pas, on perd du temps »

    View full-size slide

  41. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Revue de code et pair programming – objections
    « coder à 2, c’est aller 2x moins vite »

    View full-size slide

  42. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Gérer les objections
    Factualiser
    Essayer (timebox…)

    View full-size slide

  43. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Revue de code et pair programming – objections
    « critiquer mon code, c’est me critiquer moi »

    View full-size slide

  44. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    « critiquer mon code, c’est me critiquer moi »
    X Tu as fait une erreur
    √ Il y a un bug quand on met une
    chaîne vide
    X Ton code c’est de la m*rde
    √ Je vois une méthode de plus
    de 30 lignes, ce n’est pas notre
    standard

    View full-size slide

  45. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤Je donne l’exemple
    >Je commence par faire revoir mon code
    >Je travaille mon feedback: CNV, OSBD…
    ¤Revue collective : puissant, mais peut être
    intimidant au début
    Revue de code : comment commencer ?

    View full-size slide

  46. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Test Driven Development – comment j’ai commencé
    ☉Montrer le geste TDD : plus facile
    avec un minimum de pratiques
    collaboratives
    ☉Code existant : chaque bugfix =
    opportunité
    ☉Code neuf systématiquement en
    TDD

    View full-size slide

  47. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    « écrire des tests, ça prend trop de temps »
    « ça prend trop de temps d’ajouter des tests sur tout le code
    qu’on a déjà »
    « mon code n’est pas testable »
    Tests – 3 objections

    View full-size slide

  48. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Gérer sa motivation
    56

    View full-size slide

  49. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤Savourer les petites victoires
    ¤Observer les mesures
    ¤Se reposer sur les alliés
    Gérer sa motivation

    View full-size slide

  50. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    ¤Ne pas aller trop vite
    >Pratique bien intégrée ?
    >Constater l’impact
    >Résistances = information utile
    ¤Je n’ai pas le monopole des bonnes idées
    >Encourager les idées de changement venant de
    chacun
    Ecouter l’équipe

    View full-size slide

  51. Sur le chemin de la qualité : en équipe et dès demain ! @jak78
    Posture au service des objectifs de l’équipe
    Améliorations pas à pas, à partir des problèmes observés
    Ne pas se contenter de fixer un bug
    Revue de code et pair programming FTW!
    ¤ Pensez aux formations et à l’accompagnement
    ¤ Tenez-moi au courant de vos essais !
    L’essentiel
    @jak78
    [email protected]

    View full-size slide