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

Introdurre il Developer Testing nelle organizza...

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 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
  2. © 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
  3. © 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
  4. © 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
  5. © 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
  6. © 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
  7. © 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
  8. © 2023 Thoughtworks | Confidential Microtests 10 Praticando TDD, gli

    sviluppatori scrivono microtest, ovvero test brevi che verificano un singolo comportamento di un singolo oggetto
  9. © 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
  10. © 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
  11. © 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
  12. © 2023 Thoughtworks | Confidential Perché introdurre il developer testing

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

    è difficile? 16 E la pressione per consegnare non aiuta
  14. © 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
  15. © 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
  16. © 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
  17. © 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
  18. © 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