Come si può adattare Scrum a un ambiente accademico?


15

Attualmente sto lavorando con un professore della mia università per sviluppare nuovi curricula per i corsi di ingegneria del software e Capstone Design offerti nel mio college.

Fino a poco tempo fa, entrambi i corsi utilizzavano esclusivamente il modello a cascata, e quindi gli studenti trascorrevano la maggior parte del loro tempo a scrivere lunghi rapporti. Dopo molte pressioni da parte mia, il mio professore ha deciso di includere Scrum nel curriculum di Ingegneria del software lo scorso semestre.

La prima metà del semestre era ancora a cascata, con gli studenti che scrivevano rapporti di progettazione di 40 pagine e documenti sulle specifiche del software. A metà semestre, tutti i team dovevano rilasciare una demo delle loro applicazioni. A quel punto, il corso è passato a Scrum, con due sprint di 3 settimane. Ora stiamo cercando di capire come eliminare del tutto la cascata e creare un curriculum basato esclusivamente su Scrum.

Sfortunatamente, abbiamo riscontrato alcune incompatibilità tra Scrum e gli studenti:

  • Gli incontri Scrum giornalieri sono quasi impossibili per gli studenti. Anche durante la lezione stessa, è scomodo per gli studenti tenere riunioni Scrum poiché il professore di solito tiene lezioni.
  • Stimare i punti / le ore è difficile, poiché gli studenti sono inesperti e quindi non possono prevedere con precisione quanto tempo impiegherà qualcosa.
  • Scrum funziona meglio con gli sviluppatori a tempo pieno, situati contemporaneamente, ma gli studenti non lo sono. Al massimo, gli studenti dedicano 15-20 ore settimanali al corso e organizzare incontri di lavoro può essere estremamente difficile. Le squadre possono avere fino a 10 studenti (e ci sono sempre uno o due slacker).
  • I professori bramano la documentazione! Non ho mai sentito parlare di alcuno Scrum: solo i backlog e i grafici di burndown (che non sono sicuro saranno sufficienti per placare gli accademici).
  • Gli studenti spesso assumono che agile significhi "saltare subito dentro e iniziare a scrivere codice senza guardare indietro". Questo porta ad alcuni dei codici più orribili che si possano immaginare. Pertanto, sto cercando un modo per applicare il design corretto senza richiedere un documento di 50 pagine o una pila di diagrammi UML.

Dati questi problemi, come pensi che io e il mio professore possiamo adattare Scrum al funzionamento in un ambiente accademico (e dovremmo anche preoccuparci di Scrum in primo luogo)? Inoltre, ha ancora valore l'insegnamento del modello a cascata?

Grazie in anticipo per qualsiasi feedback!


2
Sembra che tu stia provando a praticare SCRUM piuttosto che insegnare i fondamenti di come dovrebbe funzionare
CodeART

Risposte:


3

Sarei esitante a scartare Waterfall su tutta la linea così in fretta.

Sebbene sia un modello imperfetto per la costruzione di sistemi software, non è un cattivo modello di insegnamento istruire sulle buone pratiche per ogni fase del ciclo di vita. Indipendentemente dal modello di processo che si applica al progetto, si eseguono comunque ingegneria dei requisiti, architettura e progettazione del sistema, implementazione, test, rilascio e manutenzione (inclusi refactoring e miglioramento). La differenza sta nel modo in cui queste fasi sono organizzate e condotte, ma tutte le attività continuano.

Direi che il tuo passaggio da Waterfall a Scrum nel mezzo del progetto non è la migliore idea. Una chiave per il successo di Scrum è un progetto di lunga durata. I primi tre o cinque sprint sono la squadra che si insedia in velocità, apprendendo il processo e attraversando lo sviluppo della squadra. Anche se stai facendo i movimenti, non è proprio Scrum a quel punto. Inoltre, cercare di creare un curriculum basato esclusivamente su Scrum è probabilmente una cattiva idea come Scrum come non un proiettile d'argento: è meglio insegnare le migliori pratiche piuttosto che una singola metodologia. Nella forza lavoro, non tutti i progetti useranno Scrum. In effetti, in alcuni ambienti, Scrum sarebbe dannoso per il successo del progetto.

Hai già riscontrato problemi con Scrum in ambito accademico e alcuni di essi sono difficili da affrontare in modo adeguato.

