Che cos'è la metodologia agile?
Le metodologie agili sono una serie di metodi di gestione del flusso di lavoro nello sviluppo software che contribuiscono a migliorare la qualità del lavoro degli sviluppatori. Qualsiasi sviluppatore, dal più competente ai novizi, nel momento in cui applica i principi contenuti nel “Manifesto per lo sviluppo agile del software”, migliora la qualità del proprio operato. Non solo viene facilitato nel processo di sviluppo, ma rende il proprio codice più comprensibile ai suoi colleghi o a chi, in futuro, si occuperà di aggiornare e manutenere il software stesso.
Manifesto per lo sviluppo agile del software
Le metodologie agili sono definite attraverso il Manifesto per lo sviluppo agile del software che si basa su 4 valori e 12 principi, ben precisi e di facile comprensione. Sono questi 4 valori e 12 principi a dover guidare lo sviluppatore in tutte le fasi di realizzazione del software.
I valori del Manifesto Agile
Il Manifesto Agile si compone di quattro valori chiave:
- Gli individui e le interazioni più che i processi e gli strumenti
- Il software funzionante più che la documentazione esaustiva
- La collaborazione col cliente più che la negoziazione dei contratti
- Rispondere al cambiamento più che seguire un piano
Diamo un’occhiata a ciascuno nel dettaglio:
Valore 1: Individui e interazioni
In passato, molti team di sviluppatori si concentravano sull’avere i migliori strumenti o processi
possibili con cui creare il proprio software. Il Manifesto Agile suggerisce che, anche se queste
cose
sono importanti, le persone dietro i processi lo sono ancora di più.
Avere le persone giuste all’interno di un team software è fondamentale. I migliori
strumenti possibili nelle mani sbagliate sono inutili. Ancora più importante è il modo in cui questi
individui comunicano tra loro. Le interazioni tra i membri del team sono ciò che li
aiuta a collaborare e risolvere eventuali problemi.
Valore 2: Software funzionante
In precedenza gli sviluppatori impiegavano anni a creare documentazione
dettagliata.
Questo prima ancora che iniziassero a scrivere una singola riga di codice.
Il Manifesto Agile pone la consegna del software ai clienti come una delle massime
priorità.
È possibile così raccogliere feedback per migliorare le versioni future.
Valore 3: Collaborazione con il cliente
Un tempo i contratti erano alla base di tutto e c’era spesso un contrasto tra ciò
che
era scritto sul contratto, il prodotto consegnato e ciò che il cliente aveva effettivamente
richiesto.
Secondo il Manifesto Agile, il focus dovrebbe essere sullo sviluppo continuo.
Bisogna
creare un ciclo di feedback con i clienti in modo da poter garantire costantemente che il
prodotto funzioni per loro.
Valore 4: Rispondere al cambiamento
In passato quando veniva creata una tabella di marcia, si tendeva a seguirla nonostante tutto. Il
problema con le roadmap statiche è che non viviamo in un mondo statico. I bisogni e
i
requisiti cambiano continuamente e le priorità cambiano sempre.
Ecco perché il Manifesto Agile suggerisce che un team dovrebbe avere la capacità di cambiare
direzione ogni volta che ne ha bisogno con una tabella di marcia
flessibile. Una tabella di marcia dinamica può cambiare di trimestre in trimestre, a
volte
anche di mese in mese, e i team agili sono in grado di stare al passo con questi cambiamenti.
I principi del Manifesto Agile:
1
La nostra massima priorità è soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua. Per ciascuno sviluppatore o team di sviluppo, la priorità deve essere quella di compiacere il cliente sviluppando il software richiesto nel giusto tempo. Il software sviluppato deve, inoltre, essere ben funzionante e aggiornato costantemente secondo le specifiche del cliente stesso.
2
Accogliamo i cambiamenti nei requisiti, anche a stadi avanzati dello sviluppo. I processi agili
sfruttano il cambiamento a favore del vantaggio competitivo del cliente.
In fase di sviluppo del
software è fondamentale prevedere e accettare eventuali cambiamenti nel corso della realizzazione del
prodotto finale. Accogliere ed integrare le richieste del cliente è fondamentale
affinché queste vengano
implementate prima della consegna ultima.
3
Consegnamo frequentemente software funzionante, con cadenza variabile da un paio di settimane a
un paio
di mesi, preferendo i periodi brevi.
Si tratta di un principio molto importante che
risponde alle
esigenze di sviluppo odierne. Se prima la pianificazione nello sviluppo del software era fondamentale,
ora si preferisce lavorare per step, consegnare le varie funzionalità del prodotto in
sviluppo in modo graduale
, ma costante. In questo modo, anche eventuali modifiche saranno di più facile integrazione nel
corso dello sviluppo del software.

