Definizione di Agile

Completato

Agile è un termine usato per descrivere gli approcci allo sviluppo del software, sottolineando il recapito incrementale, la collaborazione tra team, la pianificazione continua e l'apprendimento. Agile non è un processo, ma piuttosto una filosofia o un approccio mentale alla pianificazione del lavoro svolto da un team. Si basa sullo sviluppo iterativo e consente ai team di pianificare meglio il lavoro e di reagire ai cambiamenti inevitabili che si verificano durante lo sviluppo software. Di seguito viene riportata la discussione tra Mara e Andy dopo il rilascio dell'ultima versione.

Mara ritiene di aver fatto qualche passo avanti nel convincere il team a interessarsi a DevOps, ma i progressi si sono poi arenati. Il team è stato troppo occupato a correggere i bug nell'ultima versione per pensare a qualsiasi altra cosa.

Irwin, il product manager, ha sottoposto al team alcuni feedback dei clienti piuttosto critici in merito al sito Web del gioco di corse automobilistiche. Risolvere questi problemi non è stato uno scherzo. Andy e Mara hanno scritto il codice e l'hanno poi passato ad Amita che si occupa del testing. Amita continuava a trovare bug e rinviava il codice per la correzione. Il server di compilazione si arrestava in modo anomalo. Tim non riusciva a far funzionare il sito Web del gioco in produzione, nonostante avesse funzionato correttamente in ambiente di sviluppo e test. Tutti hanno lavorato tanto e hanno perso un paio di fine settimana.

Dopo aver consegnato la versione, Mara e Andy prendono un caffè insieme. Entrambi sono stanchi. Mara è demoralizzata ma Andy ha un atteggiamento diverso.

Andy: Di cosa ti stupisci? Sviluppare software è difficile, è sempre una sfacchinata. Ti è mai capitato che non fosse così?

Mara: Sì, e penso che anche qui potremmo semplificare molto le cose. Penso proprio che DevOps possa aiutarci.

Andy: Mi ricordo che abbiamo fatto un esercizio di mappatura dei flussi, ma poi? Dobbiamo iniziare con la nuova versione. Pensavo che avessimo finito con DevOps.

Mara: Possiamo fare molto di più. Penso che dovremmo fare il primo passo e fare un po' di pianificazione Agile. Possiamo usare Azure Boards per semplificare le cose.

Andy: Cosa intendi con Agile?

Mara: Agile è un approccio allo sviluppo software. Il termine "Agile" è stato coniato nel 2001 nel Manifesto Agile. Il manifesto ha definito alcuni principi guida per un approccio migliore allo sviluppo software. Il manifesto dice:

Consideriamo importanti:

  • Gli individui e le interazioni più che i processi e gli strumenti.
  • Il software funzionante più che la documentazione esaustiva.
  • La collaborazione con il cliente più che la negoziazione dei contratti.
  • Rispondere al cambiamento più che seguire un piano.

Andy: Senti, se hai qualche trucco per semplificarci la vita, io ci sto. La sera torno sempre così tardi che i miei figli stanno già dormendo. Ma queste restano solo belle parole senza una soluzione concreta.

Mara: Non si tratta di trucchi, ma possiamo realizzare questo approccio passo dopo passo e Azure DevOps ci offre gli strumenti che ci servono per implementare le procedure Agile. Per il momento, quando vogliamo pianificare qualcosa possiamo usare Azure Boards. Per prima cosa, puoi spiegarmi il processo di compilazione e individuare i problemi maggiori?

Dopo parecchi caffè, Mara e Andy individuano i problemi maggiori nel processo di compilazione. Tutti i problemi si sono verificati durante l'ultima versione. Quando Andy se ne va, Mara guarda le note che ha scarabocchiato e decide di fare un po' di pianificazione Agile da sola. Usa il processo Basic in Azure Boards per raggruppare tutti i problemi.

Il passaggio successivo è illustrare i risultati in Azure Boards agli altri membri del team e cercare di coinvolgerli.

Suggerimenti per l'adozione di Agile

Il team si prepara a eseguire i primi passaggi per l'adozione di Agile. Di seguito sono riportate alcune raccomandazioni generali che tutti i team possono usare per incorporare Agile nella propria organizzazione.

Creare una struttura organizzativa che supporti le procedure Agile

