Che cos'è lo sviluppo Agile?

Lo sviluppo Agile è un termine usato per descrivere lo sviluppo di software iterativo. Lo sviluppo di software iterativo riduce il ciclo di vita devOps completando il lavoro in brevi incrementi, in genere detti sprint. Gli sprint sono in genere lunghi da uno a quattro settimane. Lo sviluppo Agile è spesso in contrasto con lo sviluppo tradizionale o a cascata, che pianifica progetti più grandi in anticipo e li completa in base al piano.

Per fornire codice di qualità di produzione ogni sprint, il team di sviluppo Agile deve tenere conto di un ritmo accelerato. Tutte le operazioni di codifica, test e verifica della qualità devono essere eseguite ogni sprint. A meno che un team non sia configurato correttamente, i risultati possono non essere previsti. Anche se queste delusioni offrono grandi opportunità di apprendimento, è utile imparare alcune lezioni chiave prima di iniziare.

Questo articolo illustra alcuni fattori chiave di successo per i team di sviluppo Agile:

  • Perfezionamento del backlog diligente
  • Integrazione anticipata e spesso
  • Riduzione del debito tecnico

Perfezionamento del backlog diligente

Un team di sviluppo Agile collabora con un backlog di requisiti, spesso denominati storie utente. Il backlog è prioritario, con le storie utente più importanti nella parte superiore. Il proprietario del prodotto possiede il backlog e aggiunge, modifica e riscrive le storie utente in base alle esigenze del cliente.

Image of a Kanban board that contains several columns. In each column, a few cards are visible.

Uno dei più grandi trascinamenti sulla produttività di un team Agile è un backlog ben definito. Non è previsto che un team fornisca costantemente software di alta qualità a ogni sprint, a meno che non abbiano requisiti chiaramente definiti.

Il compito del proprietario del prodotto è garantire che ogni sprint, i tecnici abbiano chiaramente definito storie utente con cui lavorare. Le storie utente nella parte superiore del backlog devono essere sempre pronte per l'avvio del team. Questa nozione è detta perfezionamento del backlog. Mantenere un backlog pronto per un team di sviluppo Agile richiede impegno e disciplina. Fortunatamente, vale la pena investire.

Quando si affina un backlog, tenere presenti le considerazioni chiave seguenti.

  1. L'affinamento delle storie utente è spesso un'attività di lunga durata. Interfacce utente eleganti, belle progettazioni dello schermo e soluzioni accattivanti per il cliente richiedono tutto il tempo e l'energia per creare. I proprietari di prodotti diligenti affinano le storie utente da due a tre sprint in anticipo. Sono responsabili delle iterazioni di progettazione e delle recensioni dei clienti. Lavorano per garantire che ogni storia utente sia un elemento che il team Agile è orgoglioso di offrire al cliente.

  2. Una storia utente non viene perfezionata a meno che il team non lo indichi. Il team deve esaminare la storia dell'utente e accettare che sia pronto per lavorare. Se un team non visualizza la storia utente fino al giorno uno di uno sprint, è probabile che si verifichino problemi.

  3. Le storie utente più in basso nel backlog possono rimanere ambigue. Non sprecare tempo per perfezionare gli elementi con priorità inferiore. Concentrarsi sulla parte superiore del backlog.

Integrare in anticipo e spesso

L'integrazione continua e il recapito continuo (CI/CD) configurano il team per il ritmo rapido dello sviluppo Agile. Il prima possibile, automatizzare le pipeline di compilazione, test e distribuzione. Configurare l'automazione come una delle prime attività affrontate dal team quando si avvia un nuovo progetto.

Con l'automazione, il team evita processi di distribuzione manuali lenti, soggetti a errori e a elevato utilizzo di tempo. Poiché i team rilasciano ogni sprint, non è possibile eseguire manualmente queste attività.

CI/CD influenza anche l'architettura software. Garantisce il recapito di software compilabile e distribuibile. Quando i team implementano una funzionalità difficile da distribuire, diventano immediatamente consapevoli se la compilazione e le distribuzioni hanno esito negativo. CI/CD forza un team a risolvere i problemi di distribuzione man mano che si verificano. Il prodotto è quindi sempre pronto per la spedizione.

