Chi è, perché e come è la gestione dei progetti nello sviluppo di software
Pubblicato: 2022-11-02Ti stai avventurando nello sviluppo di software. Hai un'idea a prova di futuro, requisiti dettagliati, competenze tecniche sufficienti e un team qualificato. Ti manca solo un project manager esperto. Con questi dati, quali sono le probabilità che tu completi il progetto?
La triste verità è che le possibilità di successo non sono così alte. Vari studi suggeriscono che le cause primarie dei fallimenti nello sviluppo del software sono per lo più legate a una cattiva gestione del progetto.
Errori comuni nella gestione dei progetti di sviluppo software che ne causano il fallimento sono la modifica degli obiettivi del progetto, la comunicazione inadeguata, la cattiva gestione delle modifiche, le stime dei costi imprecise, i rischi non identificati e altri.
Quindi, per assicurarti che il tuo progetto non vada fuori controllo, devi dare la priorità a una sana gestione del progetto. Di seguito, condividiamo la nostra esperienza nello sviluppo di soluzioni software aziendali, rispondendo a domande acute sulla gestione dei progetti di sviluppo software.
Quanto è importante la gestione del progetto per il successo del progetto di sviluppo software?
In breve, molto.
I progetti di sviluppo software sono in genere molto complessi. Affinché un progetto possa essere considerato un successo, deve soddisfare i requisiti e garantire un'elevata qualità di esecuzione, pur essendo completato nei tempi e nei limiti del budget. Ed è di questo che è responsabile un project manager.
I vantaggi dell'assunzione di talenti dedicati per la gestione di progetti di sviluppo software, quindi, si estendono a:
- Rischi ridotti
- Un project manager è responsabile di un'efficace gestione del rischio. All'inizio di un progetto, tracciano, documentano e assegnano priorità ai potenziali rischi, oltre a progettare una strategia di risposta al rischio.
Quattro modi comuni per rispondere ai rischi si estendono:
- Evita: elimina o evita una minaccia
- Mitiga: riduce la probabilità o l'impatto di una minaccia
- Trasferimento: assegnare o spostare una minaccia a una terza parte
- Accetta: riconosci una minaccia e scegli di non risolverla, trasferirla o mitigarla.
Per elaborare una strategia di risposta al rischio appropriata, un project manager può organizzare sessioni di brainstorming con il team, ricorrere allo storyboard o intervistare persone di tutte le parti delle operazioni. Con la strategia di gestione del rischio a disposizione, diventa più facile per il team di progetto prevedere i rischi e prevenirli tempestivamente.
- Migliore controllo sui costi del progetto
- I superamenti dei costi sono comuni nella gestione dei progetti di sviluppo software. Poiché non solo influiscono sui margini ma ostacolano anche la capacità di eseguire il progetto, un PM esperto propone un approccio ottimale alla gestione dei costi.
- Stimano, preventivano e controllano i costi durante tutto il ciclo di vita del progetto, con l'obiettivo di mantenere le spese all'interno della stanza approvata. Una sana gestione dei costi aiuta anche a definire le aspettative per le parti interessate, controllare l'oscillazione dell'ambito, aumentare il ROI del progetto e monitorare le tendenze dei costi a lungo termine.
- Utilizzo ottimale delle risorse
- Una sana gestione dei progetti nello sviluppo del software aiuta a garantire che tutte le risorse del progetto che abbracciano le persone, le loro competenze, tempo, strumenti, attrezzature e servizi siano coordinate e utilizzate in modo efficiente.
- Durante la fase di scoperta del progetto, un PM stima, alloca e pianifica le risorse necessarie, oltre a distribuirle in base alle priorità. Durante lo sviluppo, il PM tiene traccia dell'utilizzo delle risorse ed elimina eventuali colli di bottiglia che potrebbero ostacolare il completamento del progetto.
- Migliore controllo sull'ambito del progetto
- Un problema comune nella gestione dei progetti di sviluppo software, è meglio evitare lo scope creep. Le modifiche incontrollate influenzano la pianificazione del progetto, il budget, i costi e l'allocazione delle risorse, oltre a compromettere la consegna delle tappe fondamentali.
- Avvicinandosi alla gestione del progetto nello sviluppo del software, un PM imposta una procedura di richiesta di modifica e si assicura che venga seguita per ogni nuovo requisito. L'obiettivo è evitare lo scorrimento incontrollato dell'ambito e assicurarsi che il progetto venga consegnato in tempo e nel rispetto del budget. Una volta che la nuova attività è stata approvata e aggiunta all'ambito, la sequenza temporale del progetto e le linee di base del budget vengono aggiornate di conseguenza.
Che cos'è la gestione dei progetti nello sviluppo del software?
La gestione dei progetti nello sviluppo del software è l'arte di pianificare, programmare e tenere traccia delle attività del progetto date le risorse e i vincoli disponibili.
Come detto sopra, i progetti di sviluppo software sono piuttosto complessi e includono più fasi. Un project manager pianifica e supervisiona l'esecuzione del progetto durante queste fasi.
Secondo il Project Management Institute, ci sono cinque fasi chiave nel ciclo di vita di uno sviluppo software dal punto di vista di un PM.
Ideazione del progetto
L'obiettivo chiave della fase di ideazione del progetto è determinare gli obiettivi principali del progetto, definire le esigenze aziendali e redigere la dichiarazione di lavoro. Quest'ultimo dovrebbe includere, soprattutto, i requisiti per la soluzione futura e un programma di consegna del progetto. L'ideazione del progetto richiede in genere una stretta collaborazione tra tutte le parti interessate del progetto, con un analista aziendale e un project manager che assumono un ruolo guida.
Pianificazione del progetto
La fase di pianificazione del progetto è uno sforzo cooperativo di un project manager e un team di progetto. Il team di progetto progetta l'architettura tecnica di una soluzione e ne propone l'aspetto grafico. Un PM, a sua volta, elabora un piano di progetto, crea una struttura di ripartizione del lavoro e prepara un programma di progetto. L'obiettivo finale della fase è ottenere una chiara comprensione dell'ambito del progetto e gettare le basi per il monitoraggio e il controllo delle prestazioni del progetto.
In questa fase, un PM imposta anche strumenti di comunicazione e monitoraggio dei progressi, nonché piani per implementazioni future, definendo i criteri di accettazione.
Lancio ed esecuzione del progetto
Mentre un team di progetto è impegnato nella progettazione e nel test della soluzione futura, un project manager monitora le prestazioni del team, rimuove i colli di bottiglia che possono ostacolare il lavoro del progetto, facilita la comunicazione tra i membri del team e le parti interessate del progetto, documenta l'avanzamento del progetto, tiene traccia dei fattori scatenanti del rischio e segnala al cliente o all'alta dirigenza.
Accettazione del progetto
Nella fase di accettazione del progetto, la soluzione o una serie di risultati finali viene implementata in un ambiente di staging, dove viene testata in versione beta. Il team di sviluppo fornisce le volpi necessarie, se necessario. Il PM si assicura che la soluzione venga consegnata in modo completo e puntuale, oltre a garantire che il software fornito soddisfi i criteri di accettazione concordati. Un'altra parte della gestione del progetto nello sviluppo del software nella fase di accettazione del progetto riguarda la preparazione di guide per l'utente, istruzioni di installazione e altra documentazione del progetto.
Completamento del progetto
Una volta completato un progetto, un project manager tiene una revisione retrospettiva, in cui valuta e documenta gli alti e bassi dell'intero progetto. Garantiscono inoltre che l'intera portata dei risultati finali sia consegnata al cliente/proprietario del prodotto, inclusi tutto il codice sorgente, la documentazione del software, l'ambiente di sviluppo e altro ancora.
Queste fasi essenziali possono susseguirsi linearmente o consentire una maggiore sovrapposizione, a seconda dell'approccio scelto per la gestione dei progetti di sviluppo software.
Project management nello sviluppo di software: metodologie popolari
Le metodologie di gestione dei progetti software più utilizzate includono Scrum, Kanban (entrambi appartenenti alla famiglia Agile) e Waterfall.
Altri approcci meno diffusi alla gestione dei progetti nell'ambito dello sviluppo del software: il modello di sviluppo incrementale, il modello a spirale, PRINCE2 e il Rational Unified Process (RUP).
Mischia
Uno degli approcci più popolari alla gestione dei progetti nello sviluppo del software, Scrum suddivide il processo di sviluppo in sprint, da due a quattro settimane ciascuno. Gli sprint sono in genere preceduti da un'accurata pianificazione. Adatto a progetti con un alto livello di incertezza, Scrum si basa su team interfunzionali e auto-organizzati e abbraccia l'idea di uno sviluppo incrementale basato sull'osservazione e sulla sperimentazione.
La gestione dei progetti basata su Scrum nello sviluppo del software è leggermente diversa dalla gestione tradizionale in quanto non esiste un PM in quanto tale. Invece, le responsabilità di uno sono condivise tra un Product Owner e uno Scrum Master.
Kanban
La particolarità di Kanban è che non ci sono iterazioni esplicitamente definite. È un approccio snello alla gestione dei progetti di sviluppo software che aiuta a visualizzare l'ambito del progetto, limitare il lavoro in corso e garantire un flusso di lavoro regolare. La metodologia utilizza schede kanban fisiche o digitali che rappresentano il processo di lavoro unico del team.
Per sua natura, il modello è adatto per progetti di supporto e manutenzione.
Un'altra particolarità del Kanban è l'implementazione di un limite alla quantità di lavori in corso. La metodologia mira a bilanciare l'ambito e le risorse. Le attività vengono ritirate in base alla capacità disponibile, anziché essere inserite nel processo quando richiesto.
Le responsabilità di gestione di un progetto di sviluppo software sono in genere condivise tra due ruoli essenziali per Kanban: un responsabile dell'erogazione dei servizi e un responsabile delle richieste di servizio. Il primo è responsabile dell'aumento dell'efficienza dei flussi di lavoro, mentre il secondo è principalmente impegnato nell'interpretazione delle esigenze e delle aspettative del cliente.
Non è tuttavia necessario assumere altri membri del team per soddisfare le regole Kanban. In realtà, un PM esperto di solito è adatto per entrambi i ruoli.
Cascata
A differenza della famiglia Agile, la gestione dei progetti basata su Waterfall suddivide un progetto in fasi distinte e sequenziali.
Tradizionalmente, una nuova fase inizia una volta completata la precedente. I progetti Modern Waterfall, tuttavia, consentono un certo grado di sovrapposizione. È abbastanza comune per un team di test, ad esempio, iniziare a verificare le singole funzionalità durante lo sviluppo.
L'approccio Waterfall alla gestione dei progetti di sviluppo software funziona bene per progetti con portata prevedibile, tuttavia può lasciare i team di sviluppo impreparati e incapaci di adattarsi più velocemente della concorrenza.
Poiché ci sono peculiarità nella gestione dei progetti in Waterfall e Agile, analizziamo le differenze principali.
Qual è la differenza tra la gestione dei progetti Waterfall e Agile?
Diamo ora uno sguardo più dettagliato alle differenze tra le pratiche di gestione nei progetti Waterfall e Agile. Stiamo confrontando i due poiché sono più comuni di altre metodologie di gestione del progetto e ci sono differenze significative nel modo in cui il lavoro del progetto è organizzato in entrambi. Quest'ultimo influenza il ruolo e le responsabilità di un project manager (o un rispettivo ruolo in Agile).
Pianificazione del progetto
In Waterfall, è impossibile andare avanti senza una comprensione approfondita di ciò che stai costruendo e perché. Ecco perché la creazione di una specifica esauriente dei requisiti software è la priorità numero uno nei progetti Waterfall. Di solito, l'SRS è scritto da un analista aziendale. Ma in assenza di uno, un project manager può subentrare.
Agile, d'altra parte, consente una maggiore flessibilità. L'introduzione di miglioramenti dei prodotti e dei processi in movimento è l'essenza delle metodologie Agile. Le attività di pianificazione vengono generalmente eseguite uno sprint in anticipo. Il backlog viene creato durante il cosiddetto sprint zero.
Durante lo sprint zero, il team crea un numero minimo di storie utente da trasformare in un prodotto praticabile e, facoltativamente, imposta l'infrastruttura per lo sviluppo. Lo sprint è solitamente mantenuto leggero e di alto livello.