Per la maggior parte delle organizzazioni, l'adozione di Agile può essere difficile. Richiede un cambiamento di mentalità e di cultura che metta in discussione molti criteri e processi esistenti all'interno dell'organizzazione. Tradizionalmente, la maggior parte delle aziende adotta una struttura del team orizzontale. In pratica, ciò significa che i team corrispondono all'architettura software. È ad esempio possibile che un team sia responsabile dell'interfaccia utente di un'applicazione, un altro sia responsabile dei dati e un altro ancora sia responsabile dell'architettura orientata ai servizi.

Tuttavia, i team verticali forniscono risultati migliori per i progetti Agile, infatti si estendono nell'architettura e sono allineati ai risultati del prodotto. Ad esempio, è possibile che esista un team responsabile della parte relativa alla posta elettronica dell'app i cui membri provengano da tutte e tre le discipline sopra citate. Un altro vantaggio della struttura verticale dei team consiste nel fatto che il ridimensionamento viene eseguito aggiungendo team.

Insegnare le tecniche e le procedure Agile ai membri del team

Quando iniziano ad adottare tecniche e procedure Agile, alcuni team decidono di assumere coach esterni. I coach possono anche collaborare con più team per contribuire a rimuovere gli ostacoli e i silo aziendali, quindi hanno spesso competenze sia formative che gestionali. Possono inoltre formare i membri del team sulle tecniche Agile, ad esempio come eseguire riunioni rapide e di revisione. Nel corso del tempo, tuttavia, è importante che i membri del team sviluppino la capacità di formarsi reciprocamente. Ciò significa che la maggior parte del lavoro deve essere eseguita in modo collaborativo e non da singoli individui che trascorrono la maggior parte del tempo lavorando da soli.

Abilitare la collaborazione nel team e tra team

Se la collaborazione è la chiave per ottenere il successo in Agile, come è possibile incoraggiarla? Ecco alcuni suggerimenti.

Cambiamento culturale

Quando si cambia una cultura, tenere presenti alcuni aspetti. È importante che i membri del team lavorino in un ambiente tranquillo e confortevole. Hanno bisogno di spazi in cui possono concentrarsi, senza troppe distrazioni e rumori.

Le riunioni sono inevitabili e a volte può sembrare che abbiano il sopravvento sulla vita lavorativa di una persona. Per consentire ai membri del team un maggiore controllo, le riunioni necessitano di un'agenda e di intervalli di tempo rigidi.

Le comunicazioni asincrone, ad esempio posta elettronica e messaggi, possono risultare travolgenti e spesso le persone hanno la sensazione di dover rispondere immediatamente. È chiaro che non tutte queste comunicazioni necessitano di una risposta immediata.

Avere membri del team che lavorano da remoto è ormai la normalità in molte aziende. Tutti devono avere familiarità con tutti i membri del team e trattarli equamente, sia che si trovino in ufficio o che lavorino fuori sede. La collaborazione tramite la comunicazione dovrebbe diventare parte del DNA dell'organizzazione.

L'importanza di una comunicazione efficace, anche in caso di disaccordo, non deve essere sottovalutata. La risoluzione dei conflitti è una competenza utile per qualsiasi team Agile.

Team interfunzionali

Così come è importante per i membri del team lavorare in modo collaborativo, è anche importante che i team collaborino tra loro. I team interfunzionali aggiungono nuove competenze e prospettive che possono ampliare la capacità di tutti i membri di risolvere i problemi in modo creativo. I team interfunzionali rendono inoltre più coesa l'intera organizzazione, riducendo i conflitti interni e accrescendo la sensazione che tutti stiano lavorando per un obiettivo comune.

Strumenti per la collaborazione

Strumenti efficaci possono aiutare i membri del team Agile a collaborare in modo più efficace, sia all'interno del team che con altri team. Di seguito sono riportati alcuni suggerimenti per iniziare.

  • Microsoft Teams. Teams è un'applicazione che fornisce un'area di lavoro per chat, riunioni, note e archiviazione file.
  • Skype. Skype è facile da usare ed è un valido strumento per uso generico. Molte persone l'hanno già installata.
  • Slack. Slack fornisce molti canali di comunicazione separati, tutti da un'unica interfaccia. Questi possono essere organizzati in molti modi, ad esempio per progetto, team o argomento. Le conversazioni vengono conservate e sono disponibili per la ricerca. Aggiungere membri del team interni ed esterni è semplice. Slack si integra direttamente con molti strumenti di terze parti, ad esempio GitHub per il codice sorgente.

Altri strumenti comuni includono Google Hangouts, Asana, Trello, GoToMeeting e monday.com. Provare a familiarizzare con le opzioni per vedere quali sono adatte alle esigenze specifiche del team e dell'azienda.