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

Introdurre il Developer Testing nelle organizzazioni

Introdurre il Developer Testing nelle organizzazioni

Un team eccellente si vede da due cose

Consegnano software di valore nelle mani degli utenti finali ogni settimana (massimo due)
Collaborano quotidianamente con il committente nella definizione del prodotto

Per poter sostenere queste due cose nel tempo, occorre l'eccellenza tecnica. La pratica del developer testing, che consiste a grandi linee di TDD, Acceptance Tests e ATDD, è un componente fondamentale dell'eccellenza tecnica, ma non è facile introdurla in un'organizzazione. I corsi, di per sé, non bastano, nemmeno i corsi hands-on; perché gli sviluppatori, una volta finito il corso, sanno risolvere il FizzBuzz a occhi chiusi, ma non sono in grado di applicare quello che hanno imparato alla codebase di produzione. Inoltre, le pressioni per consegnare garantiscono che il povero sviluppatore si affiderà alle pratiche che conosce bene, invece che alle pratiche nuove su cui non è ancora fluente.

Le due soluzioni che ho visto funzionare sono:

Arruolare un technical coach, preferibilmente uno che adotti il Samman Method
Fare co-delivery con un vendor che abbia internalizzato le pratiche (ad esempio Thoughtworks 😉)

Matteo Vaccari

November 22, 2023
Tweet

More Decks by Matteo Vaccari

Other Decks in Programming

