Skip to main content
Key Takeaways

Obiettivo della gestione dei progetti: L'utilizzo della gestione dei progetti aiuta ad affrontare problemi come requisiti mancanti e responsabilità poco chiare nello sviluppo software.

Tipi di progetti: Progetti software diversi richiedono approcci gestionali differenti, dallo sviluppo ex novo agli aggiornamenti e alle applicazioni mobili.

Utilizzo delle metodologie Agile: Agile, Scrum e Kanban offrono vantaggi distinti ai team software e ciascuno è adatto a esigenze progettuali diverse.

Rischi principali: Tra i rischi comuni rientrano l'espansione incontrollata dell'ambito, il debito tecnico e i test insufficienti, tutti elementi che richiedono interventi di gestione strategica.

Se non utilizzi la gestione dei progetti per lo sviluppo software (o il software di gestione dei progetti giusto), probabilmente ti stai imbattendo in ogni sorta di problema che può compromettere i rilasci: requisiti di progetto non soddisfatti, ambito senza controllo, comunicazione inefficace e responsabilità poco chiare. La gestione dei progetti ti aiuta a riprendere il controllo e a effettuare più rilasci nei tempi previsti, rispettando il budget e l'ambito.

Questa guida tratta tutto ciò che devi sapere sulla gestione dei progetti per lo sviluppo software. Imparerai framework pratici per rilasciare più rapidamente, ridurre i rischi e creare un processo che il tuo team di sviluppo software possa sostenere. 

Che cos'è la gestione dei progetti software?

La gestione dei progetti software è la disciplina che consiste nel pianificare, coordinare e supervisionare la creazione o l'evoluzione di prodotti software lungo il ciclo di vita dello sviluppo software. Comprende l'ambito, la pianificazione temporale, il budget, la qualità, le dinamiche del team e la comunicazione con gli stakeholder per qualsiasi iniziativa in cui il software funzionante sia il principale risultato da consegnare.

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

I progetti software presentano sfide specifiche che i framework generici di gestione dei progetti non riescono ad affrontare completamente. Ecco un riepilogo delle loro differenze.

DimensioneGestione generale dei progettiGestione dei progetti software
Volatilità dell'ambitoDefinito nelle fasi iniziali, modifiche gestite formalmenteI requisiti cambiano continuamente in base ai feedback degli utenti
Tipo di risultatoRisultati fisici o basati su documentiCodice, API e interfacce utente immateriali
Cicli di feedbackRevisione successiva alla consegna o ispezione a fasi successiveIntegrazione continua, revisioni degli sprint, test beta
StrumentiDiagrammi di Gantt, strumenti di livellamento delle risorseSistemi di gestione delle attività, repository Git, pipeline CI/CD
Struttura del teamGerarchia basata sui ruoliSquadre interfunzionali con responsabilità condivisa

Sviluppo software e gestione dei progetti software

Lo sviluppo software consiste nello scrivere, testare e distribuire codice. La gestione dei progetti software consiste nell'assicurarsi che tale codice venga scritto, testato e distribuito in modo da fornire valore nei tempi previsti e rispettando il budget.

Ecco un confronto tra gli obiettivi dello sviluppo software e quelli della gestione dei progetti, per illustrare le differenze principali.

Obiettivi dello sviluppoObiettivi della gestione dei progetti
Creare funzionalità che soddisfino le specifiche tecnicheConsegnare le funzionalità giuste al momento giusto
Scrivere codice pulito e facilmente manutenibileMantenere allineati ambito, budget e pianificazione del progetto
Risolvere i bug e ridurre i difettiGestire i rischi, le dipendenze e le aspettative degli stakeholder
Ottimizzare le prestazioni del sistemaCoordinare i team interfunzionali e rimuovere gli ostacoli

Tipi di progetti software

