Zusammenfassungen
Universitätsnotizen im Markdown-Format aus Obsidian.
Principi agili dello SCRUM
download MD herunterladenPlan-driven development
Il plan-driven development cerca di pianificare e anticipare in anticipo tutte le funzionalità che un utente potrebbe desiderare e di determinare il modo migliore per realizzarle.
Il modello principale è quello a cascata: si esegue, in sequenza, un'analisi completa dei requisiti seguita da una analisi dei requisiti, seguita da una progettazione completa, seguita a sua volta da codifica/costruzione e collaudo.
Il plan-driven development funziona bene per problemi ben definiti, prevedibili e che difficilmente subiranno cambiamenti significativi. Se non funziona, l'atteggiamento prevalente è quello di pensare che si sia sbagliato qualcosa.
Il problema è nelle ipotesi di base: presuppone una variabilità di output minima o nulla, segue un insieme ben definito di fasi ed utilizza solo piccole quantità di feedback in fase avanzata del processo.
Il motto di questo approccio può essere: "anticipare e pianificare in anticipo per ridurre lo sforzo, come in un processo di produzione".
Approccio SCRUM
SCRUM si adatta a problemi che presentano un'incertezza tale da rendere rendere difficili alti livelli di prevedibilità. I principi di questo approccio sono:
- variabilità e incertezza;
- previsione e adattamento;
- Validated Learning;
- Work in progress (WIP);
- progresso;
- performance.
Variabilità e incertezza
SCRUM sfrutta la variabilità e l'incertezza incertezza nello sviluppo del prodotto per creare soluzioni innovative. Abbiamo quattro principi:
- accogliere la variabilità utile: una certa variabilità è necessaria per produrre un prodotto ogni volta un prodotto diverso;
- impiegare uno sviluppo iterativo e incrementale sviluppo: SCRUM si basa su uno sviluppo iterativo e incrementale. Con iterativo si intende utilizzare più passaggi per migliorare in modo da convergere su una buona soluzione. Con incrementale si intende imparare come ogni pezzo deve sopravvivere nell'ambiente e imparare dall'esperienza. SCRUM sfrutta i vantaggi dello sviluppo iterativo e di quello incrementale, annullando gli svantaggi del loro utilizzo individuale. SCRUM utilizza entrambe le idee in una serie adattativa di iterazioni temporali chiamate "sprint";
- sfruttare la variabilità attraverso adattamento all'ispezione e trasparenza: SCRUM accetta il fatto che è necessario un certo livello di variabilità per costruire qualcosa di nuovo e presuppone che la creazione del prodotto sia complessa.
- ridurre tutte le forme di incertezza contemporaneamente: seguendo un approccio olistico SCRUM, bisogna ridurre simultaneamente tutte le incertezze e sondare ed esplorare il nostro ambiente per identificare e conoscere le incognite sconosciute.
Previsione e adattamento
Bilanciare costantemente il desiderio di previsione con la necessità di adattamento, seguendo i principi di seguito:
- mantenere aperte le opzioni: acquisire una migliore comprensione della decisione prima di impegnarsi. Non prendere mai una decisione prematura solo perché un processo generico suggerirebbe che è il momento giusto per prenderla;
- accettare l'impossibilità di fare le cose per bene in anticipo: cercate di ottenere tutto ciò che è corretto in anticipo perchè i requisiti cambiano, è probabile che manchi una conoscenza importante ed si ottiene una grande quantità di requisiti di bassa qualità. L'approccio SCRUM produce alcuni requisiti e piani in anticipo, ma solo in misura sufficiente, ed impareremo dove abbiamo sbagliato non appena consegneremo;
- favorire un approccio adattivo ed esplorativo: storicamente lo sviluppo di prodotti software è sempre stato costoso. Il feedback della nostra azione ci aiuterà a determinare se e quando è necessario approfondire l'esplorazione;
- accogliere il cambiamento in modo economicamente ragionevole: nello sviluppo sequenziale, apportare una modifica è sostanzialmente più costoso in ritardo che nelle fasi iniziali. Bisogna concentrarsi sul miglioramento dell'accuratezza delle previsioni per ridurre i rischi e la quantità di lavoro ma spesso ha l'effetto opposto. Una piccola modifica dei requisiti dovrebbe comportare una proporzionale di implementazione e quindi di costi;
- bilanciare il lavoro predittivo in anticipo con il lavoro adattivo just-in-time: non è possibile ottenere requisiti e piani precisi fin dall'inizio. L'adattabilità è controbilanciata da una sufficiente capacità di previsione per non scivolare nel caos.
Validated Learning
Organizzare il lavoro per creare rapidamente un apprendimento convalidato cioè ottenere conoscenze che confermino o confutino un'ipotesi che abbiamo fatto. I principi agili relativi a questo argomento sono:
- convalidare velocemente le ipotesi importanti: non lasciare che le ipotesi importanti rimangano a lungo senza essere convalidate e fare un'ipotesi fondamentalmente sbagliata, ma è probabile che si abbia la possibilità di rimediare;
- sfruttare più cicli di apprendimento simultanei: in SCRUM l'apprendimento costante è una chiave di successo per identificare e sfruttare diversi cicli di feedback e scrum quotidiani, sprint review ma anche pair programming e test-driven development.;
- organizzare il flusso di lavoro per un rapido feedback: in SCRUM si arriva al feedback il più rapidamente possibile. Le attività che generano feedback si svolgono in stretta prossimità del lavoro originale.
Work in progress (WIP)
WIP è il lavoro che è stato iniziato ma non ancora finito e deve essere riconosciuto e gestito correttamente. I principi relativi a questo argomento:
- utilizzare dimensioni dei lotti economicamente ragionevoli: riducendo il tempo dei cicli e variabilità del flusso, feedback accellerato;
- riconoscere l'inventario e gestirlo per un buon flusso: nessun produttore competente si trova in un grande inventario. Lo sviluppo tradizionale favorisce la creazione di grandi quantità di inventario. SCRUM trova un equilibrio tra inventario abbastanza e troppo grande;
- concentrati sul lavoro inattivo, non sui lavoratori inattivi;
- considerare il costo del ritardo: cioè il costo finanziario associato al ritardo del lavoro o al ritardo del raggiungimento di un traguardo. Possiamo calcolare quali soggetti sono più dannosi dal punto di vista economico.
Progressi
Misurare i progressi in base a ciò che viene consegnato e convalidato, non in base al modo in cui stiamo procedendo con il piano predefinito. I principi relativi a questo argomento:
- adattarsi alle informazioni in tempo reale e ripianificare: in SCRUM non ci si conforma al piano predefinito perché si crede che il piano possa essere sbagliato e si faccia qualche previsione in anticipo su come pensare che le cose sarebbero potute andare. Quindi, bisogna ripianificare rapidamente e adattarsi alle informazioni che arrivano durante lo sviluppo;
- misurare i progressi attraverso la convalida degli asset di lavoro: in SCRUM si misurano i progressi costruendo asset funzionanti e validati che forniscono valore e possono essere valutati. È importante il lavoro di valore per il cliente che portiamo a termine;
- concentrarsi sulla consegna centrata sul valore: in SCRUM, il valore è generato dalla consegna di risorse funzionanti ai clienti, dalla convalida di ipotesi importanti o dall'acquisizione di conoscenze preziose.
Performance
Caratteristiche specifiche legate alle prestazioni quando si utilizza SCRUM:
- andare veloci, ma senza fretta: la velocità estrema viola il principio del ritmo sostenibile. Le persone dovrebbero essere in grado di lavorare a un ritmo che possono sostenere per un periodo di tempo prolungato. La fretta arriverà probabilmente a scapito della qualità;
- costruire con qualità: in SCRUM la qualità è mantenuta e verificata ad ogni sprint. Ogni incremento viene completato ad un alto livello di fiducia e può essere messo in produzione o spedito ai clienti. I test tardivi per attaccare la qualità sono sostanzialmente ridotti;
- impiegare una cerimonia minimamente sufficiente: si cerca di mantenere una forma informale, riducendo eventuali formalità facoltative e non necessarie (cerimonia significa formalità in questo contesto).
Conclusioni
SCRUM è ideale per progettare nuovi prodotti in un contesto complesso in evoluzione, sfrutta e abbraccia il cambiamento, il processo adattivo timebox è iterativo e presenta molti loop di feedback.
Sequenza plan-based è buono in ambienti prevedibili, dove è possibile pianificare e non c'è spazio per il cambiamento ma abbiamo problemi ben compresi.