4
Committenti e sviluppatori devono lavorare insieme quotidianamente per tutta la durata del progetto. Tanto i committenti quanto gli sviluppatori, confrontandosi costantemente in fase di sviluppo, riescono a raggiungere un risultato finale perfetto. Seguendo i punti precedenti del manifesto e sviluppando il software in modo graduale, gli stessi sviluppatori hanno modo di correggere in corsa eventuali errori e rendere le potenziali modifiche di più facile applicazione.
5
Fondiamo i progetti su individui motivati. Diamo loro l’ambiente e il supporto di cui
hanno bisogno e
confidiamo nella loro capacità di portare il lavoro a termine.
Il team di sviluppo del software deve
essere composto da persone motivate e determinate, oltre che concentrate nel
raggiungimento
dell’obiettivo finale. Nel caso in cui anche solo un elemento del team dovesse nutrire
dubbi o essere
non completamente dedito alla causa, è meglio sostituirlo.
6
Una conversazione faccia a faccia è il modo più efficiente e più efficace per
comunicare con il team ed
all’interno del team.
Nel team coinvolto è fondamentale il confronto. Il confronto diretto, ancor meglio
se di persona, è sicuramente un valore aggiunto nella risoluzione di eventuali problemi. Questo
principio è in grado di trasmettere motivazione e coinvolgimento a ciascun membro del
team.
7
Il software funzionante è il principale metro di misura di progresso.
Implementare funzionalità in un
software e verificare che funzionino è motivante per il team oltre che fondamentale per
comprendere lo
stadio di avanzamento dello sviluppo.
8
I processi agili promuovono uno sviluppo sostenibile. Gli sponsor, gli sviluppatori e
gli utenti
dovrebbero essere in grado di mantenere indefinitamente un ritmo costante.
Il nemico numero uno dei team
di sviluppo software è la stanchezza. Questa è alimentata da processi lunghi e macchinosi. Le
metodologie agili suggeriscono l’organizzazione del lavoro scandita da cicli brevi in
modo tale da
ottenere risultati concreti nel più breve tempo possibile e mantenere alta la
motivazione.
9
La continua attenzione all’eccellenza tecnica e alla buona progettazione esaltano
l’agilità.
La velocità
nell’implementazione di funzionalità all’interno del software non è sinonimo di scarsa
qualità.
L’attenzione nel corso dello sviluppo contribuisce alla realizzazione di codice scritto
in modo chiaro e
preciso. Più si è chiari e precisi nel corso dello sviluppo, più saranno possibili
modifiche al codice
semplici.
10
La semplicità - l’arte di massimizzare la quantità di lavoro non svolto - è essenziale.
Se il team
comprende che è possibile migliorare, è motivato nel farlo. Il miglioramento può derivare da
eventuali
nuovi strumenti o dal modo di lavorare del team stesso. Non vedere la possibilità di
migliorare il
proprio lavoro potrebbe far perdere la motivazione al team.