Ecco una panoramica dei tipi più comuni di progetti software:

  • Nuovo sviluppo software: Stai costruendo tutto da zero, senza vincoli legati a sistemi precedenti. L'attenzione della gestione dei progetti si concentra sulla definizione dei requisiti, sulle decisioni architetturali e sulla prototipazione rapida. Il rischio maggiore è l'espansione dell'ambito, poiché tutto sembra possibile.
  • Aggiornamenti, patch e manutenzione continua: Si tratta di iniziative con un ambito più ristretto e aspettative di consegna rapida. L'attenzione della gestione dei progetti si concentra sulla definizione delle priorità, sui test di regressione e sul coordinamento dei rilasci. Il rischio in questo caso è l'accumulo di debito tecnico dovuto a scorciatoie.
  • Progetti di applicazioni mobili: I progetti mobili hanno cicli di iterazione rapidi, determinati dai tempi di revisione degli app store e dalla frammentazione dei dispositivi. La gestione dei progetti comprende la garanzia della qualità specifica per la piattaforma, le decisioni sulla parità delle funzionalità e i cicli di analisi degli utenti.
  • Soluzioni aziendali e SaaS: Queste soluzioni comportano requisiti rigorosi di conformità e scalabilità. L'attenzione della gestione dei progetti si sposta sulle revisioni della sicurezza, sulle considerazioni relative all'architettura multi-tenant e all'allineamento con cicli di vendita lunghi. La gestione degli stakeholder diventa più complessa.
  • Integrazioni di sistemi e migrazioni dei dati: Il lavoro è altamente tecnico e fortemente dipendente da sistemi esterni. L'attenzione della gestione dei progetti si concentra sulla mappatura delle dipendenze, sulla convalida dei dati e sulla pianificazione del ripristino. Il rischio per le tempistiche è superiore alla media, perché le API di terze parti e i sistemi precedenti introducono ostacoli imprevedibili.

Metodologie di gestione dei progetti per i team software

Metodo Agile

Agile è un approccio iterativo in cui il lavoro viene consegnato in incrementi piccoli e utilizzabili. Le squadre pianificano, sviluppano, testano e revisionano in cicli brevi, utilizzando il feedback per modificare continuamente la direzione. I quattro valori del Manifesto Agile (persone e interazioni più che processi e strumenti, software funzionante più che documentazione esaustiva, collaborazione con il cliente più che negoziazione dei contratti e risposta al cambiamento più che esecuzione di un piano) definiscono questa filosofia.

Una metodologia agile è più adatta quando è probabile che i requisiti cambino, quando il feedback degli utenti finali deve contribuire a definire il prodotto e quando le squadre lavorano nella stessa sede o hanno solide abitudini di comunicazione asincrona. È invece poco adatta ai progetti con tappe normative rigide o contratti a portata fissa, nei quali le richieste di modifica comportano penali finanziarie.

galen low headshot

Ecco cosa ho imparato a mie spese

La gestione agile dei progetti richiede prerequisiti culturali che la maggior parte delle organizzazioni sottovaluta. Serve sicurezza psicologica, affinché gli sviluppatori possano segnalare i problemi senza timore. Servono responsabili del prodotto con reali poteri decisionali, in grado di stabilire le priorità senza dover sottoporre ogni compromesso a un vicepresidente. Servono squadre realmente interfunzionali, non specialisti seduti in un canale Slack condiviso.

 

Senza queste basi, le squadre finiscono per praticare quello che definisco sviluppo guidato dalle cerimonie: organizzano le riunioni giornaliere, compilano le bacheche delle iterazioni, tengono le retrospettive e continuano a consegnare in ritardo perché le disfunzioni alla base non sono cambiate.

Scrum 

Scrum organizza il lavoro agile in iterazioni, ovvero cicli di durata fissa che generalmente vanno da una a quattro settimane. Esistono tre ruoli principali: il facilitatore Scrum, che agevola il processo; il responsabile del prodotto, responsabile del registro delle attività; e la squadra di sviluppo, che svolge il lavoro.

Ogni iterazione inizia con la relativa pianificazione, durante la quale la squadra seleziona gli elementi del registro delle attività che si impegna a completare. Ogni giorno, una breve riunione giornaliera allinea la squadra sui progressi del progetto e sugli impedimenti. Al termine dell'iterazione, la squadra presenta ciò che è stato realizzato durante una revisione e analizza cosa migliorare in una retrospettiva.

Scrum funziona bene quando le squadre hanno una composizione stabile, obiettivi chiari per l'iterazione e un responsabile del prodotto realmente disponibile. Entra in difficoltà negli ambienti caratterizzati da molto lavoro imprevisto, da risorse condivise tra più squadre Scrum o da organizzazioni in cui l'"impegno dell'iterazione" viene trattato come un obbligo contrattuale anziché come una previsione.