Transcript

  1. © 2023 Thoughtworks | Confidential
    𝗜𝗻𝘁𝗿𝗼𝗱𝘂𝗿𝗿𝗲 𝗶𝗹
    𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿 𝘁𝗲𝘀𝘁𝗶𝗻𝗴
    𝗻𝗲𝗹𝗹𝗲 𝗼𝗿𝗴𝗮𝗻𝗶𝘇𝘇𝗮𝘇𝗶𝗼𝗻𝗶
    Matteo Vaccari, Technical Principal
    [email protected]

    View full-size slide

  2. © 2023 Thoughtworks | Confidential
    Che cosa significa high performance?
    2
    1. Consegnare software funzionante
    nelle mani degli utenti finali ogni
    settimana
    2. Collaborare quotidianamente con il
    committente per definire il prodotto
    Se siamo bravi,
    consegnamo nuove
    Feature in maniera
    più o meno lineare
    nel Tempo

    View full-size slide

  3. © 2023 Thoughtworks | Confidential
    Non è facile!
    3
    Se consegnamo bug,
    rallentiamo la consegna
    per le frequenti
    riparazioni
    Il test di
    non-regressione
    prende più tempo,
    a mano a mano che il
    software cresce

    View full-size slide

  4. © 2023 Thoughtworks | Confidential
    La pratica del developer testing
    Viene divulgata con
    Extreme Programming, un
    metodo che negli anni 2000
    era più popolare di Scrum
    4

    View full-size slide

  5. © 2023 Thoughtworks | Confidential
    Matteo Vaccari
    5
    Circa 2003 vengo a sapere di
    Extreme Programming
    2007->2012 Organizza un
    team XP in XPeppers
    (ora Claranet)
    2012-15 Freelance XP Coach
    2015 - Technical Principal
    in Thoughtworks
    2006-7-8 Co-organizza 3 Summer Schools a Varese
    2012-13 Co-organizza lo Italian Agile Day
    Started an internal
    TDD training
    program
    Il progetto
    Payment Gateway
    viene portato avanti dal
    2011 fino al 2021 almeno

    View full-size slide

  6. © 2021 Thoughtworks 6
    Australia / Brazil / Chile / China
    Ecuador / Finland / Germany / India
    Italy / Netherlands / North America
    Romania / Singapore / Spain
    Thailand / United Kingdom
    Thoughtworks is a
    software delivery
    consultancy.
    We excel with
    Extreme Programming
    and Lean
    11,500+
    Employees
    17
    Countries
    48
    Offices
    30+
    Years

    View full-size slide

  7. © 2023 Thoughtworks | Confidential
    Definiamo il developer testing
    7

    View full-size slide

  8. © 2023 Thoughtworks | Confidential
    Developer testing
    8
    Di chi è il compito di garantire che il codice prodotto dai programmatori sia corretto?
    a) È un compito degli sviluppatori
    b) È un compito di qualcun altro
    Developer testing significa:
    1. È compito degli sviluppatori assicurarsi che il codice che scrivono sia corretto
    2. Gli sviluppatori dimostrano che il codice è corretto tramite test automatici

    View full-size slide

  9. © 2023 Thoughtworks | Confidential
    TDD
    9
    Il Test-Driven Development è un
    processo descritto da Kent Beck
    nel 2001
    http://www.growing-object-oriented-software.com/figures.html

    View full-size slide

  10. © 2023 Thoughtworks | Confidential
    Microtests
    10
    Praticando TDD, gli sviluppatori scrivono microtest, ovvero
    test brevi che verificano un singolo comportamento di un singolo
    oggetto

    View full-size slide

  11. © 2023 Thoughtworks | Confidential
    Acceptance tests
    11
    Un Acceptance Test è un esempio
    concreto di una business rule
    Può essere implementato come test
    automatico
    Ha vari scopi:
    a) Comunicazione
    b) Limitare lo scope
    c) Non-regressione
    https://github.com/cucumber/cucumber-jvm/issues/1360

    View full-size slide

  12. © 2023 Thoughtworks | Confidential
    Acceptance-TDD or ATDD
    12
    ATDD crea un ponte fra gli
    acceptance test e i microtest
    http://www.growing-object-oriented-software.com/figures.html

    View full-size slide

  13. © 2023 Thoughtworks | Confidential
    Introdurre il developer testing
    nelle organizzazioni
    13

    View full-size slide

  14. © 2023 Thoughtworks | Confidential
    Perché introdurre il developer testing è difficile?
    14
    ● Skills
    ● Legacy code
    Il principale problema è la mancanza di skill
    negli sviluppatori
    Il TDD si può spiegare nella sua interezza in
    10 minuti
    Un corso di formazione fornisce le basi che
    consentono agli sviluppatori di risolvere
    problemi come il FizzBuzz
    The rules of the FizzBuzz game are very simple.
    ○ Return Fizz if the number is divisible by 3.
    ○ Return Buzz if the number is divisible by 5.
    ○ Return FizzBuzz if the number is divisible
    by both 3 and 5.
    ○ Else return the number itself

    View full-size slide

  15. © 2023 Thoughtworks | Confidential
    Perché introdurre il developer testing è difficile?
    15
    Finito il corso, gli
    sviluppatori
    tornano a lavorare
    nel codice di
    produzione

    View full-size slide

  16. © 2023 Thoughtworks | Confidential
    Perché introdurre il developer testing è difficile?
    16
    E la pressione per
    consegnare non
    aiuta

    View full-size slide

  17. © 2023 Thoughtworks | Confidential
    Come fare quindi?
    17
    Arruolare un technical coach,
    esperto in Extreme Programming
    Fare co-delivery su un progetto
    reale con un’azienda che pratica
    Extreme Programming
    Due maniere che funzionano:
    Community of Practice
    Champions
    Learning paths

    View full-size slide

  18. © 2023 Thoughtworks | Confidential
    Arruolare un technical coach
    18
    Usare il Samman method (Emily Bache)
    ○ Learning Hour: Lezioni partecipative focalizzate su uno specifico argomento
    ○ Ensemble Working: Sessioni per tutto il team, dove si applicano le tecniche sulla
    codebase reale
    ○ Tempo: 3-6 mesi

    View full-size slide

  19. © 2023 Thoughtworks | Confidential
    Co-delivery con un vendor che pratica XP
    ● Team split 50% vendor – 50% in-house
    ● Si applicano insieme le sensible default practices dal giorno 0
    ● Due obiettivi
    ○ Consegnare software di valore
    ○ Trasferire un metodo di lavoro
    ● Tempo: 6-12 mesi Co-delivery 50-50
    A team with 50-50 mix, that
    co-delivers and shares
    knowledge while co-working
    Vendor
    Client

    View full-size slide

  20. © 2023 Thoughtworks | Confidential
    Learning paths
    1. Fornire un’opinione su che cosa è
    importante per l’organizzazione
    2. Dare ai discenti un’idea della ampiezza
    di quel che c’è da imparare
    20
    Thoughtworks’
    Sensible Default Practices
    for SW Development Other companies’
    learning paths
    https://github.com/qmates-tech/our-learning-path

    View full-size slide

  21. © 2023 Thoughtworks | Confidential
    L’inevitabile slide su GenAI
    21
    Thoughtworks su GenAI and TDD
    ● Copilot è splendido il 90% delle
    volte
    ● Ma produce errori il 10% delle volte!
    ● Lo sviluppatore deve avere un
    metodo per validare il codice
    generato
    ● Il TDD funziona bene in questo
    senso
    https://twitter.com/nixcraft/status/1600143595042140161

    View full-size slide

  22. © 2023 Thoughtworks | Confidential
    Grazie per l’attenzione!
    Matteo Vaccari
    Technical Principal
    [email protected]
    22

    View full-size slide