Il non problema nel tuo elenco di incompatibilità è che la stima è difficile. Sì. Ma l'unico modo per migliorare la stima è stimare e confrontare gli effettivi con le stime. Gli studenti dovrebbero stimare le dimensioni, il tempo e lo sforzo usando vari mezzi (punti della trama, linee di codice sorgente, ore, pagine, ore di persona) in anticipo in modo che siano più preparati a farlo dopo essersi laureati ed entrare nella forza lavoro.

La necessità di documentazione è qualcosa che può essere affrontata sia dal punto di vista del professore che dal punto di vista degli studenti. Gli approcci Lean ci dicono che la documentazione che non aggiunge valore al team o al cliente è dispendiosa (in termini di tempo e costi). Tuttavia, è necessaria della documentazione per raggiungere alcuni obiettivi sia degli studenti che del professore (il cliente / cliente) per vari scopi. Nel complesso, sembra un'opportunità per insegnare l'adattamento dei processi e la gestione quantitativa del progetto (che ha un ruolo anche nei metodi agili).

Per quanto riguarda le riunioni e la programmazione Scrum, mi vengono in mente due idee. Il primo è che questo indica che Scrum potrebbe non essere il miglior processo da utilizzare in un ambiente accademico. Non esiste un "miglior modello di processo" singolare per i progetti software, con fattori quali pianificazione, personale, visibilità ed esperienza del team di sviluppo (tra gli altri).

Nel complesso, suggerirei di enfatizzare le buone pratiche, l'adattamento dei processi e il miglioramento dei processi rispetto a singole metodologie. Ciò ti consentirà di essere il più efficace per tutti i partecipanti ai corsi, esponendoli a una varietà di metodologie di processo e comprendendo quali sono le migliori pratiche per un determinato insieme di condizioni.


Dal momento che si sta lavorando per costruire un curriculum universitario, darò una panoramica di alto livello su come l'ingegneria del software curriculum presso l' università ho partecipato insieme in forma.

Si trattava di un'ingegneria software introduttiva che ha attraversato il progetto in un modello a cascata, con le lezioni durante ogni fase corrispondenti a diversi modi di condurre le attività di quella fase. I team hanno progredito attraverso le fasi allo stesso ritmo. Far sì che quei confini chiaramente definiti si adattino bene al modello di insegnamento per un gruppo di persone che non hanno esperienza minima di lavoro sui team per costruire software. Durante il corso, sono stati fatti riferimenti ad altre metodologie - vari metodi agili (Scrum, XP), Rational Unified Process, Spiral Model - per quanto riguarda i loro vantaggi e svantaggi.