Kanban

Kanban utilizza una bacheca visiva (ovvero una bacheca Kanban) con colonne che rappresentano le fasi del flusso di lavoro. Gli elementi di lavoro vengono spostati da sinistra a destra quando si rende disponibile della capacità. Il meccanismo principale è costituito dai limiti WIP, ovvero limiti al numero di elementi che possono trovarsi contemporaneamente in una singola colonna. I limiti WIP impediscono il sovraccarico e mettono in evidenza i colli di bottiglia.

Kanban funziona bene per le squadre di manutenzione, per il lavoro guidato dalle richieste di assistenza e in qualsiasi ambiente in cui le priorità cambino quotidianamente. Funziona bene anche per le squadre che si stanno allontanando dalla gestione dei progetti ad hoc, perché la bacheca rende visibile il lavoro invisibile senza richiedere una revisione completa del processo. 

Unisciti alla community DPM per accedere a contenuti esclusivi, template pratici, eventi riservati ai membri e approfondimenti settimanali sulla leadership: è gratis. <br><br>

Unisciti alla community DPM per accedere a contenuti esclusivi, template pratici, eventi riservati ai membri e approfondimenti settimanali sulla leadership: è gratis.

Approcci ibridi

Metodi ibridi come Water-Scrum-Fall combinano la pianificazione iniziale del modello a cascata con l'esecuzione iterativa di Scrum.

In alcune organizzazioni, l'adozione di un approccio ibrido è una risposta ponderata a progetti che necessitano concretamente sia di governance sia di agilità. Ma se il vostro approccio ibrido prevede la pianificazione delle iterazioni saltando le retrospettive, oppure la stesura di un documento di avvio del progetto senza mai aggiornarlo, state semplicemente evitando di assumervi impegni.

La verifica è semplice: sapete spiegare perché ogni elemento del vostro approccio ibrido è presente e quale problema risolve? Se la risposta è "abbiamo sempre fatto così", la vostra metodologia ha bisogno di una retrospettiva tutta sua.

MetodologiaIdeale perDurata dell'iterazione/della faseFlessibilitàProfilo di rischio
AgileRequisiti in evoluzione, lavoro guidato dal prodotto1–4 settimaneElevataDa basso a medio
ScrumSquadre interfunzionali che sviluppano in modo iterativo1–4 settimane (fisse)ElevataDa basso a medio
KanbanManutenzione, operazioni, lavoro guidato dall'assistenzaContinuaMolto elevataBasso
IbridaProgetti aziendali, esigenze di governance misteVaria in base alla faseDa media a elevataMedio

Fasi del ciclo di vita dello sviluppo software (SDLC)

Ogni fase del ciclo SDLC prevede responsabilità, documenti e rischi specifici per la gestione del progetto. Ecco di cosa sei responsabile, in qualità di responsabile di progetto software, in ogni fase.

Pianificazione e raccolta dei requisiti

Il responsabile di progetto definisce l'ambito del progetto, raccoglie i requisiti aziendali e tecnici, identifica i portatori di interesse e crea il piano iniziale del progetto. I documenti includono il documento di avvio del progetto, il documento dei requisiti e il registro preliminare dei rischi.

Il rischio principale in questa fase è rappresentato dai requisiti incompleti. Quando i requisiti sono vaghi, tutto ciò che viene dopo ne risente. Organizza workshop strutturati di analisi e documenta i criteri di accettazione per ogni funzionalità principale prima di procedere.

I criteri di accettazione dovrebbero essere abbastanza specifici da permettere a due sviluppatori diversi che li leggono di realizzare la stessa cosa (i criteri di accettazione dato-quando-allora sono utili a questo scopo). Se i tuoi criteri possono essere interpretati in tre modi diversi, non hai ancora finito di scriverli.

Progettazione del sistema e dell'architettura

Il responsabile di progetto coordina architetti, sviluppatori e parti interessate per verificare che la progettazione proposta soddisfi le esigenze aziendali e rimanga entro il budget. Tra gli artefatti rientrano i diagrammi dell'architettura di sistema, le decisioni sullo stack tecnologico e le approvazioni delle revisioni della progettazione.

