$30 off During Our Annual Pro Sale. View Details »

50 nuances de pratiques de Dev @AgileNantes

Yoan
November 04, 2021

50 nuances de pratiques de Dev @AgileNantes

Il y a une vingtaine d'années a émergé Extreme Programming (XP) et des pratiques de développement telles que le pair programming, TDD ou encore le refactoring qui est au centre de la méthode.

C'était il y a déjà plus de 2 décennies...

Depuis de nouvelles pratiques ont émergées permettant aux équipes de développement d'être encore plus performantes.

Ca ressemblerait à quoi XP en 2021 si on devait faire une mise à jour ?

Durant cette session on partagera ensemble nos pratiques du quotidien à ajouter dans XP2021 pour devenir encore plus efficient et livrer plus de valeur.
Chacun-e pour partager ses techniques et je vous partagerai également mon point de vue sur la question :
* Property-Based Testing
* Approval Testing
* Mob Programming
* Domain Driven Design
* Les communautés de pratiques
* ...

Yoan

November 04, 2021
Tweet

More Decks by Yoan

Other Decks in Education

Transcript

  1. @yot88
    #ATN21
    Vendredi 5 novembre à 9h
    Partageons ensemble nos pratiques du
    quotidien pour devenir encore plus efficient,
    livrer plus de valeur et apprendre en continu.
    50 nuances de
    pratiques de dév
    Yoan THIRION

    View Slide

  2. @yot88
    #ATN21
    Agile Tour Nantais 2021 #ATN21

    View Slide

  3. Who am I ?
    Technical Agile coach, Software craftsman
    I’m Yoan THIRION (freelance)
    • design software since more than 12 years
    • fundamental to succeed in that area : agility and technical excellence
    • help teams deliver well crafted software
    • implementation of agile and technical practices (eXtreme programming, Refactoring, DDD, Mob programming, …)
    Let’s connect
    My services
    https://www.yoan-thirion.com/
    Technical agile coaching Communities of practice Cultural change
    devops Brown bags Serious games

    View Slide

  4. @yot88
    #ATN21
    Question
    Selon vous, quels sont les ingrédients secrets qui permettent à une équipe de
    développement d'atteindre ses objectifs ?
    • En pair – 5’
    • En groupe, échangez et regroupez vos idées – 5’
    • Tous ensemble - 5'

    View Slide

  5. View Slide

  6. @yot88
    #ATN21
    Accelerate
    • Un développement logiciel efficace est important pour le succès de l'organisation
    • Vous pouvez mesurer objectivement l'efficacité du développement
    • Certains comportements et pratiques techniques permettent d'obtenir de meilleurs résultats.
    Type Metric Elite Low
    THROUGHPUT
    Deployment Frequency Multiple per day 1 - 6 months
    Lead Time for Changes Less than 1 day 1 - 6 months
    STABILITY
    Mean Time to Restore Less than 1 hour 1 - 4 weeks
    Change Failure Rate 0 - 15 % 46 - 60 %

    View Slide

  7. Accelerate
    Capabilities
    Continuous Delivery (8)
    Architecture (2)
    Product & Process (4)
    Lean Management & Monitoring (5)
    Cultural (5)
    Metrics Success

    View Slide

  8. @yot88
    #ATN21
    Accelerate results
    Continuous
    Delivery (CD)
    Automated deployment
    Continuous Integration (CI)
    Continuous Testing
    Loosely-Coupled Architecture
    Automated security
    Database agility
    Less
    Burnout
    Less
    Deployment
    Pain
    Reach
    Organizational
    Goals
    Technical Practices
    https://cloudplatformonline.com/2018-state-of-devops.html

    View Slide

  9. @yot88
    #ATN21
    Accelerate results
    Continuous
    Delivery (CD)
    Automated deployment
    Continuous Integration (CI)
    Continuous Testing
    Loosely-Coupled Architecture
    Trunk-Based Development
    Monitoring & Observability
    Less
    Burnout
    Less
    Deployment
    Pain
    Reach
    Organizational
    Goals

    View Slide

  10. @yot88
    #ATN21
    Quel est le rapport avec XP ?

    View Slide

  11. @yot88
    #ATN21
    eXtreme programming
    Méthodeagile née en 95 / 96
    Kent beck majoritairement
    5 valeurs
    Des Pratiques (d’ingénieurie)
    Boucles de feedback

    View Slide

  12. @yot88
    #ATN21
    eXtreme programming
    5 valeurs
    Communication
    Courage
    Feedback
    Respect
    Simplicité
    Méthodeagile née en 95 / 96
    Kent beck majoritairement
    Pratiques associées Boucles de feedback

    View Slide

  13. @yot88
    #ATN21
    XP : 1 source d’inspiration
    https://www.linkedin.com/posts/maurostrione_scrum-agile-devops-activity-6650103984235298819-Zb5a

    View Slide

  14. Xp et Accelerate
    Source : https://www.slideshare.net/OCTOTechnology/accelerate-la-vitesse-conditionne-lexcellence

    View Slide

  15. Xp et Accelerate
    Source : https://www.slideshare.net/OCTOTechnology/accelerate-la-vitesse-conditionne-lexcellence
    Coding Standard
    Refactoring
    Continuous Integration
    Test Driven Development
    Pair Programming
    Customer Tests
    Planning game
    Small Releases
    Metaphor
    Simple Design
    Whole team
    Collective ownership
    Sustainable pace

    View Slide

  16. @yot88
    #ATN21
    Qu’est ce qu’on y ajouterait en
    2021 ?
    Sûrement quelques pratiques techniques

    View Slide

  17. View Slide

  18. @yot88
    #ATN21
    Mob programming
    • renforcer le collective ownership / s’aligner
    • diffuser la connaissance
    • apprendre ensemble

    View Slide

  19. @yot88
    #ATN21
    approval testing
    • Aussi appelé : Snapshot Tests ou Golden Master
    • outputs qui ont besoin d’une approbation humaine permettant de dire si la fonctionnalité est implémentée comme attendue
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/gilded-rose-approval-testing
    Moins d’assertions / moins de tests
    Must have pour travailler sur du code legacy
    Un atout pour du TDD

    View Slide

  20. @yot88
    #ATN21
    Property-based testing
    • identifier et tester des invariants / propriétés
    • quelque chose qui sera toujours vrai, quelles que soient les données que vous fournissez à votre algorithme
    for all (x, y, ...)
    such that property (x, y, ...)
    is satisfied
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/improve-your-software-quality-with-property-based-testing
    Given (x, y, ...)
    When I [call the subject under test] with (x, y, ...)
    Then I expect this (output)
    Example-based
    property-based

    View Slide

  21. @yot88
    #ATN21
    Mikado
    • décomposer les tâches de refactoring en plus petites
    • le code ne se trouve pratiquement JAMAIS DANS un état instable.
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/mikado-method
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/refactoring-journey-kata

    View Slide

  22. @yot88
    #ATN21
    CODE analysis
    Static + Comportemental
    Ne pas attendre la fin pour en utiliser
    Commencer dès les premières minutes
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/software-design-x-rays/workshop
    Hotspot analysis
    Code coupling
    Knowledge diffusion
    System Health

    View Slide

  23. @yot88
    #ATN21
    Domain driven design
    • Une approche de développement
    • Des patterns stratégiques / tactiques
    TACTICAL
    STRATEGIC
    https://yoan-thirion.gitbook.io/knowledge-base/software-architecture/ddd-re-distilled

    View Slide

  24. @yot88
    #ATN21
    Consumer driven contract
    • Améliorer le design et le testing de vos micro-services
    • Approche de testing orientée “consumer” / Contrat
    • Éviter les problèmes d’intégration
    • Valider constamment que nos services sont en capacité de se comprendre
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/testing/improve-the-design-and-
    testing-of-your-micro-services-through-consumer-driven-contract-tests

    View Slide

  25. @yot88
    #ATN21
    mutation testing
    Une technique permettant de jauger de la qualité de nos tests
    • Generate mutants
    • Launch tests
    • Check result / Generate report
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/testing/mutation-testing

    View Slide

  26. Design sessions
    1) Open a new item 2) Agree on item’s definition 3) Align on flows to implement
    4) Write the code Skeleton
    Pojos
    Domains
    Contracts, …
    todos
    agree on the naming / parameters / contracts
    5) part or whole team works on
    the implementation
    Whole team
    or
    Puzzle Driven Development
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/practices/design-sessions

    View Slide

  27. @yot88
    #ATN21
    • capturer les décisions d’architecture afin de comprendre pourquoi et leurs conséquences
    • log les éléments qui ont justifié une décision
    Architecture decision records

    View Slide

  28. @yot88
    #ATN21
    Tech radar
    • Une seule source de vérité : qu’est-ce qu’on doit/peut utiliser
    • Organiser le veille technologique de l’organisation
    https://github.com/ythirion/tech-radar-hugo

    View Slide

  29. co-design
    architecture
    sécu ops
    tech leads / dev experts
    porteur de la
    vision technique
    techradar
    Co-designs
    co-construit
    diffuse
    participe / propose
    participe / propose
    participe / propose
    participe / propose
    alimente
    knowledge
    base
    adr
    matérialisée par
    Solution design
    https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/practices/co-designs

    View Slide

  30. @yot88
    #ATN21
    Et plein d’autres…
    • CQRS / Event sourcing
    • Consumer driven contract testing
    • 12 Factor apps
    • Functional programming paradigms
    • Functional core imperative shell
    • …
    https://www.thoughtworks.com/radar
    • Togaf
    • Enterprise Integration patterns
    • Micro-services
    • ATDD / BDD
    • Cloud computing
    • …

    View Slide

  31. @yot88
    #ATN21
    La technique mais pas que…
    Pour bien vivre en équipe ?

    View Slide

  32. @yot88
    #ATN21
    Savoir être / communication
    • Pour bien vivre en équipe
    • Se comprendre les uns les autres
    CNV
    Donner / recevoir du feedback
    pnl

    View Slide

  33. @yot88
    #ATN21
    Facilitation (interactions, ateliers)
    Événements (rétrospectives, stand-ups, …)
    Event storming, story mapping,
    Casser les silos / alignement
    Liberating structures
    7 P Canvas

    View Slide

  34. @yot88
    #ATN21
    leadership
    Host leadership
    https://yoan-thirion.gitbook.io/knowledge-base/leadership/learn-leadership-from-the-navy-seals

    View Slide

  35. @yot88
    #ATN21
    Coacher / enseigner
    Solution focus

    View Slide

  36. @yot88
    #ATN21
    Pour résumer

    View Slide

  37. @yot88
    #ATN21
    DDD / CQRS / ES
    Clean Architecture
    12 Factor apps
    Functional core imperative shell
    Togaf
    Enterprise Integration patterns
    Micro-services

    Approches de test : tdd (classic / outside-in),
    pbt, mutation, Approval, …
    cdc
    Clean Code
    Techniques de refactoring
    Mob programming
    Functional programming

    Leadership, (M3.0, extreme ownership, host leadership…)
    Facilitation (event storming, story mapping, liberating structures, …)
    Coaching (grow, solution focus, …)
    Enseignement (training from the back of the room)
    Communication (CNV, PNl, …)

    View Slide

  38. Apprentissage continu

    View Slide

  39. @yot88
    #ATN21
    Apprentissage continu…
    mais comment ?

    View Slide

  40. @yot88
    #ATN21
    Apprentissage continu

    View Slide

  41. @yot88
    #ATN21
    Communauté de pratiques
    • connecter les gens / casser les silos
    • partager la connaissance
    • Apprendre ensemble
    • résoudre des problèmes (intelligence collective)
    https://yoan-thirion.gitbook.io/knowledge-base/agile-coaching/how-to-run-a-community-of-practices-cop

    View Slide

  42. @yot88
    #ATN21
    Learning hours / mentoring
    Code katas
    Deliberate practice
    M.E.N.T.O.R model
    Mission
    Engagement
    Networking
    Trust
    Opportunity
    Review / Renewal

    View Slide

  43. @yot88
    #ATN21
    xtrem(s)
    • Stimuler l’intelligence collective
    o Lecture
    o Veille technologique
    • Partager connaissance / Passions
    • Apprendre en groupe
    Des ouitils pour tendre vers l’entreprise apprenante
    XTREM Watch
    XTREM reading

    View Slide

  44. @yot88
    #ATN21
    Conférences / meetups
    • Apprendre des autres
    • Se tenir à jour
    La situation sanitaire a poussé les événements à se faire en ligne
    Sur tout, depuis n’importe où

    View Slide

  45. @yot88
    #ATN21
    Coaching technique
    Aider les équipes à grandir :
    Learning hours, code katas, pair programming, mob programming, agile, coaching, …
    https://philippe.bourgau.net/the-story-about-how-we-do-agile-technical-coaching/

    View Slide

  46. – Allan Kelly
    Mettez en place ce qui fait du sens dans votre contexte : expérimentez / apprenez
    "create your own process, don’t follow someone else’s
    prescription.” - allan kelly

    View Slide

  47. J’ai appris beaucoup, mais ça
    ne s’applique pas pour moi
    J’ai appris beaucoup
    Et je peux l’appliquer
    Niveau de connaissances acquises
    Applicabilité de cette connaissance
    Je n’ai pas appris grand chose et
    celà ne s’applique pas pour moi
    Je peux appliquer le peu que
    j’ai appris

    View Slide

  48. View Slide

  49. merci
    Technical Agile coach, Software craftsman
    On reste connecté
    https://www.yoan-thirion.com/
    https://www.yoan-thirion.com/files/brown-bag-offer.pdf
    Mes brown bags

    View Slide