Concetto: Collaborazione fra i team
Questo principio spiega come promuovere una collaborazione efficace.
Descrizione principale

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
  1. Motivare le persone a lavorare al meglio
  2. Creare dei team autogestiti.
  3. Incoraggiare la collaborazione interfunzionale (ad esempio analisti, sviluppatori, tester)
  4. Fornire degli ambienti collaborativi efficaci
  5. Gestire gli artefatti e le attività in evoluzione per migliorare la collaborazione, l'avanzamento e la consapevolezza della qualità con degli ambienti integrati.
  6. 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.