In termini di attività, ci sono stati corsi specifici per discutere di ingegneria dei requisiti, architettura e design (due corsi - uno incentrato sulla progettazione dettagliata utilizzando metodi orientati agli oggetti e uno incentrato sull'architettura di sistema), un numero di corsi incentrati sulla progettazione e l'implementazione di vari classi di sistemi (sistemi integrati e in tempo reale, sistemi aziendali, sistemi concorrenti, sistemi distribuiti e così via) e test del software.

Ci sono anche tre corsi dedicati al processo software. Processo di ingegneria del software e Project Management che si concentra sulle migliori pratiche per la gestione di un progetto software rispetto a più metodologie. Un secondo corso di processo insegna misurazioni, metriche e miglioramento del processo (enfatizzando CMMI, Six Sigma e Lean). Infine, c'è un corso di processo che insegna lo sviluppo di software agile (Scrum, Extreme Programming, Crystal, DSDM discussi) usando un progetto realizzato usando la metodologia Scrum.

Il progetto capstone era un progetto di due quarti che è stato eseguito per una società sponsor e gestito interamente dal team di progetto degli studenti, con la guida di entrambi gli sponsor e un consulente di facoltà. Ogni aspetto di come condurre il progetto spetta agli studenti, entro i limiti stabiliti dagli sponsor. Le uniche scadenze obbligatorie per l'università erano una presentazione intermedia a metà strada (10 settimane) nel progetto, una presentazione finale alla fine e una presentazione a quadretti poco prima della fine. Tutto il resto spettava allo sponsor e al team di accettare.


3

Quando ho fatto il mio master in ingegneria del software, c'era un corso chiamato Software Process che si occupava di XP, Scrum e altri approcci agili. In sostanza, l'intera classe formava un'ipotetica società di software e fu incaricata di sviluppare un pezzo di software abbastanza elaborato durante il corso del corso. Le lezioni riguardavano cose come le pratiche di XP, fare riunioni stand-up, ecc.

La maggior parte degli studenti ha sentito parlare di queste tecniche e di solito è appassionato di applicarle. Naturalmente non c'è modo di farlo forzare il team a lavorare effettivamente in modo iterativo, ecc. Ma quello era in realtà il punto del corso: a se stesso diventare una motivazione per tenere molti incontri brevi, lavorare in modo iterativo, fare build continue, ecc. Perché scopri rapidamente è semplicemente il modo più semplice e affidabile per produrre qualcosa di valore con un gruppo di persone e un piccolo lasso di tempo.

Una cosa da ricordare: assicurati di giocare bene il cliente e di modificare alcuni requisiti chiave a metà. O "dimentica" di menzionarli inizialmente.


1

A quel punto, il corso è passato a Scrum, con due sprint di 3 settimane. Ora stiamo cercando di capire come eliminare del tutto la cascata e creare un curriculum basato esclusivamente su Scrum.

Lo scopo è facilitare lo sviluppo, o imparare Scrum, o - la mia ipotesi - entrambi? Considererei sprint più brevi per accelerare il processo di apprendimento.

• Le riunioni Scrum giornaliere sono quasi impossibili per gli studenti. Anche durante la lezione stessa, è scomodo per gli studenti tenere riunioni Scrum poiché il professore di solito tiene lezioni.

Forse puoi sostituire gli stand-up quotidiani con una forma meno rigorosa, quando funziona meglio per gli studenti. Inoltre, non tutti devono partecipare a tutte le riunioni.

• Stimare i punti / le ore è difficile, poiché gli studenti sono inesperti e quindi non possono prevedere con precisione quanto tempo impiegherà qualcosa.

Stimare il tempo di calendario è ancora più difficile, per gli stessi motivi :-) Con i punti della storia non si stima quanto tempo impiegherà qualcosa: si stima la sua dimensione relativa. La durata è derivata.

• Scrum funziona meglio con gli sviluppatori a tempo pieno, situati in una posizione, ma gli studenti non lo sono. Al massimo, gli studenti dedicano 15-20 ore settimanali al corso e organizzare incontri di lavoro può essere estremamente difficile. Le squadre possono avere fino a 10 studenti (e ci sono sempre uno o due slacker).

Forse provare con squadre più piccole? 10 è nella scala superiore per un team Scrum. Penso che tu possa avere successo anche con squadre distribuite non a tempo pieno, ma ovviamente è più difficile! Lascia che sia una lezione in sé.

• I professori bramano la documentazione! Non ho mai sentito parlare di alcuno Scrum: solo i backlog e i grafici di burndown (che non sono sicuro saranno sufficienti per placare gli accademici).

Scrum non stabilisce quale tipo di documentazione sia richiesta. È un dato di fatto, nemmeno i grafici di burndown sono obbligatori. Ciò non significa che sia vietata la documentazione: il team dovrebbe produrre la documentazione necessaria, compresi i rapporti che i professori ritengono necessari.

• Gli studenti spesso assumono che agile significhi "Salta subito dentro e inizia a scrivere codice senza guardare indietro". Questo porta ad alcuni dei codici più orribili che si possano immaginare. Pertanto, sto cercando un modo per applicare il design corretto senza richiedere un documento di 50 pagine o una pila di diagrammi UML.

Non solo studenti :-) La maggior parte dei team Scrum utilizza pratiche XP come TDD (Test Driven Development) e refactoring: ti propongo di incorporarlo nei curricula.

Inoltre, ha ancora valore l'insegnamento del modello a cascata?

Sì, almeno per due motivi: in primo luogo, non è certo che i tuoi studenti useranno Scrum nella loro vita lavorativa, e in secondo luogo, immagino che sia più facile capire l'essenza dello sviluppo agile se hai qualcosa con cui confrontarlo.


0

Sembra un po 'simile a un argomento che ho preso una volta.