Il rischio principale è la sovraingegnerizzazione. A volte i team progettano pensando a una scalabilità di cui non hanno ancora bisogno e sprecano tempo e denaro in infrastrutture che non saranno rilevanti per anni. Ho visto un team trascorrere tre settimane a costruire un'architettura a microservizi per uno strumento che non avrebbe mai servito più di 200 utenti.

Un monolite con confini ben definiti sarebbe stato consegnato in una settimana. Il compito del responsabile di progetto è chiedere "quale problema risolve oggi?" e contestare la risposta "nessuno, per ora".

Sviluppo e realizzazione

Durante la fase di realizzazione, il responsabile di progetto monitora l'avanzamento dell'iterazione, gestisce le modifiche all'ambito attraverso un processo di richiesta di modifica e rimuove gli ostacoli. Tra gli artefatti rientrano l'elenco delle attività dell'iterazione, i grafici di avanzamento residuo e i report sullo stato.

Il rischio principale è l'aumento incontrollato dell'ambito. Ogni "aggiunta rapida" si accumula. Un tavolo disciplinato per le richieste di modifica, corredato da un'analisi dell'impatto, è la tua migliore difesa. L'analisi dell'impatto non deve necessariamente essere un documento formale.

Anche un messaggio Slack di tre righe (ad esempio, "L'aggiunta di questa funzionalità richiederà circa due giorni, farà slittare la riprogettazione dell'accesso e richiederà ulteriori test QA per il flusso di pagamento") costringe chi fa la richiesta a valutare il compromesso invece di considerare ogni aggiunta gratuita.

Test e QA

Il responsabile di progetto pianifica la copertura dei test, monitora la risoluzione dei difetti e verifica che i criteri di accettazione siano soddisfatti. Tra gli artefatti rientrano il piano di test, i registri dei difetti e i report di approvazione del QA.

Il rischio principale è una copertura dei test insufficiente, soprattutto per i casi limite e le integrazioni. I test anticipati, in cui il QA inizia a scrivere i casi di test durante la fase di progettazione, individuano i difetti prima e a costi inferiori. Un difetto trovato durante la progettazione richiede pochi minuti per essere corretto. Lo stesso difetto trovato in produzione costa ore, reputazione e talvolta ricavi.

Distribuzione e rilascio

Il responsabile di progetto coordina le tempistiche del rilascio, i piani di ripristino e le comunicazioni. Tra gli artefatti rientrano il piano di rilascio, la lista di controllo della distribuzione e i documenti delle decisioni di procedere o non procedere.

Il rischio principale è un errore di distribuzione in produzione. Le distribuzioni blu/verde e i rilasci graduali permettono di distribuire prima a un sottoinsieme di utenti e individuare i problemi prima che abbiano effetto su tutti.

Manutenzione e iterazione dopo il lancio

Dopo il lancio, il responsabile di progetto porta il progetto all'interno di un ciclo di manutenzione, classifica i difetti in arrivo e pianifica miglioramenti iterativi. Tra gli artefatti rientrano la revisione post-lancio, i report sugli incidenti e un elenco aggiornato delle attività del prodotto.

Il rischio principale è trascurare il prodotto dopo il lancio. Crea un piano per raccogliere i riscontri degli utenti e agire di conseguenza. Programma una revisione formale a 30 giorni dal lancio con l'intera squadra e le principali parti interessate. Esamina le metriche di utilizzo, le richieste di assistenza e le richieste di funzionalità. Poi assegna le priorità alla prossima iterazione prima che la squadra venga riassegnata e le conoscenze acquisite svaniscano.

Gestione del debito tecnico

Il debito tecnico è uno degli aspetti più importanti supervisionati da un responsabile di progetto software e uno dei meno visibili. È il costo accumulato delle scorciatoie, del refactoring rimandato, delle dipendenze obsolete e delle decisioni architetturali che erano corrette all'epoca, ma non sono più adatte.

