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

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
  2. 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
  3. @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'
  4. @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 %
  5. Accelerate Capabilities Continuous Delivery (8) Architecture (2) Product & Process

    (4) Lean Management & Monitoring (5) Cultural (5) Metrics Success
  6. @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
  7. @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
  8. @yot88 #ATN21 eXtreme programming Méthodeagile née en 95 / 96

    Kent beck majoritairement 5 valeurs Des Pratiques (d’ingénieurie) Boucles de feedback
  9. @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
  10. 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
  11. @yot88 #ATN21 Qu’est ce qu’on y ajouterait en 2021 ?

    Sûrement quelques pratiques techniques
  12. @yot88 #ATN21 Mob programming • renforcer le collective ownership /

    s’aligner • diffuser la connaissance • apprendre ensemble
  13. @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
  14. @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
  15. @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
  16. @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
  17. @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
  18. @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
  19. @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
  20. 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
  21. @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
  22. @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
  23. 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
  24. @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 • …
  25. @yot88 #ATN21 Savoir être / communication • Pour bien vivre

    en équipe • Se comprendre les uns les autres CNV Donner / recevoir du feedback pnl
  26. @yot88 #ATN21 Facilitation (interactions, ateliers) Événements (rétrospectives, stand-ups, …) Event

    storming, story mapping, Casser les silos / alignement Liberating structures 7 P Canvas
  27. @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, …) …
  28. @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
  29. @yot88 #ATN21 Learning hours / mentoring Code katas Deliberate practice

    M.E.N.T.O.R model Mission Engagement Networking Trust Opportunity Review / Renewal
  30. @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
  31. @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ù
  32. @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/
  33. – 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
  34. 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
  35. 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