Alcuni pensieri:

  • Avresti davvero una riunione di scrum di tutta la squadra? I sottoteam funzionerebbero?
  • Se "senza guardare indietro" significa nessun refactoring, allora valutare le prove del refactoring?
  • Valuta la riflessione e la documentazione: fai in modo che gli studenti mantengano un blog delle loro attività. (Questa è in realtà un'abilità piuttosto utile per il posto di lavoro - molto più della maggior parte della documentazione formale)
  • Se le stime sono cattive, si spera che stiano imparando: possono tenere traccia delle variazioni tra stime e realtà, riflettere sulle differenze e dimostrare di aver imparato qualcosa?
  • Ci sono modi meno formali per documentare un disegno che sarebbe appropriato?
  • Skype o Gchat o qualcosa del genere sarebbero sufficienti per alcune riunioni di mischia?

0

Il mio consiglio è di separare e isolare ciò che stai cercando di insegnare. Se è un corso di progettazione del software o qualche altra materia di ingegneria del software (algoritmi o quant'altro), concentrati su questo. Se coinvolgere SCRUM diventa un ostacolo (come suggerisci), non preoccuparti.

Il modo in cui l'abbiamo fatto quando ero al college era di tenere un corso dedicato per metodologie agili. Il corso comprendeva un progetto di sviluppo che doveva essere eseguito secondo SCRUM o XP. Il software reale che doveva essere consegnato era banale, poiché il focus del corso non era la programmazione o la progettazione ma il processo. Il ragionamento qui è lo stesso per cui non dovresti mescolare argomenti di sviluppo software "hard core" con argomenti metodologici poiché uno tende a eclissare l'altro e gli studenti non sono per lo più pronti o abbastanza abili da gestire entrambi in quella fase.

I risultati dei corsi erano cose come i rapporti di pianificazione dello sprint, i rapporti settimanali sui progressi, le retrospettive, i rapporti sul burndown e ogni settimana abbiamo avuto almeno due sessioni che includevano un incontro di gruppo / scrum in cui le AT dovevano circolare e ascoltare.

Questo corso ha incluso anche TDD (Test Driven Development) e ha funzionato davvero bene.

Inoltre, ha ancora valore l'insegnamento del modello a cascata?

Lo è sicuramente. Molte aziende utilizzano versioni di questo modello per i loro progetti (PPS, RUP, PROPS, ecc.). Molti ritengono (correttamente, secondo me) che SCRUM "puro" sia più adatto alla manutenzione in corso rispetto ai progetti. SCRUM (e Agile in generale) richiede una certa flessibilità nel campo di applicazione e la possibilità di negoziare i requisiti e la consegna lungo il percorso. Non tutti i progetti funzionano così, sono binari: consegnare X nel punto Y nel tempo, tutto il resto è un fallimento.


0

Lo scopo di un corso accademico di ingegneria del software è di insegnare le fasi fondamentali del ciclo di vita del software: analisi, progettazione, implementazione, test insieme all'uso di standard di qualità del software effettivi invece del normale codice di qualità dei compiti a casa.

C'è valore nel dimostrare la pratica usando un processo non a cascata , tuttavia, a causa dei motivi per cui intendevi che SCRUM non è un processo adatto - gli studenti seguono molti corsi per semestre, molti hanno anche lavori reali durante lo studio, quindi non puoi averne 100 % membri del team dedicati o condurre riunioni quotidiane.

Valuta invece di utilizzare un processo iterativo meno agile come UP (RUP).

Per mostrare il valore rispetto al processo a cascata, modificare i requisiti tra le iterazioni. Ciò mostrerà la differenza tra UP e la cascata e suggerirà il valore dell'utilizzo di processi agili.

Dimostrare la cascata dopo questo sarà ridondante poiché UP copre tutte le fasi della cascata.

Poiché i semestri sono relativamente brevi, 2 piccole iterazioni sarebbero realistiche.

Fornire un ampio quadro da utilizzare per gli studenti, poiché l'enfasi di questo corso non dovrebbe essere la profondità dell'implementazione, ci sono altri corsi per quello, invece dovrebbe enfatizzare gli standard di codifica e il test unitario.

Durante il corso, le lezioni frontali insegnano la teoria di alcuni processi, ad esempio cascata, UP, XP, SCRUM e Kanban (insieme ad altri argomenti, ad esempio requisiti di scrittura, UML, test e così via).

Per gli studenti che hanno completato il corso di cui sopra, considera un seminario SCRUM separato come un corso facoltativo che richiede un periodo di due settimane a tempo pieno durante il semestre estivo.


-1

Scrum funziona se hai un progetto lungo / semestre e la classe è divisa in gruppi da 6 a 10 persone. Quindi potresti dedicare gli ultimi 10 minuti di lezione alla riunione della mischia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.