Come portare avanti Company Programs in Agile
Alcuni pensano che passare alla metodologia agile significa perdere di vista il quadro generale. Noi non potremmo essere più in disaccordo.
I più precoci tra chi ha adottato la metodologia di sviluppo Agile erano piccoli team autonomi che lavoravano a piccoli progetti, in autonomia. Questi hanno dimostrato che il modello agile può funzionare, per la gioia (e il miglioramento) del lavoro degli sviluppatori di tutto il mondo. Recentemente, organizzazioni più grandi stanno scalando tale metodologia al di là di singoli team e progetti, per applicarla ad interi programmi.
Questo comporta sicuramente alcune sfide, ma non significa che non possa essere fatto. Ma prima guardiamo assieme come Gilt, un fashion retailer online, utilizza l’agile per trasformare il proprio business.
Waterfall VS Agile
Partiamo con le basi: cosa rende l’Agile così differente?
Gli stili tradizionali di Project Management, come il waterfall, è articolato in fasi. Ecco un’immagine che schematizza un tipico progetto waterfall. Questo stile di sviluppo del prodotto pone tutto su un unico, grosso rilascio ad alto rischio. Una volta che il progetto supera una determinata fase, è difficile che venga rivisto, perché il team spinge sempre verso la fase successiva.
I sistemi di Project Management tradizionali creano spesso delle situazioni critiche in cui non è possibile andare avanti fino a quando una issue bloccante non viene risolta. E il problema non si limita a ciò: il cliente finale non può interagire col prodotto fino a quando questo non è stato interamente completato. Pertanto, aspetti rilevanti relativi al product design o al codice, non verranno messi in luce prima della release.
Possiamo risolvere questi problemi grazie all’adozione di un stile di project management Agile, che si basa su un approccio iterativo di sviluppo con la previsione di intervalli regolari di feedback. Questa iterazioni permettono al team deviare le attività e di rendersi produttivi su differenti aree del progetto mentre una issue bloccante viene risolta.
Oltre a rimuovere percorsi critici e potenzialmente bloccanti, le iterazioni permettono anche di interagire continuamente col prodotto in fase di sviluppo
Questo, a sua volta, da possibilità al team di sviluppare, rilasciare, apprendere e migliorare costantemente. Il mercato cambia freneticamente, e il team è pronto ad adattarsi rapidamente ai nuovi requisiti.
Un beneficio ancora maggiore del Project Management in Agile è dato dalla condivisione del set di skill tra l’intero team di sviluppo. L’insieme di competenze sovrapponibili del team, permette di aggiungere flessibilità al lavoro in tutte le parti della base di codice del team. In questo modo, tempo e lavoro non vengono sprecati qualora la direzione del progetto cambi (per approfondire, guarda anche il nostro articolo su come creare team agile di successo).
Come realizzare un programma Agile di successo
Nel momento in cui un progetto viene migrato da un sistema di project management tradizionale ad uno agile, il team e gli stakeholder devono comprendere due concetti fondamentali:
- L’obiettivo del product owner è di ottimizzare il risultato del team di sviluppo. Il team si basa sul lavoro cui viene assegnata maggiore priorità secondo il product owner.
- Il team di sviluppo può prendere in carico lavoro sulla base della sua disponibilità. Il product owner non li spinge verso sovraccarichi e deadline arbitrarie. E’ il team di sviluppo che prende in carico ulteriori carichi di lavoro direttamente dal backlog del programma, nel momento in cui può accettarne di nuovo.
A questo punto andiamo a vedere assieme i meccanismi cui i programmi agile ricorrono per organizzare, svolgere e strutturare le attività in maniera iterativa.
Roadmap
Una roadmap permette di evidenziare come un prodotto o una soluzione si svilupperà nel corso del tempo. Le roadmap sono composte da iniziative – che sono grandi aree di funzionalità – e includono timeline che comunicano quando una feature sarà resa disponibile. Nel momento in cui il programma si sviluppa, si accetta che la roadmap possa cambiare, talvolta leggermente, altre volte ampiamente. L’importante è mantenere la roadmap focalizzata sulle condizioni correnti del mercato e sugli obiettivi di lungo termine.
(Un utile strumento per gestire al meglio la roadmap del proprio portfolio di progetti JIRA è l’addon Live Roadmap, N.d.T.)
Requisiti
Ogni iniziativa in una roadmap si scompone in un set di requisiti. I requisiti agile sono descrizioni sintetiche della funzionalità richiesta, piuttosto che documenti lunghi oltre 100 pagine associati ai progetti tradizionali. I requisiti agile evolvono nel tempo sulla base della comprensione condivisa che il team ha del cliente e del prodotto desiderato.
Mentre tali requisiti rimangono sintetici, ogni membro del team sviluppa progressivamente una comprensione condivisa grazie alla conversazione e alla collaborazione in corso. Solo in fase di implementazione questi vengono arricchiti di maggiori dettagli.
Backlog
Il backlog imposta le priorità per il programma agile. Il team include tutti gli elementi del lavoro nel backlog: nuove feature, bug, miglioramenti, attività tecniche o architetturali ecc.. Il product owner assegna un ordine di priorità agli elementi del backlog per il team ingegneristico. Il team di sviluppo poi ricorre al backlog che è stato definito per priorità come fonte di riferimento per individuare le attività da svolgere.
Veicoli di fornitura Agile
Si può implementare l’Agile ricorrendo a framework differenti (come lo scrum o il kanban) per fornire software. Gli scrum team ricorrono agli Sprint per guidare lo sviluppo, mentre i kanban team spesso lavorano senza intervalli fissi. Entrambi i metodi, in ogni caso, ricorrono a diversi veicoli di fornitura di grandi dimensioni, come Epic e Versioni, per strutturare lo sviluppo al fine di sincronizzare la cadenza con cui avviene il rilascio.
Metriche Agile
I team agile fanno un ampio ricorso alle metriche. I limiti di work in progress (WIP) mantengono il team e il business focalizzarti sul fornite il lavoro a più alta priorità. Grafici di burndown e di controllo aiutano il team a prevedere la loro cadenza di fornitura, e diagrammi di flusso continuo aiutano ad individuare i colli di bottiglia. Metriche e strumenti simili aiutano ognuno a rimanere focalizzato sugli obiettivi principali, e ad accrescere la confidenza sull’abilità del team di completare il lavoro in futuro.
La fiducia come elemento portante per l’Agile
Un programma portato avanti in Agile non può funzionare senza un elevato livello di fiducia tra i membri del team. Richiede schiettezza avere difficili conversazioni relativamente a cosa sia giusto per il programma e il prodotto. Poiché le conversazioni avvengono ad intervalli regolari, idee e lamentele vengono espresse regolarmente. Ciò significa che i membri del team devono anche avere fiducia nelle abilità e volontà degli altri nel portare avanti le decisioni prese in sede di confronto.
In sintesi, lo sviluppo in agile è un approccio strutturato e iterativo per realizzare software. Permette di darvi l’abilità di rispondere ai cambiamenti senza uscir fuori dai binari. E questa è una buona notizia per qualsiasi programma.
(Ma solo in ambito IT? Assolutamente no, un settore che ha iniziato a beneficiare recentemente del metodo Agile con grandi risultanti è il Marketing! Scoprite di più in questo articolo, N.d.T.)
Scoprite di più su:
JIRA Software – Project e issue tracking
Articolo Originale: https://www.atlassian.com/agile/program
di Dan Radigan, Senior Agile Evangelist, Atlassian
traduzione di Davide Schillaci