Il ruolo del responsabile di progetto è rendere visibile il debito tecnico alle parti interessate e assicurarsi che gli venga dedicata una capacità specifica nell'elenco delle attività. In pratica, questo significa tre cose.

  • Mantenere un registro del debito tecnico insieme all'elenco delle funzionalità. Ogni elemento dovrebbe includere una descrizione del debito, il suo impatto stimato sulla velocità o sull'affidabilità e il costo necessario per affrontarlo. In assenza di questo registro, il debito rimane invisibile finché non provoca un'interruzione del servizio o rallenta la distribuzione.
  • Destinare capacità dell'iterazione alla riduzione del debito. Inizia con il 15–20%. Alcune squadre preferiscono un'"iterazione del debito tecnico" dedicata, ma secondo la mia esperienza una destinazione costante impedisce la dinamica per cui il lavoro sul debito viene annullato ogni volta che si avvicina una scadenza.
  • Collegare il debito ai risultati aziendali quando comunichi con le parti interessate. Ad esempio, potresti dire "L'architettura attuale del modulo di autenticazione aggiunge due giorni a ogni funzionalità che riguarda l'accesso, e tre delle nostre prossime cinque funzionalità riguardano l'accesso" invece di "Dobbiamo effettuare il refactoring del modulo di autenticazione".
galen low headshot

Author's Tip

Il più grande errore che vedo commettere ai project manager riguardo al debito tecnico è trattarlo come una questione di competenza degli ingegneri che non richiede il coinvolgimento della gestione del progetto. Se il debito sta rallentando il tuo team, è un problema di gestione del progetto.

Gestione dei team distribuiti e remoti

I team distribuiti e remoti creano specifiche difficoltà di gestione del progetto di cui devi tenere conto.

Coordinamento dei fusi orari

Quando il tuo team si estende su più di quattro o cinque fusi orari, la sovrapposizione sincrona si riduce a una finestra ristretta. Proteggi quella finestra e usala solo per le decisioni che richiedono una discussione in tempo reale, come la pianificazione degli sprint, le revisioni del design e gli impedimenti.

Pubblica una mappa degli "orari del team" che mostri gli orari di lavoro di ciascun membro e le finestre di sovrapposizione. Rendila visibile nello strumento che il tuo team utilizza quotidianamente. 

Progettazione delle cerimonie asincrone

Le cerimonie Scrum tradizionali presuppongono la presenza nello stesso luogo. Adattarle ai team distribuiti significa ripensarne il formato. Gli incontri giornalieri possono consistere in aggiornamenti scritti asincroni pubblicati in un canale condiviso entro una scadenza giornaliera. Ogni aggiornamento riguarda ciò che è stato completato, ciò che è previsto e ciò che è bloccato. Il project manager esamina gli impedimenti e interviene su di essi invece di aspettare una riunione.

Le revisioni dello sprint possono combinare un video dimostrativo registrato con una sessione dal vivo di domande e risposte programmata durante la finestra di sovrapposizione. In questo modo, i membri del team che non possono partecipare dal vivo possono guardare la demo nel momento che preferiscono e inviare domande in modo asincrono.

Le retrospettive sono le cerimonie più difficili da svolgere in modo asincrono perché dipendono dalla sicurezza psicologica e dal dialogo aperto. Mantieni sincrone le retrospettive, anche se ciò significa organizzarle meno frequentemente.

La documentazione come infrastruttura

Nei team distribuiti, la documentazione smette di essere facoltativa. Se una decisione non viene messa per iscritto, è come se non fosse mai stata presa, perché le tre persone che non erano online durante quella conversazione su Slack non la vedranno. Mantieni un'unica fonte di verità per le decisioni, le scelte architetturali e i cambiamenti di priorità. Aggiornala lo stesso giorno in cui viene presa la decisione, non una settimana dopo, quando metà del contesto è andata persa.

Metriche e KPI per la gestione dei progetti software

Le metriche ti dicono se il tuo processo funziona davvero o se dà soltanto questa impressione. Ecco quelle che monitoro in ogni progetto:

KPICosa misuraPerché misurarloFrequenza idealeQuando intervenire
VelocitàLavoro completato per sprint (ad esempio, punti storia o attività)Ti consente di misurare il livello relativo di impegno di ogni sprint e la velocità di lavoro del teamOgni sprintQuando diminuisce del 20% o più per due sprint consecutivi
Tempo di cicloDurata di un singolo elemento di lavoroAiuta a individuare i colli di bottiglia nel flusso di lavoro, così puoi concentrare i tuoi sforziSettimanaleQuando la media supera del 50% l'obiettivo del tuo team
Tempo di consegnaDurata dal backlog alla consegnaFornisce una visione della velocità end-to-end ed è facilmente interpretabile dagli stakeholderSettimanaleQuando gli stakeholder riferiscono che la consegna sembra lenta
Densità dei difettiBug per righe di codice o funzionalitàAiuta a individuare tendenze che segnalano problemi di qualità nello sviluppo o nei testPer ogni rilascioQuando la densità aumenta per tre rilasci consecutivi
Accuratezza del burndownCompletamento dello sprint pianificato rispetto a quello effettivoAiuta a individuare problemi di stima, cambiamenti dell'ambito durante lo sprint o entrambiOgni sprintQuando il pianificato e l'effettivo divergono costantemente del 30% o più
Soddisfazione degli stakeholderFiducia degli stakeholder nella consegnaAiuta a garantire il successo del progettoTrimestraleQuando la soddisfazione diminuisce o il feedback si interrompe del tutto

