Slide 1

Slide 1 text

@yot88 50 shades of Dev Practices

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

@yot88 miro https://miro.com/app/board/o9J_lX9CWeM=/

Slide 4

Slide 4 text

@yot88 Accelerate • Effective development matters for organizational success • You can measure development organizations effectiveness objectively • Particular behaviors and technical practice drive better metrics 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 %

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

@yot88 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

Slide 7

Slide 7 text

@yot88 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

Slide 8

Slide 8 text

@yot88 How does this relate to XP?

Slide 9

Slide 9 text

@yot88 eXtreme programming Agile method 95 / 96 Mainly Kent beck 5 values Engineering practices Feedback loops

Slide 10

Slide 10 text

@yot88 eXtreme programming 5 values Communication Courage Feedback Respect Simplicity Agile Methodfrom 95 / 96 Associated practices Feedback loops

Slide 11

Slide 11 text

@yot88 XP : an inspiration https://www.linkedin.com/posts/maurostrione_scrum-agile-devops-activity-6650103984235298819-Zb5a

Slide 12

Slide 12 text

Xp and 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

Slide 13

Slide 13 text

@yot88 What would we add in 2021? Probably some technical practices

Slide 14

Slide 14 text

@yot88 Mob programming • strengthen collective ownership / alignment • share knowledge • learn together

Slide 15

Slide 15 text

@yot88 approval testing • Also called : Characterization Tests OR Snapshot Tests or Golden Master • outputs that need human approval to say whether the functionality is implemented as expected https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/gilded-rose-approval-testing Less assertions/ less tests Must have to work on legacy code An asset for tdd Scrubbers : convert the non-deterministic text to something stable. Ex : Guid, Dates, …

Slide 16

Slide 16 text

@yot88 Property-based testing • identify and test invariants / properties • something that will always be true, no matter what data you provide to your algorithm 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

Slide 17

Slide 17 text

@yot88 Mikado • break down refactoring tasks into smaller ones • the code is almost NEVER in an unstable state. 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

Slide 18

Slide 18 text

@yot88 Domain driven design • A development approach • strategic and Tactical patterns TACTICAL STRATEGIC https://yoan-thirion.gitbook.io/knowledge-base/software-architecture/ddd-re-distilled

Slide 19

Slide 19 text

@yot88 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

Slide 20

Slide 20 text

@yot88 CODE analysis Static + behavioral Don’t wait the end of your projects to use them Start from the beginning https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/software-design-x-rays/workshop Hotspot analysis Code coupling Knowledge diffusion System Health

Slide 21

Slide 21 text

@yot88 mutation testing A technique to gauge the quality of our tests • Generate mutants • Launch tests • Check result / Generate report https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/testing/mutation-testing

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

@yot88 • capture architectural decisions to understand why and their consequences • log the elements that justified a decision Architecture decision records

Slide 24

Slide 24 text

@yot88 Tech radar • One source of truth: what should/may be used • Organize your technology watch https://github.com/ythirion/tech-radar-hugo

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

@yot88 And many others… • 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 • …

Slide 27

Slide 27 text

@yot88 Technique but not only... What do we need to live well as a team?

Slide 28

Slide 28 text

@yot88 Soft skills / communication • To live well as a team • Understand each other nvc Give / receive feedback NLP

Slide 29

Slide 29 text

@yot88 Facilitation (interactions, workshops) events (retrospectives, stand-ups, …) Event storming, story mapping, break silos / alignment Liberating structures 7 P Canvas

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

@yot88 Coaching / Teaching Solution focus

Slide 32

Slide 32 text

@yot88 To sum up

Slide 33

Slide 33 text

@yot88 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, …) Teaching (training from the back of the room) Communication (CNV, PNl, …) …

Slide 34

Slide 34 text

Continuous learning

Slide 35

Slide 35 text

@yot88 Continuous learning… how ?

Slide 36

Slide 36 text

@yot88 Continuous learning

Slide 37

Slide 37 text

@yot88 Community of practices • connect people / break down silos • share knowledge • learn together • solve problems (collective intelligence) https://yoan-thirion.gitbook.io/knowledge-base/agile-coaching/how-to-run-a-community-of-practices-cop

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

@yot88 xtrem(s) • stimulate collective intelligence with o Reading o Tech watch • share passions / knowledge • Learning as a group Tools to become a learning organization XTREM Watch XTREM reading

Slide 40

Slide 40 text

@yot88 Conferences / meetups • Learn from others • Stay up-to-date With covid a lot of online events On any topics, from anywhere

Slide 41

Slide 41 text

@yot88 Technical Coaching Help teams grow Learning hours, code katas, pair programming, mob programming, agile, coaching, … https://philippe.bourgau.net/the-story-about-how-we-do-agile-technical-coaching/

Slide 42

Slide 42 text

– Allan Kelly Implement what makes sense in your context: experiment / learn "create your own process, don’t follow someone else’s prescription.” - allan kelly

Slide 43

Slide 43 text

I learned a lot, but it doesn't apply to me I have learned a lot And I can apply it Level of knowledge acquired Applicability of this knowledge I didn't learn much And it doesn't apply to me I can apply what little I have learned

Slide 44

Slide 44 text

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