Gestione dell'ambito del progetto e budgeting
In Waterfall, l'ambito della soluzione deve rimanere intatto durante i progetti. Le richieste di modifica vengono gestite attraverso la procedura di Change Management e vengono fatturate separatamente. La gestione dei progetti nello sviluppo del software Agile offre maggiore flessibilità in termini di gestione dell'ambito, ma rende difficile valutare l'impatto delle modifiche dell'ambito sui costi finali del software. Ciò influisce sull'approccio al budget del progetto.
In Waterfall, il budget è top-down, controllato e basato su un business case dettagliato. Tale approccio consente di fornire una stima realistica dei costi una volta che i requisiti sono stati elicitati e analizzati. Il principale svantaggio è che questo approccio non funziona in ambienti volatili, incerti e ambigui, come spesso accade per i progetti di sviluppo software.
Il modo in cui Agile gestisce i costi dei progetti di sviluppo software è sensibile al cambiamento. E questo è sia un vantaggio che una complessità. Il budget agile è allineato con la struttura e il calendario del progetto. E poiché segue anche la struttura dello sprint, è più facile per il team adattarsi alle mutevoli circostanze, senza che ciò influisca sull'intero budget del progetto. Il project manager ricalibra semplicemente le spese nel prossimo round di pianificazione.
Risultati del progetto
Seguendo la strada Agile, le aziende ottengono un incremento di nuove funzionalità o qualche altro risultato, che si tratti di una visione tecnica, di una funzionalità funzionante o di un MVP, dopo ogni iterazione.
Nel classico Waterfall, invece, un cliente non ottiene alcuna soluzione coerente e funzionante fino alla fine del progetto. Le attività di test su vasta scala vengono condotte anche più avanti nel processo di sviluppo, il che potrebbe influire sul time to market.
Documentazione di progetto
Una pianificazione adeguata e documentata è un must nella gestione dei progetti di sviluppo software secondo Waterfall. I requisiti del progetto devono essere chiari in anticipo e ogni membro del team dovrebbe esserne a conoscenza. Ogni membro del team dovrebbe anche capire qual è il proprio ruolo all'interno del progetto e cosa ci si aspetta da loro. Anche queste informazioni vengono solitamente documentate e distribuite tra il team di progetto.
I team di Waterfall fanno spesso riferimento alla documentazione durante tutto il processo di sviluppo per semplificare il monitoraggio dei progressi. Ed è l'unico modo per farlo, considerando la lunghezza e la complessità dei progetti generalmente gestiti secondo Waterfall. La documentazione avviene in ogni fase, assicurando che tutti siano d'accordo sullo stato di avanzamento del progetto, nonostante la natura sequenziale del modello.
Mentre un'ampia documentazione serve a ridurre i rischi in Waterfall, riduce l'adattabilità al cambiamento in Agile. Pertanto, è comune produrre meno documentazione nei progetti Agile. E se viene prodotto, i documenti vengono mantenuti concisi.
Ma nonostante un'idea sbagliata comune, non c'è nulla nella metodologia Agile che impedisca intrinsecamente ai team di creare tutta la documentazione di cui hanno bisogno. Alcuni documenti sono, infatti, assolutamente necessari. L'aggiunta di storie utente al backlog, la stesura di wireframe e la documentazione delle riunioni dei clienti sono un must. Ciò che Agile suggerisce è essere più intelligenti riguardo al processo di documentazione ed evitare una documentazione troppo lunga.
Quali sono le responsabilità di un project manager?
Anche le responsabilità di un project manager differiranno in base all'approccio alla gestione di un progetto di sviluppo software. Vediamo cosa fa esattamente in ogni fase del progetto un PM o un rispettivo ruolo Agile.
In cascata
Un project manager è il ruolo più importante in ogni team di Waterfall. Sono responsabili della qualità dei risultati finali e del completamento del progetto nei tempi previsti. Le loro principali responsabilità includono la supervisione delle attività del progetto e la designazione dei compiti per i membri del team.
Analizziamo ora l'ambito di lavoro del PM in fasi.
In Agile
Un project manager Agile dà la priorità agli elementi del backlog per ogni sprint, monitora l'avanzamento dello sviluppo e stabilisce una comunicazione efficace all'interno del team, nonché tra il team e le parti interessate. Inoltre, monitorano i rischi in ogni fase del progetto e si assicurano che il processo di sviluppo aderisca ai principi Agile.
Ecco cosa fa un project manager in ogni fase di un progetto Agile:
Quali sono le insidie a cui prestare attenzione per un project manager?
La chiave del successo nella gestione dei progetti di sviluppo software è la capacità di prevenire ed evitare i rischi. Le insidie comuni che un buon PM dovrebbe tenere d'occhio:
Non avendo alcun controllo sull'ambito
Soprattutto in Agile, è normale che i clienti richiedano funzionalità aggiuntive in movimento, il che spesso fa andare storto i progetti. Un project manager, quindi, deve mettere in atto una chiara procedura di gestione del cambiamento per prevenire lo scope creep. Devono anche assicurarsi che le parti interessate siano d'accordo sull'impatto delle modifiche sulla sequenza temporale e sulle risorse del progetto.
Non concentrandosi sul rispetto della data di consegna
Sviluppando un prodotto con rigidi requisiti di time-to-market, ad esempio, un'app educativa che deve essere rilasciata prima dell'inizio dell'anno scolastico o un'app per la vendita al dettaglio che deve essere lanciata in tempo per i saldi di Natale, un PM deve scioperare il giusto equilibrio tra puntualità e garanzia di alta qualità.
Devono investire uno sforzo aggiuntivo nella definizione delle priorità delle funzionalità e nell'impostazione delle scadenze per ciascuna funzionalità da fornire. Anche i requisiti di qualità devono essere definiti in anticipo per evitare che si verifichino problemi dopo l'implementazione.
Non riuscire a stabilire una comunicazione efficace
Un'efficace gestione dei progetti nello sviluppo del software richiede una comunicazione efficace e trasparente. Stabilirne uno è la responsabilità chiave del PM. Devono tenere il team informato sulle decisioni degli stakeholder e informare regolarmente gli stakeholder di tutte le attività, i colli di bottiglia e le sfide del progetto.
Non riuscire a stabilire processi chiari
Seguire un processo di sviluppo software può sembrare un peso per i membri del team. Tuttavia, è necessario impostare un flusso di lavoro chiaro e adattato alle specifiche del progetto. Organizzerà il lavoro e chiarirà le aspettative.
Affidarsi a una tecnologia sconosciuta
Il project manager deve garantire che il team di ingegneri si concentri sulla risoluzione del problema aziendale del cliente quando effettua le scelte tecnologiche. Devono anche verificare che lo stack tecnologico scelto sia in linea con le migliori pratiche ingegneristiche.
Un'altra trappola legata alla tecnologia è la mancata pianificazione della scalabilità nelle prime fasi dello sviluppo del prodotto. Pertanto, consigliamo di definire in anticipo i requisiti di scalabilità insieme ad altri requisiti non funzionali.
Non pensare in anticipo al processo di implementazione
Il processo di implementazione viene spesso trascurato nelle prime fasi di sviluppo, il che porta a ritardi critici durante l'implementazione. Una sana gestione dei progetti nello sviluppo del software richiede un PM per garantire che i problemi di implementazione e installazione siano pensati nelle prime fasi del processo di sviluppo.
Come affrontare il project management nello sviluppo del software: la prospettiva di ITRex
Abbiamo incontrato Alexander Belkavets, Lead PM di ITRex, e lo abbiamo intervistato su come noi di ITRex affrontiamo la gestione dei progetti software. Ecco cosa abbiamo imparato.
Su quali fattori fai affidamento quando scegli un modello di project management appropriato per i nostri clienti?
Alexander: Ci sono molti fattori alla base della scelta di questo o quell'approccio alla gestione dei progetti. I più importanti sono l'ambito del progetto, il budget e il time-to-market.
Se stiamo lavorando su un prodotto che deve essere aggiornato regolarmente per generare continuamente valore per gli utenti finali, ad esempio un'app di gioco, opteremmo naturalmente per Scrum o un approccio simile a Scrum.
Se, d'altra parte, stiamo lavorando su una soluzione software commissionata da un ente governativo, il che di solito significa che il budget è fisso, preferiremmo optare per un approccio simile a Waterfall per garantire la prevedibilità necessaria. Non è raro, tuttavia, suddividere la fase di sviluppo in iterazioni più piccole. Pertanto, ricorriamo spesso a un approccio ibrido che ci consente di beneficiare della prevedibilità di Waterfall e del miglioramento continuo e della velocità di consegna di Agile.
Ci sono altri fattori che influenzano la scelta di una metodologia di project management?
Alessandro: Certo. Il settore in cui verrà utilizzata una soluzione futura, le esigenze di certificazione, la volontà del cliente di essere coinvolto nel processo e molti altri fattori influenzano anche il progetto.
Sviluppando soluzioni sanitarie, ad esempio, è comune optare per Waterfall. Negli Stati Uniti, prima che si possa commercializzare, ad esempio, un nuovo dispositivo sanitario, è necessario farlo approvare dalla FDA; e ciò richiede un'ampia documentazione, che sarebbe impossibile garantire seguendo Agile.
Cosa comporta esattamente il tuo ruolo di project manager? Qual è il tuo obiettivo chiave nella gestione dei progetti dei nostri clienti?
Alexander: Guardo al mio ruolo di project manager da due prospettive.
Il primo è: gestire un progetto è gestire i rischi. I progetti di sviluppo software sono soggetti a molti rischi, da requisiti intrinsecamente difettosi a un approvvigionamento inadeguato, a scenari tecnologici in evoluzione e oltre. L'obiettivo chiave di un project manager a questo riguardo è ridurre al minimo l'impatto dei rischi sul progetto e, quindi, massimizzare la possibilità che il software venga consegnato con successo.
La seconda prospettiva è: la gestione di un progetto sta diventando una sorta di integratore che consente a molti sottosistemi di progetto, come sviluppo, test e distribuzione, di unirsi armoniosamente. L'obiettivo principale di un PM è orchestrare tutti i processi all'interno del progetto in modo da innescare meno rischi e garantire il massimo utilizzo delle risorse.
Riesci a ripensare a un progetto in cui un approccio scelto alla gestione del progetto si è rivelato il fattore decisivo per garantire il successo di un prodotto?
Alexander: Stavamo sviluppando un'applicazione mobile per il nostro cliente e abbiamo dato il via al progetto con Scrum. Dopo aver rilasciato la prima versione dell'app e ottenuto le prime metriche del prodotto, abbiamo deciso di passare a Kanban.
Per mantenere i primi utenti, dovevamo continuare a fornire nuove funzionalità regolarmente, sebbene non fossero più necessari sprint di due settimane. Kanban ci ha permesso di adattare la durata dello sprint alla complessità delle nuove funzionalità, con uno sprint medio di tre o quattro settimane, quindi abbiamo continuato con il ritmo di consegna senza mettere sotto pressione il team di sviluppo. Di conseguenza, il nostro cliente è riuscito a trattenere e attirare nuovi utenti.
Poiché i team Agile sono posizionati per essere autogestiti, si è tentati di credere che un progetto possa anche essere completato senza un project manager dedicato. È così?
Alexander: Nel caso in cui non ci sia un PM dedicato, le responsabilità di uno dovrebbero essere distribuite in modo sottile su tutti i membri del team. Si dovrà ancora dedicare del tempo alla definizione delle priorità dell'arretrato, all'approvvigionamento di risorse, alla rendicontazione e all'esecuzione di altre attività di gestione essenziali. Ma in assenza di un PM, questi compiti sarebbero delegati a persone prive di competenze specialistiche. Ciò non aiuta a massimizzare l'utilizzo del talento.
Un approccio no-PM può funzionare per un piccolo team di 3-4 persone, ma quando questo numero aumenta, avere un project manager dedicato diventa vitale.
Se hai ancora domande senza risposta sulla gestione dei progetti di sviluppo software o sei disposto a cedere la responsabilità di guidare il tuo progetto a un partner esperto, contatta ITRex.
Pubblicato originariamente su https://itrexgroup.com il 24 ottobre 2022.
