Introduzione
Questo principio pone l'accento sull'importanza del promuovere una comunicazione ottimale in tutto il
progetto. Ciò si ottiene attraverso un'organizzazione appropriata del team e la configurazione di
ambienti collaborativi efficaci.
|
|
Vantaggi
|
-
Produttività del team
-
Migliore accoppiamento fra le esigenze del business e lo sviluppo e le operazioni
dei sistemi software.
|
Pattern
|
-
Motivare le persone a lavorare al meglio
-
Creare dei team autogestiti.
-
Incoraggiare la collaborazione interfunzionale (ad esempio analisti, sviluppatori,
tester)
-
Fornire degli ambienti collaborativi efficaci
-
Gestire gli artefatti e le attività in evoluzione per migliorare la collaborazione,
l'avanzamento e la consapevolezza della qualità con degli ambienti integrati.
-
Integrare i team di business, software ed operazioni
|
Anti-pattern
|
-
Promulgare sviluppatori eroici pronti a lavorare con orari estremamente lunghi,
compresi i weekend.
-
Disporre di persone altamente specializzate con tool potenti per il loro lavoro,
con una limitata collaborazione fra i diversi membri del team, e scarsa
integrazione fra i diversi tool. La presunzione è che se tutti svolgono il proprio
lavoro, il risultato finale deve essere buono.
|
|
Discussione
Il software viene prodotto da persone di talento e motivate che collaborano strettamente. Molti sistemi complessi
richiedono la collaborazione di diversi stakeholder con vari skill ed i progetti più grandi spesso espandono i confini
geografici e temporali, aggiungendo ulteriormente complessità al processo di sviluppo. Questo è il motivo per cui le
problematiche relative alle persone e la collaborazione (qualcuno la definisce elemento "soft" dello sviluppo software)
sono state un punto focale nella comunità di sviluppo agile (agile community). Seguire questo principio richiede delle
risposte a molte domande, incluso:
-
Come motivare le persone a lavorare al meglio?
-
Come collaborare con un team software del posto piuttosto che distribuito?
-
Come collaborare con i team responsabili del business, dello sviluppo software e delle operazioni IT?
Il primo passo verso una collaborazione efficace è di motivare gli individui del team a lavorare al meglio. La
nozione di team autogestiti ha guadagnato popolarità nella comunità agile (consultare Concetto: Pratiche agili e RUP); si basa sul concetto che il team deve essere dedito
a ciò che deve produrre e deve essere fornito dell'autorità per decidere su tutte le problematiche che influenzano
direttamente il risultato. Quando le persone sentono che sono davvero responsabili del risultato finale, sono molto più
motivate a svolgere un buon lavoro. Il manifesto 'agile' asserisce: "Crea dei progetti intorno a degli individui
motivati. Fornisci loro l'ambiente e supporta le loro necessità, abbi fiducia in loro, affinché il lavoro sia
eseguito."
Il secondo passo è di incoraggiare la collaborazione interfunzionale. Come dice Walker Royce, "lo sviluppo
software è uno sport di squadra". Un approccio iterativo accresce l'esigenza di lavorare strettamente come una squadra.
E' necessario abbattere i muri che spesso esistono fra gli analisti, gli sviluppatori ed i tester, ed allargare le
responsabilità di questi ruoli per garantire una collaborazione efficace in un ambiente frenetico. Ogni membro deve
comprendere la missione e la visione del progetto.
Poiché i team crescono, è necessario fornirli di ambienti collaborativi efficaci. Questi ambienti facilitano
ed automatizzano la raccolta della metrica e la segnalazione dello stato, ed automatizzano la gestione delle build e la
contabilità relativa alla gestione della configurazione. Questa efficienza riduce la necessità di riunioni, che libera
i membri e consente loro di passare più tempo in attività più produttive e creative. Questi ambienti devono inoltre
consentire una collaborazione più efficace semplificando la comunicazione, colmando i vuoti spazio temporali fra i vari
membri dei team. Degli esempi di questo tipo di ambiente vanno dalle stanze condivise per progetto, alle soluzioni
basate su Web o con reti, come Wikis, o ambienti di sviluppo integrato e ambienti di configurazione e gestione delle
modifiche.
Poiché il software diventa sempre più critico per i processi del business principale, aumenta la necessità di
collaborazione tra team. Nella maggior parte delle organizzazioni i team responsabili per l'esecuzione del business, lo
sviluppo delle applicazioni e la loro esecuzione comunicano poco.
Il nostro obiettivo ultimo secondo questo principio è la collaborazione integrata nei team del business, del
software e delle operazioni. Poiché il software diviene sempre più critico per l'esecuzione del business, è
necessario creare una stretta collaborazione fra 1) i team che decidono come eseguire il business corrente e futuro 2)
i team che sviluppano i sistemi software di supporto e 3) i team che eseguono le operazioni IT. Nella maggior parte
delle aziende, questi tre gruppi hanno scarsa comunicazione.
|