Professional Documents
Culture Documents
(ITA) Research and Development Methodologies
(ITA) Research and Development Methodologies
SCRUM
Lesson 2
Plan-driven development è un principio tradizionale, sequenziale, anticipatorio e predittivo,
dove si cercano di anticipare tutte le funzionalità che l'utente vuole per poi trovare il modo
migliore per svilupparle. Il prototipo maggiore è il waterfall model che esegue una fase alla
volta completa: analisi, design, coding, testing and operation.
In SCRUM lavoriamo su una feature alla volta, e i continui feedback dell'utente ci guidano
nello sviluppo.
SCRUM principles:
● Variability and uncertainty: Scrum sfrutta la variabilità ed incertezza nello sviluppo del
prodotto creando soluzioni innovative.
Scrum: is based on iterative (multiple passes to improve) and incremental
development (finish one part before all the project);
● Ridurre tutte le forme di incertezza contemporaneamente: eliminare ogni forma di
incertezza sia del cliente che dal punto di vista implementativo;
● Prediction and Adaptation: bilanciare costantemente il desiderio di predirre, e la
manterremo finchè non finiamo di sviluppare quella parte, con la necessità di
adattarsi nel caso di feedback;
● Validated Learning: organizzare il lavoro per creare un lavoro facendo delle
assunzioni che cerchiamo di validare immediatamente poichè ogni assunzione ha un
rischio che sia sbagliata;
● Work in progress (WIP): dobbiamo minimizzare i lavori iniziati e non finiti e lo
facciamo identificando lavoratori in standby, poiché lavori in ritardo hanno dei costi e
la prossima volta possiamo fare una stima migliore dei giorni necessari per
completare quel lavoro;
● Progress: misurare i progressi in base a ciò che abbiamo realizzato (che l'utente
piace) e non in base a come stiamo procedendo. Questa fase è utile per pianificare,
misurare i progressi e concentrarsi sulla consegna;
● Performance: per le performance dobbiamo andare veloci, ovvero dobbiamo fare le
nostre interazioni in modo fast per ricevere feedback subito. Dobbiamo fare un
software di qualità perché ad ogni iterazione il cliente deve utilizzare quella parte
perché è la versione finale. Produrre qualche documento minimale, non significa non
creare il manuale, ma ridurre al minimo la documentazione perché in SCRUM non è
necessaria.
Riassunto
SCRUM è buono per creare prodotti dove il contesto è in continua evoluzione, dove sono
previsti cambiamenti, ci sono numerosi feedback e con un contesto temporale iterativo.
Plan-drive sequential é buono per creare progetti prevedibili e dove non sono previsti
cambiamenti.
Lesson 3
Sprint è lo scheletro del framework SCRUM, ovvero l'iterazione dello SCRUM. Esso deve
avere un goal che una volta iniziato non dev'essere alterato. Il tempo è anche fissato, sia
l'inizio che la fine. Fissare il tempo comporta dei benefici come prioritizzazione e
performance, lavoro di team migliore. La durata degli spring dev'essere breve in modo tale
che abbiamo un miglior rapporto con il cliente ed è migliore per il team. La pianificazione
delle scadenze porta una migliore coordinazione, sincronizzazione del lavoro.
Il cambiamento in SCRUM non è consentito, mentre la chiarificazione si, basta che non sia
una nuova feature.
Se il goal dello spring diventa invalido possiamo decidere se continuare a lavorare su quella
feature per vendere il software ad un'altra azienda oppure possiamo stopparci e prendere
una feature piccola per i restanti giorni e lavorarci per la restante parte in modo tale da
essere sincronizzati.
Done è una sorta di checklist di ciò che dobbiamo realizzare nello spring, secondo il lato del
cliente e non il nostro punto di vista. Se la checklist è finita, abbiamo finito lo spring. Si
possono aggiungere dei criteri per la valutazione di done.
Riassunto
Spring provede lo scheletro di scrum. Esso é piccolo, con tempo e consistente nel tempo.
L'obiettivo non può cambiare. Dev'essere conforme con la definizione di done.
Le user stories catturano cosa l'utente e il cliente ha bisogno in diversi livelli di astrazione.
Se abbiamo una piccola storia siamo obbligati a definire tutti i requisiti di livello basso. Le
labels di convenienza sono epic (months size), features (weeks size), sprintable stories
(days size).
I criteri per una buona storia sono: indipendente, negoziabile, valutabile, estimabile, piccolo
e testabile.
I requisiti non funzionali devono essere inclusi nella definizione di done.
I requisiti in SRUM sono definiti come stories, le storie sono delle cards, conversazioni e
conferme.
Ready: una checklist dei lavori da completare prima che il prodotto prima che esso sia
considerato ok, ovvero springable.
Grooming è il flusso delle features dentro la release. Il backlog può essere partizionato in tre
aree che possono essere implementate o meno: da avere, nice to have, won't have.
Lab 1
Il Continuous Delivery (CD) è uno sviluppo pratico dove il software è incrementalmente
costruito. Si preferiscono piccole integrazioni rispetto alle grandi. CD non è un insieme di
tools ma richiede teamwork e collaborazione.
Git non è stato progettato per piccoli progressi, però è possibile lavorare sul main (trunk-
based development) e rimanere i branch molto piccoli scaled trunk-based development). È
molto importante non pushare qualcosa di errato nel branch master. Ci sono alcuni tool
come Branch Protection (che offrono delle coperture per i branch), code review (possiamo
usare github actions per verificare che i branch che vogliamo mergiare non rompono i test
unitari) e development's discipline (ovvero una serie di regole da seguire per evitare futuri
problemi).
GitHub actions è una funzionalità di GitHub che permette l'esecuzione di flussi di lavoro. Un
flusso di lavoro è una sequenza di lavori eseguiti dai runner. Un lavoro è composto da steps
che possono essere comandi shell o funzionalità terze dette actions.
Un runner è una macchina virtuale che esegue flussi di lavoro. Uno step è uno script shell o
un'azione. I jobs sono una sequenza di steps da eseguire in ordine.
Lesson 4
Estimation and velocity
La stima è importante capire i tempi necessari per implementare ed anche i costi. In media
possiamo fare 18-20 storie in a sprint. Per la velocità riusciamo a capirla dopo qualche sprint
con precisione. L'estimazione è fatta in diversi livelli di granularità.
PBI estimation
Estimate as team: occorre scegliere come un team;
Estimate non sono commissioni: è importante essere accurati e non precisi;
L'estimazione non ha una size. Le piú comuni unità di misura sono gli story point e gli ideal
days oppure 70% per gli story points e 30% per gli ideal days.
Per stimare usiamo una specie di poker dove il team si mette d'accordo sullo stesso
numero.
La velocità è calcolata per ogni lavoro completato, ovvero che è done. È necessario
calcolare un range di velocità al fine perché qualche volta andiamo veloci altre volte lenti. La
velocità è qualcosa che non può aumentare nel tempo, anche se lavoriamo di piú.
Technical Debt
Ci sono dei debiti
Lesson 5
TODO