Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Le organizzazioni aziendali adottano procedure Agile per molti motivi. I primi tra questi motivi includono:
- Abbreviare il time-to-market e accelerare la distribuzione dei prodotti
- Migliorare l'efficacia dell'organizzazione per gestire le priorità mutevoli
- Migliorare la qualità del software e la prevedibilità del recapito
- Migliorare la visibilità del progetto e ridurre il rischio del progetto
Man mano che l'organizzazione cresce, si vogliono ridimensionare le procedure per rimanere agili e soddisfare obiettivi mutevoli. A tale scopo, considerare questi due principi guida:
- Cosa significa successo per te, i tuoi team e la tua organizzazione? Cosa ti interessa di più: consegna in tempo reale? Qualità del prodotto? Prevedibilità? Soddisfazione?
-
Tornare ai primi principi e tornare ai principi e ai valori condivisi enumerati nel manifesto Agile Come indicato da Ken Schwaber, uno dei fondatori di Scrum:
- I valori e i principi si applicano a diverse scale, ma le pratiche dipendono dal contesto.
- "Mantenere i valori, mantenere i principi e pensare per se stessi. Una premessa fondamentale di Agile è che le persone che svolgono il lavoro sono le persone che possono capire meglio come farlo."
Creare un ritmo e un'armonia
Adottando una cadenza condivisa e un set di comunicazioni periodiche, si crea un flusso costante di attività in tutta l'organizzazione. Le procedure che consentono di creare ritmi e flussi all'interno di organizzazioni di grandi dimensioni includono:
- Cadenza condivisa: Sprint e rilasci regolari stabiliscono il ritmo del business. Avere tutti i team a lavorare a una cadenza condivisa aiuta con tutte le attività di coordinamento e collaborazione.
- Comunicazioni sprint: per mantenere l'organizzazione e tutti i team informati sullo stato di avanzamento e sui piani dei team di funzionalità, ogni team di funzionalità può condividere un riepilogo dei risultati dello sprint precedenti e dei piani sprint correnti tramite canali digitali come Microsoft Teams, Slack o posta elettronica.
- Demo e video sprint: creare video rapidi da 2 a 3 minuti che illustrano le nuove funzionalità che il team produce. Condividere collegamenti a tali video all'interno delle comunicazioni sprint o dei canali del team.
- Riunioni di presentazione: per informare altri team e chiedere commenti e suggerimenti sul software in fase di sviluppo, i team mostrano il lavoro completato. Condurre queste riunioni a intervalli regolari durante il ciclo di vita del progetto e aprirle a tutte le parti interessate.
- Dashboard delle metriche di qualità: per supportare informazioni dettagliate sulla qualità del prodotto e incoraggiare la gestione della disciplina dei bug, condividere periodicamente le metriche di qualità con l'organizzazione. Queste metriche possono includere bug attivi per ogni team di funzionalità, tendenze di bug, copertura dei test e tassi di escape dei difetti.
- Riunioni e cerimonie di coordinamento: organizzare riunioni che coordinano i team a intervalli regolari o con la frequenza necessaria per affrontare obiettivi, dipendenze e rischi sovrapposti. Valutare la possibilità di implementare Scrum di Scrums o sessioni di pianificazione del Program Increment (PI).
Interagire con i clienti
Coinvolgere i clienti in tutto il ciclo di vita del prodotto è un principio agile principale. Consentire a ogni team di interagire direttamente con i clienti nei set di funzionalità di cui sono proprietari.
-
Cicli di feedback continui: creare meccanismi di feedback dei clienti. Questi cicli possono assumere molte forme:
- Piattaforme vocali dei clienti: consente ai clienti di fornire commenti e suggerimenti, aggiungere idee e votare le funzionalità di nuova generazione tramite portali dedicati, forum della community o sistemi di feedback integrati.
- Commenti e suggerimenti sul prodotto: implementare pulsanti di feedback nel prodotto e dati di telemetria per raccogliere informazioni dettagliate sull'esperienza del prodotto e funzionalità specifiche.
- Demo dei clienti e test degli utenti: pianificare demo regolari che richiedono feedback dai clienti e condurre sessioni di test di usabilità per aiutare a modellare i prodotti di nuova generazione e tenere traccia delle applicazioni che i clienti vogliono utilizzare.
- Programmi early adopter e beta: sviluppare programmi con l'idea che tutti i team potrebbero voler partecipare a un certo punto. Gli early adopter ottengono l'accesso alle prime versioni del software funzionante e forniscono feedback prezioso. Spesso, questi programmi funzionano abilitando i flag di funzionalità selezionati per un elenco di early adopter.
- Decisioni basate sui dati: trovare modi per instrumentare il prodotto per ottenere dati utili e testare varie ipotesi. Promuovere una cultura che incentiva esperimenti, celebra l'apprendimento e il processo decisionale basato sulle evidenze.
Migliorare la visibilità del progetto
Maggiori sono le informazioni dettagliate che l'utente e i team hanno nell'obiettivo, nella visione e nello stato di avanzamento del lavoro svolto, al meglio è possibile ridurre i rischi e gestire le dipendenze.
- Struttura del team: indipendentemente dalla dimensione dell'organizzazione, strutturando in modo efficace l'organizzazione in team di piccole dimensioni da 6 a 9 persone. Creare team di funzionalità verticali e autonomi raggruppati in aree di gestione portfolio.
- Struttura di suddivisione del lavoro: suddividere obiettivi, funzionalità o requisiti di grandi dimensioni in quelli più piccoli rimane un elemento fondamentale della gestione dei progetti. Suddividendo il lavoro in attività di dimensioni simili, i team possono eseguire stime migliori e identificare rischi e dipendenze.
- Visualizzazioni e dashboard consolidati: usare gli strumenti di rilevamento online per aggregare il lavoro e acquisire informazioni tra i team. Creare dashboard in tempo reale per mostrare lo stato di avanzamento, le tendenze e gli indicatori di prestazioni chiave usando i servizi di Azure DevOps Analytics.
- Revisioni di esperienza e progettazione: tenere queste riunioni prima che lo sviluppo inizi su una funzionalità per informare la leadership su scenari e priorità, raccogliere commenti e suggerimenti, impostare aspettative e individuare eventuali problemi tra team relativi alla funzionalità.
Potenziare una forza lavoro produttiva
Le procedure Agile specifiche che si adattano bene e portano a dipendenti più felici, impegnati e produttivi includono:
- Leadership incorporata e sicurezza psicologica: consente ai team e ai leader all'interno dell'organizzazione di auto-organizzare e auto-gestire il più possibile. L'autonomia del team aumenta l'agilità organizzativa e l'efficacia del team. Assicurarsi che i team abbiano la sponsorizzazione aziendale necessaria per avere successo e creare ambienti in cui i membri del team si sentono sicuri per esprimere idee e preoccupazioni.
- Stand-up giornalieri: le riunioni Scrum aiutano i team a concentrarsi su ciò che devono fare quotidianamente per massimizzare la capacità di soddisfare gli impegni di sprint. Man mano che le organizzazioni aumentano, è consigliabile prendere in considerazione lo sfalsamento di queste riunioni in modo che la partecipazione tra team possa avvenire in base alle esigenze.
- Scrum of scrums: i rappresentanti di diversi team Agile si incontrano regolarmente per segnalare il lavoro completato, i passaggi successivi e i problemi o i blocchi che si verificano all'interno dei team.
- Comunicazioni e condivisione delle conoscenze del team: fornire e incoraggiare i team a condividere le proprie procedure e linee guida attraverso le reti aziendali. Gli strumenti comuni includono wiki del team, Microsoft Teams, Confluence o wiki di Azure DevOps.
- Collaborazione e qualità del codice: incoraggiare comunicazioni informali tra team e collaborazione. Istituzionalizzare procedure come revisioni del codice, revisioni di progettazione, programmazione di coppie e programmazione mob. Queste procedure non solo aumentano la collaborazione tra team, ma aiutano a sviluppare competenze individuali e complessive aziendali.
Migliorare la cultura organizzativa
È possibile migliorare l'efficacia dell'organizzazione partecipando alla cultura che si vuole creare. Le modifiche alle impostazioni cultura si verificano quando utenti, team e organizzazioni adottano una o più procedure di miglioramento continuo. Alcune procedure Agile scalabili includono:
Retrospettive: porre domande come: "Cosa è andato bene?", "Cosa dobbiamo fare in modo diverso?", e "Cosa dobbiamo smettere di fare?" per aiutare i team a riflettere su come possono migliorare i processi e le procedure. Le analisi retrospettive aiutano i team a individuare ciò che funziona bene e quali sono le esigenze di miglioramento. È possibile eseguire analisi retrospettive in qualsiasi momento e ovunque. Tuttavia, l'istituzionalizzazione di determinate analisi retrospettive a cadenza regolare aiuta a stabilire pratiche di miglioramento continuo. Ad esempio:
Le analisi retrospettive sprint aiutano i team a identificare le aree da migliorare a cadenza regolare.
Le retrospettive di rilascio aiutano le organizzazioni a identificare le aree di miglioramento nelle comunicazioni e pratiche interne, alimentando il miglioramento per il prossimo rilascio.
Revisioni operative: in genere tenute mensilmente e includono rappresentanti di un flusso di valore intero. Estendendo un portfolio di progetti e altre iniziative e usando obiettivi, dati quantitativi, progettare queste retrospettive per provocare discussioni sulle dinamiche che influiscono sulle prestazioni tra i team.
Per idee, suggerimenti e strumenti per la pianificazione e l'esecuzione di analisi retrospettive, vedere Il Wiki delle risorse retrospettive Agile. Vedere anche l'estensione Analisi retrospettive del Marketplace.
Scheda di rilevamento dei miglioramenti: buone idee per migliorare i processi possono sorgere da chiunque in qualsiasi momento. Acquisizione di queste idee per discutere e decidere come agire su di essi supporta rapidamente le attività di miglioramento del processo.
Una lavagna offre un mezzo semplice e visivo per acquisire idee. Inoltre, è possibile creare un team per il monitoraggio dei miglioramenti e raccogliere le idee che tracci su una lavagna elettronica.
Istituzionalizzare la condivisione e l'apprendimento: condividere le procedure consigliate e comunicare idee aiuta tutti i team all'interno di un'organizzazione a crescere e migliorare. Lo sviluppo di una cultura dell'apprendimento supporta questa e altre attività di miglioramento continuo. Si considerino queste idee:
Wiki interni e basi di conoscenza
Comunità di pratica e gilda
Settimane di Hackathon o tempo di innovazione
Team di coaching DevOps e Agile interni per supportare i team che adottano queste procedure
Sessioni regolari di pranzo e apprendimento
Conferenze interne e colloqui tecnici
Il gioco cultura offre una buona risorsa per i manager Agile per aiutare i team ad adottare procedure Agile e condividere le procedure consigliate.
Comunità di pratica: supportano discipline comuni interne (ad esempio, ingegneri della resilienza del sito, architetti software, designer di esperienza utente, data scientist e specialisti della sicurezza)
Software funzionante
"Distribuire spesso software funzionante, da un paio di settimane a un paio di mesi, con una preferenza per la scala cronologica più breve".
"Il software funzionante è la misura principale dello stato di avanzamento".
- Manifesto Agile
Man mano che la quantità di software, funzionalità e complessità aumenta, è necessario adottare procedure che consentono di produrre soluzioni di consumo.
- Flag di funzionalità e recapito progressivo: usare i flag di funzionalità per abilitare o disabilitare l'accesso a funzionalità diverse in modo sicuro. Supportare l'attivazione delle funzionalità per gli early adopter per ottenere feedback operativo. Implementare modelli di distribuzione progressiva come i rilasci canary e le distribuzioni blu-verde.
- Rilasci scaglionati e consegna continua: fornire un altro tipo di cadenza per offrire una o più funzionalità. I team che si occupano delle funzionalità comprendono il programma predefinito per l'inserimento di nuove funzionalità e pianificano di conseguenza. I treni di rilascio possono corrispondere alla stessa frequenza di sprint stabilita per l'organizzazione o a una frequenza diversa. Per informazioni su come configurare sprint e treni di rilascio, vedere Scaled Agile Framework.
- Integrazione continua e distribuzione continua (CI/CD): adottare processi automatizzati che eliminano il lavoro manuale e automatizzano il flusso del software tramite cicli di test, compilazione e distribuzione. Implementare strategie di test complete, inclusi unit test, test di integrazione e test di accettazione automatizzati.
- Sviluppo interno e aperto: portare il valore e l'ethos sviluppati nella community Open Source Software ai team di sviluppo interni. Incoraggiare la condivisione del codice, la documentazione e le procedure di sviluppo collaborativo tra i team.
- Pratiche cloud-native: Abbracciare la containerizzazione, le architetture di microservizi e i modelli di distribuzione cloud-native per migliorare la scalabilità e la manutenibilità.
Procedure e considerazioni moderne
Man mano che le procedure Agile si sono sviluppate, considerare questi altri approcci moderni:
- Integrazione di DevSecOps: integrare le procedure di sicurezza per tutto il ciclo di vita di sviluppo anziché considerare la sicurezza come un problema separato.
- Site Reliability Engineering (SRE): adottare procedure SRE per migliorare l'affidabilità del sistema e ridurre il sovraccarico operativo.
- Mappatura del flusso di valore: mappare e ottimizzare il flusso di valore dall'idea alla consegna al cliente.
- OKR (obiettivi e risultati chiave): usare gli OKR per allineare i team ai risultati misurabili anziché solo agli output.
- Pensiero progettuale: incorporare approcci di progettazione incentrati sull'uomo per comprendere meglio le esigenze dei clienti.
Contenuti correlati
Oltre alle procedure precedenti, è possibile trovare altre indicazioni per ridimensionare gli strumenti Agile negli articoli seguenti:
- Cultura Agile
- Aggiungere team
- Gestione del portafoglio
- Visibilità tra i team
- Scalabilità di Agile per team di grandi dimensioni
Risorse del settore
- Manifesto Agile
- Agile Alliance
- Framework Agile con scalabilità orizzontale (SAFe)
- DevOps Research and Assessment (DORA)
Pratiche che non possono essere ampliate
- Stima delle iniziative di grandi dimensioni: La parte dei metodi di progetto a cascata consisteva nella stima delle risorse e delle pianificazioni. Più grandi sono le iniziative, meno è probabile che queste stime forniscano valore. Man mano che i progetti crescono, i rischi e i problemi imprevisti e gli ostacoli possono verificarsi, invalidando molte stime.
- Velocità come metrica tra team: mentre la velocità del team può fornire una metrica utile per ottenere informazioni dettagliate sulla quantità di lavoro che ogni team può completare durante un ciclo di sprint, non è possibile aggiungere velocità del team per ottenere metriche significative o utili. Inoltre, l'uso della velocità ottenuta da molti team per completare in modo affidabile le previsioni a lungo raggio è problematico. I team possono variare in base al modo in cui stimano il lavoro e le variazioni aumentano nel tempo.
- Soluzioni prescrittive dall'alto verso il basso: una dimensione non è adatta a tutte e una soluzione in genere non rientra in tutti i team. Supportare l'autonomia del team significa consentire ai team di trovare le proprie soluzioni fornendo al tempo stesso i framework e il supporto necessari.
- Cargo cult Agile: è sufficiente adottare cerimonie Agile senza comprenderne lo scopo o adattarle al contesto spesso porta a implementazioni inefficaci.