11
Le architetture, i requisiti e la progettazione migliori emergono da team che si auto
organizzano.
L’organizzazione di team agili è dettata dal team stesso. Nel corso dello sviluppo e
analizzando i cicli
precedenti, il team deve essere in grado di organizzarsi in modo tale da
ottimizzare tempi ed energie.
Fare questo aumenta l’efficienza del team.
12
A intervalli regolari il team riflette su come diventare più efficace, dopodiché regola
e adatta il
proprio comportamento di conseguenza.
Nello sviluppo è fondamentale capire quali passi in avanti si
siano fatti nel corso del tempo e comprendere le possibili criticità in modo tale da
risolvere i
problemi e migliorare il lavoro. In questo modo il team accresce le proprie
competenze, assume nuove
responsabilità ed elabora idee che aiuteranno nello sviluppo del prodotto.
Seguire questi principii
contribuisce in modo positivo allo sviluppo del software e al modo che gli sviluppatori di un team hanno
nel rapportarsi tra di loro e con il cliente.
Risorse utili
Per approfondire questo tema, il consiglio è quello di consultare quelle che sono le risorse più interessanti sull’argomento. Ecco le più importanti:
Mindset agile
Per utilizzare con successo la metodologia agile, i team devono coltivare una mentalità
agile. La
mentalità agile è un processo che implica la comprensione, la collaborazione, l’apprendimento e
il
rimanere flessibili per ottenere alte prestazioni. Combinando il mindset agile con processi
e strumenti,
i team possono adattarsi al cambiamento e fornire valore incrementale ai propri
clienti.
È fondamentale
quindi che tutti i membri del team comprendano e adottino veramente la metodologia in
ogni aspetto del
loro lavoro. Quando il “perché” dell’agile è chiaramente compreso, il “come” viene da sé in modo
naturale.
Risorse utili
Per approfondire questo tema, il consiglio è quello di consultare quelle che sono le risorse più interessanti sull’argomento. Ecco le più importanti:
ESEMPI METODOLOGIA AGILE
SCRUM: cos’è e a cosa serve
Basta, quindi, seguire le metodologie agili per migliorare il lavoro di un team? Forse non è così
semplice: l’insieme di regole definite nel manifesto è sicuramente un ottimo punto di
partenza, ma
nella maggior parte dei casi non basta.
È per questo che, nel tempo, molte aziende e team hanno
adottato la metodologia SCRUM.
Si tratta di una metodologia agile che a partire dal manifesto, ne fa
propri i principi fondamentali e organizza in modo strutturato il lavoro del team.
I ruoli in un team SCRUM
In un team SCRUM, sono ben definiti ruoli e compiti di ciascun membro.
Sono 3 i ruoli fondamentali:
Chi è e cosa fa il product owner
È colui il quale è custode delle necessità del cliente ed è responsabile nel
massimizzare il
ROI (Return on Investment).
Deve definire le priorità del progetto, interagire con i developers e assumersi la
responsabilità del lavoro svolto.
Chi è e cosa fa lo Scrum Master
È il membro del team che aiuta la squadra a raggiungere gli obiettivi, facilita i processi di sviluppo e aiuta il team ad organizzarsi autonomamente.
Chi sono e cosa fanno i developers
Si tratta di un gruppo di persone impegnate attivamente nello sviluppo delle funzionalità del software. Ciascun membro dell’agile development team detta i propri tempi di sviluppo e lavora seguendo quelli che sono i principi delle metodologie agili.
Risorse utili
Per approfondire questo tema, il consiglio è quello di consultare quelle che sono le risorse più interessanti sull’argomento. Ecco le più importanti:
Lo stand up meeting: cos’è e come funziona
Ogni giorno, prima della fase di sviluppo pratica, il team si riunisce per il Daily Stand-Up. Si tratta di un momento fondamentale della giornata in cui il team individua gli obiettivi, analizza i risultati e pianifica la giornata. È un momento molto importante in cui il team ragiona su idee e soluzioni a problemi incontrati nel corso dello sviluppo. Lo Scrum Master deve in tutti i modi cercare di coinvolgere al 100% ogni membro del team. Solo in questo modo possono emergere eventuali problematiche e risoluzioni rispetto alle fasi di sviluppo che sta vivendo il team.
La fase di sviluppo di funzionalità specifiche del software viene
chiamata Sprint.
Al termine di ciascuno Sprint si passa attraverso una fase di
Review nella quale
viene coinvolto il Product Owner che ispeziona il lavoro del team.
Dopo la Review,
il team ragiona su quelli che sono stati i risultati dello Sprint.
Questa fase si
chiama Retrospective Meeting. Si tratta di un momento fondamentale
per il team: è
qui che il gruppo comprende eventuali errori e successi ed ha modo di
migliorare il
lavoro futuro. In questa fase, i vari componenti del team sono chiamati
a prestare
massima attenzione e, anche attraverso attività di gruppo divertenti,è bene
che
emergano tutte le criticità.
Le figure che compongono un team SCRUM devono essere certificate.
In particolare, ad oggi il mercato del lavoro richiede costante
aggiornamento e preparazione. Per certificarsi, il consiglio è quello
di seguire
queste pagine.
Risorse utili
Per approfondire questo tema, il consiglio è quello di consultare quelle che sono le risorse più interessanti sull’argomento. Ecco le più importanti:
I benefici dell'utilizzo di SCRUM
Scrum aumenta significativamente la produttività e riduce i
tempi rispetto ai classici processi “a cascata”. I processi
Scrum consentono alle organizzazioni di adattarsi senza problemi ai
requisiti in rapida evoluzione e di produrre un software che
soddisfi gli
obiettivi di business in evoluzione. Un processo Scrum agile avvantaggia
l’organizzazione aiutandola a:
- Migliorare la qualità dei risultati;
- Affrontare meglio il cambiamento (e aspettarsi i cambiamenti);
- Fornire
stime migliori spendendo meno tempo per crearle;
- Controllare meglio la
pianificazione e lo stato del progetto.
Extreme Programming: cos’è e come funziona
L’extreme programming o XP, è un approccio allo sviluppo formulato da Kent
Beck, Ward
Cunningham e Ron Jeffies tra la fine degli anni ’90 e gli inizi del 2000. Il fondamento
principale di questa metodologia è il divieto assoluto per i programmatori di
scrivere
codice non strettamente necessario.
L’XP ha molti elementi in comune rispetto alle
metodologie agili contenute nel manifesto di cui sopra, considerando anche che alcuni degli
sviluppatori che hanno formulato il principio sono anche firmatari del manifesto stesso.
Le regole dell’Extreme Programming
Anche in questo caso, sono state individuate 12 regole ben precise da seguire per sviluppare software seguendo l’extreme programming. Queste regole possono essere sviscerate in 4 punti fondamentali:
Il pair programming aiuta un gruppo di due programmatori a sviluppare nuove funzionalità del software evitando sprechi ed errori. Quando uno dei due scrive codice, l’altro revisiona in tempo reale il lavoro del collega e suggerisce eventuali modifiche. Il lavoro è efficiente nel momento in cui entrambi hanno la stessa esperienza. Una volta a settimana si pianificano le fasi di sviluppo, si eseguono test e si informa il cliente sullo stato di avanzamento del progetto.
Il software che segue i principi dell’XP deve prevedere l’integrazione continua di cambiamenti evitando così ritardi o errori. Riscrivere il codice non deve alterare eventuali funzioni esterne al ciclo.
Il team deve concordare uno standard di scrittura del codice: in questo modo tutti gli sviluppatori saranno in grado di effettuare facilmente modifiche o revisioni. Questo passa attraverso la scrittura di codice semplice e comprensibile. Tutti i membri del team sono, inoltre, responsabili di tutto il lavoro svolto dal team stesso.
È fondamentale il benessere dei programmatori: i programmatori che fanno parte di team di extreme programming non dovrebbero lavorare più di 40 ore settimanali.
Questo metodo di lavoro agile promette un’altissima produttività. È, inoltre, in grado di esaltare le doti di problem solving di ciascun membro e quindi di rispondere in modo efficace alle esigenze dei clienti. Tutti gli sviluppatori possono seguire l’XP, ma per rendere questa metodologia efficace è necessario che il team si organizzi in modo tale da far affiancare programmatori pari livello tra loro.
Come utilizzare le metodologie agili in azienda
Quando ogni team ha un proprio metodo per portare a termine il lavoro, è fondamentale
implementare uno spazio in cui tutti possano rimanere allineati. Un sistema
forte aiuta a
creare prestazioni di squadra ottimali e a rendere la pratica agile molto
più efficace.
Sfruttando gli strumenti progettati specificamente per soddisfare questo tipo di esigenze, i
team hanno maggiore capacità di collaborare, coordinare e contribuire
durante l’intero
progetto. Con gli strumenti agili giusti, il team avrà tutto ciò di cui ha bisogno per
raggiungere il suo pieno potenziale.
Per farlo bisogna utilizzare i giusti strumenti: due
esempi di tool molto efficaci sono Confluence e Jira.

