Project Management per Project Manager Estratto dalla Metodologia di Project Management TenStep v.13.00 A6.2 Confronto TenStep e Sviluppo Agile A6.2.P1 Elementi dello Sviluppo Agile Negli ultimi anni, sono state pubblicate numerose idee su come rendere lo sviluppo software più semplice, più facile e più rispondente ai bisogni dell’utente. Alcuni esempi sono Extreme programming, Scrum e Crystal. Diciassette persone impegnate su queste idee si sono incontrate in Utah l'11, 12 e 13 Febbraio 2001 per trovare una linea comune sullo sviluppo software. Il risultato fu un manifesto di principi e filosofie riportato qui sotto. Mentre la maggior parte della filosofia tratta i reali processi di sviluppo software, solo pochi punti toccano il project management. In generale, il Processo TenStep è complementare a questo processo di sviluppo in molte aree, mentre, in alcune aree c'è divergenza di opinioni. Di seguito, puoi leggere il manifesto, insieme ai nostri commenti su come il manifesto si pone rispetto al Processo TenStep. Il Manifesto per lo Sviluppo Software Agile Concordato da diciassette anarchici: Noi scopriamo modi migliori per sviluppare software facendolo ed aiutando altri a farlo. Con questo lavoro siamo arrivati alle seguenti conclusioni (valore): Individui ed interazioni più che processi e strumenti. Sviluppare il software più che produrre documentazione. Collaborare con il cliente più che negoziare un contratto. Rispondere ai cambiamenti più che seguire un piano. Processo di Project Management TenStep® L'esperienza dell'autore è che l'esecuzione di più progetti in un’organizzazione ha più possibilità di riuscita con processi consistenti, flessibili e scalabili. Se questi processi sono stati utilizzati con successo precedentemente, c'è maggiore probabilità di successo. Noi consideriamo il Processo TenStep molto “light” ma rappresenta il requisito minimo per gestire un progetto con successo. Molte (ma non tutte) le filosofie del Processo TenStep supportano lo sviluppo Agile. Ciò vuol dire che, mentre riconosciamo del valore agli argomenti di destra, noi diamo più valore a quelli di sinistra. Noi seguiamo i seguenti principi: La nostra più alta priorità è soddisfare il cliente attraverso il rilascio di software di valore, veloce e costante. Ben vengano le modifiche ai requisiti, anche tardi nello sviluppo. I processi Agile sfruttano le modifiche per il vantaggio competitivo del cliente. Consegnare lavoro software frequentemente, da poche settimane a pochi mesi, con preferenza per periodi più brevi. Confronto Agile-Tenstep La filosofia Agile promuove lo sviluppo iterativo, con requisiti iniziali seguiti da codifica, da ulteriori requisiti e ulteriore codifica. Ciò è bello, ma lo sviluppo iterativo non è l’approccio ideale per tutti i progetti software. Dovrebbe essere tentato solo dove può essere implementato. Con lo sviluppo iterativo generale, i requisiti non devono essere fissati inizialmente. Però, anche con lo sviluppo iterativo tradizionale, ad un certo punto, bisogna congelare i requisiti per rilasciare qualcosa. A questo punto, entra in gioco la gestione delle modifiche al contenuto. Con Agile, i requisiti possono cambiare in qualsiasi momento del progetto. L’idea è che il cliente può continuare a richiedere modifiche, in base alle sue priorità, ad ogni iterazione. Per esempio, se il cliente aveva chiesto tre report e successivamente ne vuole quattro, il quarto report può essere aggiunto alla lista dei requisiti senza nessun problema. Ad un certo punto, il cliente dovrà indicare una priorità per questo nuovo report, e il nuovo report verrà prodotto quando vuole il cliente. Se il budget del cliente è aperto, allora non c’è bisogno di nessun processo formale di modifica all’ambito – il report può essere realizzato in qualunque momento. Se, invece, il cliente ha un budget fisso, allora, il cliente dovrà dare qualche priorità, vale a dire che qualche altro pezzo di lavoro dovrà essere rinviato. In questo scenario, il cliente rinforza la gestione delle modifiche all’ambito per garantirsi la realizzazione delle modifiche di priorità più alta. L’approccio TenStep sostiene che quando ci sono modifiche di business, il team di progetto deve essere preparato a rispondere. Però, le modifiche ai requisiti hanno conseguenze in termini di budget e scadenze che devono essere approvate dallo sponsor. Se il team lo fa, vuol dire che gestisce modifiche all’ambito. Il processo TenStep raccomanda di dividere i grandi progetti in una serie di progetti più piccoli, in modo che ognuno possa essere rilasciato più velocemente e con continuità. Non tutti i progetti hanno questa flessibilità, ma la preferenza è per progetti più piccoli, quando è possibile. Vito Madaio - TenStep Italia pag. 1 Project Management per Project Manager I processi Agile considerano estremo il ciclo di consegna breve. Alcuni progetti di programmazione estrema hanno un ciclo veramente breve, anche di una sola settimana. Sebbene ciò sia difficile da gestire, non c'è niente di sbagliato con questo modo di fare. Utenti e sviluppatori lavorano quotidianamente insieme nel corso del progetto. Questo è il migliore approccio per stare in contatto con le necessità del cliente. Costruire progetti intorno ad individui motivati. Concedere loro l'ambiente ed il supporto che serve, e responsabilizzarli sulla realizzazione del lavoro. A volte, persone molto motivate finiscono nei guai, anche se rilasciano i progetti in tempo (Deming riconobbe questo fenomeno già mezzo secolo fa). Pongono troppa attenzione ai dettagli dello sviluppo e non abbastanza alla gestione di budget e scadenze. Se le persone motivate realizzassero i loro progetti sempre in tempo, ci dovrebbe essere una più alta percentuale di progetti finiti bene. A volte bisogna metter persone motivate in ambienti più strutturati per avere successo. L'autore crede che il migliore approccio è sviluppare i progetti con persone motivate e poi assicurarsi che abbiano strumenti, processi e competenze giuste per eseguire il loro lavoro. Il metodo più efficiente ed efficace di trasmettere informazioni con il team di sviluppo è la conversazione faccia a faccia. Non c'è dubbio che la comunicazione personale è la migliore scelta in molte circostanze. Però, ci sono volte in cui altri strumenti di comunicazione sono validi, per esempio, quando si invia lo stato di aggiornamento a 20 persone via e-mail. Certa documentazione rilevante deve essere scritta – se serve quando tutti gli sviluppatori sono andati via. Questa documentazione dovrebbe riguardare solo informazioni importanti. Il software codificato è la principale misura dell'avanzamento. Nello sviluppo iterativo,un’ottima misura dell’avanzamento è la produzione di codice software alla fine di ogni iterazione. Però, non tutti i progetti possono essere realizzati utilizzando lo sviluppo iterativo,come l'implementazione di pacchetti. Perciò, in molti progetti, bisogna continuare a controllare e verificare se il progetto è in piano attraverso le milestone. I processi Agile promuovono lo sviluppo sostenibile. Gli sponsor, gli sviluppatori e gli utenti dovrebbero essere in grado di mantenere la pace a tempo indeterminato. Lo sviluppo Agile prevede che si lavori 40 ore per settimana e che non vi siano conflitti. Naturalmente, con l'appropriata pianificazione e gestione, questo è il migliore approccio. Una costane attenzione alle tecniche ottime ed al buon disegno migliorano l'agilità. Ottime tecniche e un buon disegno iniziale sono essenziali affinché i processi Agili funzionino. La semplicità - l'arte di massimizzare l'ammontare di lavoro non fatto - è essenziale. Concordiamo. Gli sviluppatori software e gli utenti dovrebbero porre attenzione nel rilasciare prima i requisiti essenziali. Ciò "massimizza il lavoro non fatto". Permette anche di rilasciare il software più velocemente. Anche il Processo TenStep segue questo modello di semplicità. I progetti dovrebbero essere gestiti in base alla dimensione ed alla complessità del lavoro, con una visione che il project management fornisce benefici. Le migliori architetture, requisiti e disegni emergono dai team auto organizzati. Se ogni team fosse molto performante e tecnicamente eccellente, sarebbe più facile concordare con questo punto. Invece, la maggior parte dei team di progetto non sono maturi abbastanza e non hanno il giusto livello di competenza per sviluppare il miglior disegno e architettura. E’ importante scegliere le persone giuste per i progetti Agile. Ad intervalli regolari, il team riflette su come diventare più efficiente, poi, sintonizza e aggiusta il comportamento di conseguenza. Concordiamo. I team dovrebbero costantemente sforzarsi di comprendere i loro punti di forza e di debolezza e come i processi di project management possano essere migliorati. TenStep crede anche che le modifiche consigliate dovrebbero essere portate anche a livello di organizzazione in modo che l'idea di miglioramento possa essere adattata dall'intero staff. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas www.agileAlliance.org Confronto Agile-Tenstep Vito Madaio - TenStep Italia pag. 2