Ecco alcuni metodi utili per monitorare i progressi:

  • I grafici burndown mostrano il lavoro rimanente nel tempo all'interno di uno sprint. Sono utili per gli incontri giornalieri e per i controlli dello stato di salute dello sprint.
  • I grafici burnup mostrano il lavoro completato nel tempo rispetto all'ambito totale, rendendo visibili i cambiamenti dell'ambito. Se la linea dell'ambito totale continua a salire, puoi vedere l'espansione incontrollata dell'ambito in tempo reale.
  • I diagrammi del flusso cumulativo visualizzano quanti elementi si trovano in ogni fase del flusso di lavoro per  rivelare l'accumulo di WIP e le tendenze della produttività. Una fascia che si allarga in qualsiasi colonna indica che il lavoro si sta accumulando in quel punto.
  • La gestione del valore acquisito (EVM) confronta il valore pianificato, il valore acquisito e il costo effettivo per prevedere le prestazioni di budget e pianificazione. È più complessa di quanto desideri la maggior parte dei team agili, ma è utile per i progetti a budget fisso con requisiti di reportistica esterna.

Migliori pratiche per la gestione dei progetti software

Ecco alcune migliori pratiche fondamentali per la gestione dei progetti software.

Definizione degli obiettivi e chiarezza dei requisiti

Utilizza obiettivi SMART adattati all'ambito del software. Invece di scrivere "migliorare il flusso di pagamento", scrivi "ridurre del 15% l'abbandono durante il pagamento entro il terzo trimestre riprogettando la fase di pagamento e aggiungendo il supporto ad Apple Pay". Ogni obiettivo dovrebbe avere un risultato misurabile, una scadenza e un responsabile.

La parte più sottovalutata della definizione degli obiettivi di progetto è dire di no. Un obiettivo che cerca di realizzare quattro cose non ne realizza bene nessuna. Limita a un massimo di due obiettivi principali per iterazione e un obiettivo ambizioso. Se tutto è una priorità, niente lo è.

Strategie di comunicazione

Adotta un approccio alla comunicazione basato innanzitutto sull'asincronia. Scrivi gli aggiornamenti sullo stato in un documento condiviso o in uno strumento di gestione dei progetti invece di programmare un'altra riunione. Riserva il tempo sincrono alle decisioni, alle dimostrazioni e alle retrospettive.

Utilizza un riepilogo settimanale per le parti interessate, riunioni giornaliere per la squadra di realizzazione (in modalità asincrona per le squadre distribuite) e una dimostrazione bisettimanale per le parti interessate più ampie. Mantieni gli aggiornamenti sullo stato brevi e strutturati. Inizia indicando cosa è stato rilasciato, cosa è bloccato e cosa arriverà dopo.

Allocazione e gestione delle risorse

Crea una matrice delle competenze che mappi i punti di forza, le aree di crescita e la disponibilità di ogni membro della squadra. Utilizzala durante la pianificazione dell'iterazione per bilanciare il carico di lavoro ed evitare singoli punti di vulnerabilità. Quando i membri della squadra sono condivisi tra più progetti, stabilisci in anticipo le regole di priorità, così non dovranno cambiare continuamente contesto.

Standard di qualità

Definisci la tua definizione di completato prima dell'inizio della prima iterazione. Una buona definizione di completato potrebbe includere la revisione del codice completata, i test unitari superati, i test di integrazione superati, la documentazione aggiornata e l'approvazione del responsabile del prodotto. Non lasciare che "completato" significhi "compila".