Confluence crea uno spazio condiviso e aperto e pagine in cui l’intero team può contribuire e collaborare alla visione, agli obiettivi e alle prestazioni dei progetti.

Jira sblocca il potere dell’agile con pianificazione flessibile, esecuzione trasparente, scalabilità e molto altro ancora. Insieme, sono il pane quotidiano dei team agili di successo.
L’utilizzo di questi strumenti crea una relazione diretta tra prestazioni, qualità e successo del progetto. Questi strumenti offrono una soluzione perfettamente integrata a tutte le esigenze di sviluppo. Confluence e Jira si occupano dell’ottimizzazione dei processi di lavoro in modo che il tuo team possa concentrarsi sul costruire un vero processo agile.
I benefici delle metodologie agili
Vantaggi per il cliente
Utilizzando le metodologie agili, i clienti ritengono che il fornitore sia più reattivo alle richieste di sviluppo. Le funzionalità di alto valore vengono sviluppate e fornite più rapidamente con i cicli brevi, rispetto ai cicli più lunghi favoriti dai classici processi a “cascata”.
Vantaggi per i fornitori
I fornitori riducono gli sprechi concentrando lo sforzo di sviluppo su funzionalità di alto valore e riducono il time-to-market rispetto ai processi a cascata a causa della diminuzione delle spese generali e della maggiore efficienza. Una migliore soddisfazione dei clienti si traduce in una migliore fidelizzazione e referenze clienti più positive.
Vantaggi per i team di sviluppo
I membri del team apprezzano il lavoro di sviluppo e amano vedere il loro lavoro utilizzato e apprezzato. Scrum avvantaggia i membri del Team riducendo il lavoro non produttivo e dando loro più tempo per svolgere il lavoro che apprezzano. I membri del team sanno anche che il loro lavoro è apprezzato, perché i requisiti sono scelti per massimizzare il valore per i clienti.
Vantaggi per i Product Manager
I Product Manager, che in genere ricoprono il ruolo di Product Owner, hanno la responsabilità di rendere felici i clienti assicurando che il lavoro di sviluppo sia allineato alle esigenze dei clienti. Scrum facilita questo allineamento fornendo frequenti opportunità per ridefinire le priorità del lavoro, per garantire la massima fornitura di valore.
Vantaggi per i Project Manager
I Project Manager che ricoprono il ruolo di ScrumMaster trovano che la pianificazione ed il monitoraggio siano più semplici e concreti rispetto ai processi a cascata. L’attenzione al monitoraggio delle attività, l’uso dei Burndown Charts per visualizzare i progressi quotidiani e gli Daily Scrum Meeting, tutti insieme danno al Project Manager consapevolezza sullo stato del progetto in ogni momento. Questa consapevolezza è fondamentale per monitorare il progetto e per individuare e affrontare rapidamente i problemi.
II corso Hackademy di aulab
Ora che hai compreso a pieno l’importanza delle metodologie agili per organizzare ed agevolare il
lavoro
in team all’interno delle aziende, hai sicuramente bisogno di acquisire e fare tuo questo metodo. Il
modo più rapido ed efficace per farlo è mettere in pratica i principi ed i valori del manifesto
facendo
parte di un team per la creazione di un progetto.
Se non hai ancora basi di programmazione ti
consigliamo il corso Hackademy, in cui tutti gli studenti apprendono i fondamentali delle
metodologie
agili e li applicano durante il corso. Iscrivendoti e frequentando il corso applicherai
la
metodologia
agile di sviluppo software facendo parte di un vero agile team con i
tuoi compagni!