Abstract bar chart that shows the status of CI builds over time. Most builds succeeded. Only a few failed.

Esistono alcune attività CI/CD chiave importanti per uno sviluppo Agile efficace.

  1. Esecuzione di unit test. Gli unit test sono la prima difesa contro l'errore umano. Prendere in considerazione gli unit test come parte della codifica. Controllare i test in con il codice. Eseguire unit test in una parte di ogni compilazione. Gli unit test non superati indicano una compilazione non riuscita.

  2. Automazione della compilazione. Il sistema di compilazione deve eseguire automaticamente il pull del codice e dei test direttamente dal controllo del codice sorgente durante l'esecuzione delle compilazioni.

  3. Rami e criteri di compilazione. Configurare i criteri di compilazione e ramo per la compilazione automaticamente quando il team controlla il codice in un ramo specifico.

  4. Eseguire la distribuzione in un ambiente. Configurare una pipeline di versione che distribuisce automaticamente progetti compilati in un ambiente che simula la produzione.

Ridurre al minimo il debito tecnico

Con le finanze personali, è più facile rimanere fuori dal debito che scavare da sotto di esso. La stessa regola si applica con il debito tecnico. Il debito tecnico include tutto ciò che il team deve affrontare a causa di scorciatoie prese in precedenza. Ad esempio, se si è in base a una pianificazione rigorosa, è possibile sacrificare la qualità per soddisfare una scadenza. Il debito tecnico è il prezzo pagato in un secondo momento, quando è necessario effettuare il refactoring del codice per risolvere la mancanza di qualità. Alcuni esempi includono correzioni per risolvere problemi di progettazione, bug, problemi di prestazioni, problemi operativi, problemi di accessibilità e altri problemi.

Il mantenimento del debito tecnico richiede coraggio. Ci sono molte pressioni per ritardare la rielaborazione del codice. Si sente bene lavorare sulle caratteristiche e ignorare il debito. Purtroppo, qualcuno deve pagare il debito tecnico prima o poi. Proprio come il debito finanziario, il debito tecnico diventa più difficile da pagare più a lungo esiste. Un proprietario intelligente del prodotto collabora con il proprio team per garantire che ci sia il tempo di pagare il debito tecnico ogni sprint. Bilanciare la riduzione del debito tecnico con lo sviluppo delle caratteristiche è un compito difficile. Fortunatamente, esistono alcune tecniche semplici per la creazione di team produttivi incentrati sul cliente.

Essere sempre Agile

Essere Agile significa imparare dall'esperienza e migliorare continuamente. Lo sviluppo Agile offre più cicli di apprendimento rispetto alla pianificazione tradizionale dei progetti a causa dei cicli di processo più stretti. Ogni sprint offre qualcosa di nuovo per il team da apprendere.

Ad esempio:

  • Un team fornisce valore al cliente, ottiene commenti e suggerimenti e quindi modifica il backlog in base a tale feedback.
  • Apprendono che le compilazioni automatizzate mancano test chiave. Includono il lavoro nel successivo sprint per risolvere questo problema.
  • Rilevano che alcune funzionalità hanno prestazioni scarse nell'ambiente di produzione, quindi pianificano di migliorare le prestazioni.
  • Qualcuno del team sente una nuova pratica. Il team decide di provarlo per alcuni sprint.

I team che iniziano con lo sviluppo Agile dovrebbero aspettarsi maggiori opportunità di apprendimento. Sono una parte preziosa del processo perché portano alla crescita e al miglioramento.

Passaggi successivi

Esistono molti modi per risolvere un processo di sviluppo Agile adatto a un team. Azure DevOps offre vari modelli di processo. I team che cercano strutture di base diverse per la pianificazione possono usare questi modelli come punti di partenza. Per informazioni sulla selezione di un modello di processo più adatto alle impostazioni cultura e agli obiettivi di un team, vedere Scegliere un modello di processo o processo da usare in Azure Boards.

Man mano che le organizzazioni crescono, può essere una sfida rimanere disciplinata. Altre informazioni sul ridimensionamento di Agile in team di grandi dimensioni.