Zusammenfassungen

Universitätsnotizen im Markdown-Format aus Obsidian.

Principi agili dello SCRUM

download MD herunterladen

Plan-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.