Metti per iscritto la tua definizione di completato, pubblicala in un luogo visibile alla squadra e applicala senza eccezioni per le prime tre iterazioni. Dopodiché, la squadra la applicherà autonomamente. La prima volta che permetti di contrassegnare una storia come "completata" senza soddisfare i criteri a causa della pressione delle scadenze, stabilisci che la definizione è facoltativa. Non si recupera più.

Miglioramento continuo

Organizza retrospettive dopo ogni iterazione e dopo ogni rilascio. Concentrati su una o due azioni per retrospettiva e verificane l'avanzamento nel ciclo successivo. Le retrospettive che producono elementi d'azione senza alcun seguito erodono rapidamente la fiducia.

Inizia ogni retrospettiva esaminando gli elementi d'azione dell'ultima retrospettiva. Li abbiamo realizzati? Sono stati utili? Se la risposta è "non li abbiamo realizzati", questo è già l'argomento della retrospettiva. Gli elementi d'azione non erano abbastanza importanti da essere prioritizzati oppure la squadra non ha la capacità o l'autorità per attuarli. Entrambe le possibilità meritano di essere discusse con onestà.

Problemi comuni e soluzioni comprovate

Ecco alcune delle principali difficoltà che incontrerai nella gestione dei progetti software e come risolverle.

ProblemaCausa principaleSoluzione
Espansione incontrollata dell'ambitoRequisiti poco chiari, debole controllo delle modificheComitato per le richieste di modifica con modello di analisi dell'impatto
Colli di bottiglia nelle risorseScarsa visibilità sulla capacitàMatrice delle competenze combinata con una pianificazione dell'iterazione a carico bilanciato
Problemi di allineamento della squadraComunicazione a compartimenti stagniRiunioni giornaliere interfunzionali e OKR condivisi
Rischi per la qualitàCopertura dei test insufficienteControllo qualità anticipato con blocchi automatizzati per la regressione
Pressioni sulle tempistichePregiudizio ottimistico nelle stimeConfronto con la velocità storica e iterazioni di riserva
galen low headshot

Author's Tip

Il problema più profondo è che molte modifiche all’ambito entrano nel progetto attraverso canali informali che aggirano qualsiasi processo formale. Un stakeholder menziona una “piccola modifica” durante una demo. Uno sviluppatore aggiunge una funzionalità che pensa possa piacere agli utenti. Il product owner reinterpreta una user story a metà sprint per includere funzionalità aggiuntive.

 

Affronta l’espansione incontrollata dell’ambito a tre livelli.

  1. Il livello formale: Ogni modifica, indipendentemente dalle dimensioni, passa attraverso un’analisi documentata dell’impatto che includa l’impegno richiesto, l’impatto sulla tempistica e ciò che viene de-prioritizzato per fare spazio.
  2. Il livello culturale: Il team ha bisogno di un linguaggio condiviso e dell’autorizzazione a dire “questa è una modifica dell’ambito” senza che ciò venga percepito come un atteggiamento conflittuale.
  3. Il livello strutturale: Gli obiettivi dello sprint devono essere abbastanza specifici da consentire a tutti di riconoscere quando un’aggiunta proposta esula da essi.

Gestione del budget e stime

Esistono diversi metodi che puoi utilizzare per stimare i costi e le ore dei progetti di sviluppo software.

  • La stima analogica utilizza i costi effettivi di progetti simili realizzati in passato. È rapida, ma si basa sulla disponibilità di dati storici comparabili. La precisione dipende interamente da quanto il progetto passato fosse effettivamente simile, e le persone tendono a sovrastimare la somiglianza.
  • I modelli parametrici applicano relazioni statistiche tra i dati storici e le variabili del progetto. Se il costo medio per punto storia è $1,200, puoi prevedere il budget a partire dai punti storia stimati. Funziona bene per le organizzazioni con pratiche mature di monitoraggio.
  • La stima dal basso verso l'alto assegna un prezzo a ogni attività e lo aggrega in un totale. È precisa, ma anche dispendiosa in termini di tempo. Riservala ai progetti in cui l'accuratezza del budget è fondamentale (ad esempio, contratti a prezzo fisso, attività finanziate da sovvenzioni o situazioni in cui un superamento dei costi del 20% avrebbe conseguenze gravi).
  • La stima a tre punti utilizza valori ottimistici, più probabili e pessimistici per produrre una media. Tiene conto dell'incertezza e offre l'ulteriore vantaggio di costringere il team a riflettere su ciò che potrebbe andare storto, contribuendo così alla gestione dei rischi.

