Il Project Management è costituito da un insieme di principi, di metodi e di tecniche tra loro integrati per gestire progetti.
A sua volta un progetto è uno sforzo articolato e caratterizzato da risultati specifici in termini di:
- deliverables e prodotti/servizi forniti (scope);
- tempi impiegati (time);
- budget necessari a produrre i risultati attesi (cost).
Scope, time & cost definiscono un insieme di vincoli che insieme con la qualità di progetto costituiscono il “perimetro” entro cui il progetto deve essere gestito.
Pertanto, il project management consiste nella gestione di prodotti, tempi, costi e qualità in modo da renderli tra loro compatibili.
Tipicamente un progetto si articola in una serie di fasi che costituiscono il ciclo di vita del progetto stesso:
- Definizione e Avvio
- Pianificazione
- Realizzazione
- Chiusura
Queste fasi a loro volta si articolano in una serie di macro-attività diverse se osservate dal punto di vista del committente o dal punto di vista di chi è chiamato a realizzare il progetto.
Inoltre tali attività variano notevolmente in funzione del contesto industriale in cui il progetto si svolge. I progetti di ingegneria civile presentano un’articolazione diversa rispetto ai progetti software oppure rispetto ai progetti di ricerca e sviluppo.
La gestione del ciclo di vita di progetto può essere affrontata con approcci e modelli diversi di Project Management.
Il primo approccio è quello cosiddetto “a cascata” in cui le fasi di definizione, pianificazione, implementazione e chiusura sono svolte sequenzialmente.
I modelli di project management waterfall si basano sul principio che una fase non può iniziare se la fase precedente non è terminata in quanto necessita dei prodotti e della documentazione creati dalla fase precedente.
Nella realtà esiste sempre un certo margine di sovrapposizione delle suddette fasi poiché, ad esempio, alcune attività di pianificazione possono essere svolte mentre ancora si stanno completando quelle relative all’avvio del progetto.
Questa modalità è particolarmente utile quando le informazioni di cui si dispone sono consistenti e permettono quindi di pianificare il progetto avendo tutti gli elementi per poter costruire il piano di progetto.
Quando questo non è possibile, è opportuno gestire il progetto con un approccio iterativo che ben si presta a gestire progetti di ricerca e sviluppo oppure progetti di sviluppo software che si articolano attraverso rilasci successivi ognuno dei quali va a correggere le disfunzionalità della precedente release ed i bugs che sono emersi nel frattempo.
Un approccio iterativo di project management parte dal presupposto di ritornare più volte sulle varie fasi ridefinendo di volta in volta i vincoli di progetto finché non si raggiunge un sufficiente grado di maturità del prodotto che consente di stabilizzarlo e renderlo disponibile sotto forma di release per poi migliorarlo nel tempo attraverso nuovi progetti che produrranno nuove release o versioni dello stesso prodotto.
In questa logica è anche possibile che in un determinato momento una componente del progetto sia in una fase di definizione mentre un’altra componente sia in una fase di implementazione.
E’ naturalmente possibile anche utilizzare un mix dei due approcci gestendo il progetto complessivo con un approccio waterfall per contenerne i costi complessivi e gestendo la produzione di alcuni deliverables con un approccio iterativo se il progetto è innovativo e non si dispone di tutte le informazioni necessarie a pianificarlo in modo completo al primo passaggio.
Nei modelli di project management iterativi i costi possono andare fuori controllo se non si adottano misure di contenimento.
Ciò impone di adottare un modello di Project management di tipo “time & money boxing” per cui ad ogni ciclo di sviluppo vengono assegnati finestre temporali e budget rigidi e ci si accontenta della qualità raggiunta entro tali finestre.
Oppure si adotta un approccio waterfall per gestire un certo numero di cicli di sviluppo all’interno di un piano complessivo che fissa i tempi ed i costi complessivi ribaltandoli sui vari cicli di sviluppo.
Ogni ciclo verrà poi gestito con un approccio iterativo entro i vincoli fissati dal piano complessivo.
E’ bene ricordare che buona parte delle cause di insuccesso di un progetto derivano dalla tendenza a dedicare poco tempo alle fasi di definizione e pianificazione per cui c’è effettivamente la possibilità che un approccio iterativo venga inteso come un modo per aggirare il problema rimandando al ciclo successivo di sviluppo gli inconvenienti che sono emersi durante l’implementazione.
Il problema del contenimento dei tempi e dei costi è un fatto ineludibile e nella maggior parte dei casi un approccio altamente strutturato come il metodo waterfall consente di tenere sotto controllo i tentativi di deviare rispetto agli obiettivi fissati in fase di avvio.
Un ulteriore approccio di Project Management che consente di gestire situazioni in cui esistono vincoli specifici sulle risorse impiegate sulle diverse attività che compongono un progetto è quello della Critical Chain.
Questo approccio implica una diversa modalità di costruzione della schedulazione di progetto introducendo delle protezioni rispetto a possibili sforamenti rispetto ai tempi concordati.
Applicare il modello della critical chain permette inoltre di far emergere la generale tendenza a sovrastimare la durata delle attività di progetto per proteggersi dalle interferenze e dai ritardi organizzativi. Con questo modello la gestione della contingency viene esplicitata e riportata a livello di progetto e non di singola attività o risorsa.