Qualunque sia il metodo utilizzato, il software per il monitoraggio del tempo può fornire le ore effettivamente dedicate alle attività e ai progetti, consentendo di confrontarle con le stime.

galen low headshot

Una nota sul problema delle stime

La maggior parte dei fallimenti nella pianificazione delle tempistiche dei progetti risale alle stime, e la maggior parte degli errori di stima risale a una di due cause: ancoraggio e complessità non considerata.

 

L’ancoraggio si verifica quando qualcuno (di solito una persona senior o uno stakeholder) dichiara una tempistica prima che il team elabori la propria stima. Una volta che quel numero è sul tavolo, ogni stima tende a convergere verso di esso. La soluzione richiede disciplina: il team elabora la stima prima che venga condivisa qualsiasi tempistica proposta dagli stakeholder.

 

La complessità non considerata deriva dal fatto che le conversazioni sulle stime si concentrano sul lavoro e ignorano le attività indirette: revisioni del codice, test, distribuzione, documentazione, riunioni e l’inevitabile alternanza tra contesti che consuma il 20% della settimana di uno sviluppatore. Aggiungi un margine del 30% alle stime iniziali dell’ingegneria del software come punto di partenza e modificalo in base alle prestazioni effettive osservate nell’arco di tre o quattro sprint.

 

Qui sostengo una posizione che potrebbe essere controversa: nella maggior parte delle organizzazioni, la stima tradizionale basata sui punti storia è in gran parte una formalità. I team trascorrono ore in sessioni di pianificazione attraverso il planning poker e le stime risultanti hanno una correlazione debole con i tempi di consegna. Le previsioni basate sul tempo di ciclo (che utilizzano dati storici sulla durata di attività simili) producono risultati affidabili con un impegno minore.

Monitoraggio del budget durante tutto il ciclo di vita del progetto

Monitora la spesa pianificata rispetto a quella effettiva almeno ogni due settimane. Le metriche del valore acquisito, come l'indice di efficienza dei costi (CPI) e l'indice di efficienza della pianificazione (SPI), forniscono avvisi tempestivi. Un CPI inferiore a 1,0 significa che stai spendendo di più per ogni unità di lavoro rispetto a quanto pianificato. Se lo individui tempestivamente, puoi modificare l'ambito, la tempistica o le risorse prima che il budget si esaurisca.

Una buona abitudine relativa al budget che ho sviluppato consiste in una semplice revisione del ritmo di spesa ogni due settimane. Confronta il tuo attuale tasso di consumo con il budget e il lavoro rimanenti. Se i conti non tornano, hai esattamente tre opzioni: ridurre l'ambito, estendere la tempistica o aggiungere risorse. 

Prevenzione degli sforamenti dei costi

Gli sforamenti dei costi più consistenti derivano da tre fonti: modifiche all'ambito senza adeguamenti del budget, complessità sottostimata e individuazione tardiva dei difetti.

Un processo formale di richiesta di modifica che includa un'analisi dell'impatto sui costi affronta il primo problema. Quando una parte interessata richiede un'aggiunta, la risposta dovrebbe sempre includere: "ecco quanto costa e cosa comporta escludere". 

La stima a tre punti affronta il secondo problema integrando l'incertezza nelle previsioni invece di ignorarla. La differenza tra i valori ottimistico e pessimistico è di per sé un'informazione utile. Un'attività per la quale la stima ottimistica è di due giorni e quella pessimistica di tre settimane indica che il team di progetto non comprende il lavoro abbastanza bene da poterlo stimare.

I test anticipati affrontano il terzo problema. La curva dei costi della correzione dei difetti è ben documentata: un bug individuato nei requisiti costa 1 volta tanto da correggere, 6 volte tanto se individuato durante lo sviluppo, 15 volte tanto durante i test e 100 volte tanto in produzione. Ogni dollaro investito nei test iniziali ripaga il proprio costo.

Cosa succede ora?

Il software di gestione dei progetti adatto allo sviluppo software può rendere molto più semplice l'implementazione di queste buone pratiche. Puoi anche ricevere ulteriori indicazioni su come scegliere lo strumento software di gestione dei progetti adatto alle tue esigenze.