Pensare a livello globale, programmare a livello locale: il segreto dei team distribuiti

I team distribuiti e gli uffici remoti sono qui per restare. Ma possono far parte di una fiorente cultura Agile? Noi pensiamo di sì.

Dan Radigan Di Dan Radigan
Esplora argomenti

Lo sviluppo Agile è stato originariamente concepito per i team in cluster o per i team fisicamente situati nello stesso ufficio. In linea con l'idea che "il metodo più efficiente ed efficace per trasmettere informazioni ai team di sviluppo sia la conversazione faccia a faccia", i primi team Agile dovevano lavorare insieme nelle immediate vicinanze.

Ma oggi la maggior parte delle aziende ha alcuni (o tanti) team distribuiti. Non si tratta di una semplice tendenza, ma di un'organizzazione sensata. I team distribuiti possono lavorare sui progetti 24 ore su 24 ed è possibile trovare validi talenti in mercati meno competitivi. (Per non parlare del fatto che è più semplice far restare questi talenti, visto che non è richiesto nessun trasferimento indesiderato.) Ma i vantaggi dei team distribuiti non sono privi di compromessi. Per molti team distribuiti, è difficile adottare la pratica Agile delle interazioni faccia a faccia.

Altre sfide che si presentano per i team software distribuiti:

  • Coordinamento tra fusi orari diversi
  • Costruzione di rapporti quando non tutti sono nello stesso ufficio
  • Collaborazione tra diverse culture di sviluppo
  • Pianificazione di riunioni o conversazioni informali quando entrambi i team sono online contemporaneamente solo per poche ore (o ancora meno)

Questi sono problemi reali. Ma non irrisolvibili. Esaminiamo alcune strategie che aiutano a colmare il divario della distanza tra gli uffici locali e remoti e alcune idee che aiutano a mitigare anche altri potenziali problemi.

Come strutturare i team globali

Una buona architettura software impone una progettazione modulare, quindi struttura i team allo stesso modo. Ogni ufficio dovrebbe essere autosufficiente nello sviluppo di una parte di tecnologia, il che riduce al minimo il livello di collaborazione richiesto con i team in altri fusi orari e ne promuove generalmente l'autonomia. Quando un progetto richiede la partecipazione di team che si trovano in posizioni diverse, questi possono concentrarsi sui loro punti di integrazione e sulle API.

Anche le revisioni del codice svolgono un ruolo importante. Dato che le persone sono online in orari diversi, la distribuzione della conoscenza del codice tra gli uffici semplifica notevolmente l'assistenza e la manutenzione. Se un problema di produzione emerge quando il team non è online, un altro ufficio può facilmente intervenire per supportare e risolvere il problema, grazie al know-how acquisito dalle revisioni del codice tra team o posizioni diversi.

Costruisci rapporti

È importante in qualsiasi programma, in particolare nei programmi Agile, poter contare su solide relazioni con tutti i membri del team. La connessione personale crea fiducia, riduce al minimo le aspettative disattese, facilita l'auto-organizzazione e dà una spinta al morale. All'interno del tuo ufficio, prenditi del tempo per conoscere tutti i membri del team. E, per quanto possibile, fai lo stesso con le persone degli uffici remoti con cui lavori. Le connessioni personali sono importanti. Più diventano forti, maggiori sono le possibilità di vedere questi colleghi come tutti gli altri, piuttosto che come colleghi distanti che si collegano da luoghi sconosciuti e con i quali non hai buoni rapporti.

Suggerimento:

In Atlassian, ogni nuovo dipendente pubblica un "blog introduttivo" sulla nostra istanza interna di Confluence, lo strumento di collaborazione sui contenuti di Atlassian. Il blog presenta il nuovo assunto sia a livello professionale che personale (hobby, interessi, famiglia ecc...) e aiuta davvero a colmare il divario personale tra gli uffici. Più ci conosciamo come persone, più forte sarà la nostra collaborazione come team.

Soprattutto, niente sostituisce gli incontri faccia a faccia. I membri del team di ogni ufficio trarranno vantaggio dai normali incontri di persona, che includono videoconferenze e visite agli uffici remoti.

Gli strumenti di videoconferenza come Zoom aiutano a colmare il divario tra i team, in particolare per i team Agile distribuiti. Tuttavia, i team che si affidano a Zoom devono essere consapevoli di alcune limitazioni.

  • Le videoconferenze spesso consentono una finestra di comunicazione molto breve, mentre lavorare nello stesso ufficio offre una visibilità significativa nel mondo dei colleghi: sfide, successi e opportunità.
  • Zoom ha risolto molto bene le interruzioni di rete. Tuttavia, ci possono essere momenti in cui si verificano problemi di rete tra i vari uffici che possono rendere il video e l'audio instabili o poco comprensibili.
  • La maggior parte delle persone pensa ancora alle videoconferenze Zoom come ad attività che avvengono a un orario programmato. Creare la cultura dell'uso della chat video per conversazioni casuali spontanee richiede tempo. Così come l'uso di strumenti di messaggistica istantanea come Slack per le domande veloci.

Per contribuire a mitigare alcuni problemi delle videoconferenze, incoraggia i membri del team a tenere sessioni di chat video individuali ogni settimana. Queste possono essere meno formali e contribuire a facilitare la condivisione delle conoscenze in modo casuale. I membri del team possono sfruttare queste opportunità per costruire rapporti e migliorare la collaborazione.

Ricorda che tono, voce e postura giocano un ruolo significativo nella comunicazione. Gli incontri di persona aiutano il team a conoscere meglio i propri colleghi remoti, il che, a sua volta, rende più efficaci le future videoconferenze.

Che si tratti di una casa o di un prodotto, è necessario definire la vision e delineare i temi strategici. I temi possono essere considerati come aree di interesse a livello di organizzazione. Su quali aspetti vuoi concentrarti nel prossimo trimestre, nei prossimi 6 mesi o il prossimo anno? Dove vuoi investire tempo e risorse? Prestazioni, esperienza utente, sicurezza, nuove funzioni competitive (ad esempio una vasca idromassaggio) o una combinazione di tutti questi aspetti?

Ecco come facciamo:

I trasferimenti sono incarichi temporanei in un nuovo ruolo o in una nuova sede, che vanno da poche settimane a un anno. Non sono solo un modo efficace per costruire rapporti e diffondere la cultura nell'intero team, ma sono anche un ottimo modo per i dipendenti di sperimentare una cultura diversa.

Crea una cultura di sviluppo comune

Esistono quattro semplici modi in cui i team possono semplificare il lavoro in diverse aree geografiche e condividere una cultura di sviluppo comune:

  • Comunicare tutti i dettagli delle decisioni a tutte le aree geografiche
  • Ridurre al minimo gli attriti nella configurazione dell'ambiente di sviluppo
  • Stabilire una chiara definizione del concetto di lavoro completato
  • Creare linee guida per la creazione di segnalazioni di bug efficaci

Analizziamoli.

In primo luogo, quando si passa dalla cultura dell'ufficio co-ubicato a una cultura distribuita, la comunicazione diventa notevolmente più difficile. La prima sfida è formare il team a comunicare tutte le decisioni che vengono prese. Può sembrare ovvio, ma è facile dimenticarlo! Spesso le decisioni importanti vengono prese nelle conversazioni in corridoio, nelle riunioni informali del team locale o da singoli individui. Inoltre, può essere facile liquidare le piccole decisioni come non importanti.

Condividi fino ai minimi dettagli, finché gli uffici non trovano un ritmo condiviso.

Quando si prendono delle decisioni, è importante che siano comprese, così come il ragionamento che le ha generate. Le e-mail non funzionano, perché rischiano di far perdere informazioni importanti facilmente. Utilizza un sistema di gestione dei contenuti, come un wiki, in cui i membri possano cercare con semplicità gli aggiornamenti in tutto il team (e ricevere notifiche sugli aggiornamenti tramite e-mail o tramite lo strumento di chat di gruppo Slack). Puoi anche utilizzare Slack per creare canali in cui singoli e team possano comunicare e visualizzare gli aggiornamenti. I ritardi causati dai membri del team che lavorano su informazioni obsolete, incontrano un ostacolo e quindi fanno una domanda, costano al team molto più tempo rispetto alla condivisione proattiva delle informazioni.

Suggerimento:

In Atlassian, condividiamo gli aggiornamenti relativi a progetti e obiettivi tra i team. Gli aggiornamenti ci vengono comunicati con un'e-mail di riepilogo settimanale o tramite Slack. In questo modo, i nostri team possono comunicare apertamente e acquisire una comprensione comune del contesto del lavoro, che risponde alle seguenti domande:

  • Cosa stiamo facendo?
  • Perché?
  • CHI LAVORA AL PROGETTO?
  • Stato di avanzamento dei lavori

In secondo luogo, ambienti di sviluppo coerenti in tutto il team semplificano la comunicazione e il monitoraggio dei problemi. Dedica tempo a creare una semplice guida introduttiva e controlla l'attrito iniziale automatizzando il più possibile la configurazione.

In terzo luogo, quando si lavora tra uffici diversi, avere standard chiari circa la definizione di "lavoro completato" rende più facile gestire le aspettative e costruire rapporti tra i team. Una definizione chiara di lavoro completato elimina le ambiguità. Ad esempio, quando invii un rilascio che coinvolge più team, chiarisci cosa si intende per completato: scrittura del codice, creazione della pull request, revisione del codice, test e merge nel branch appropriato.

Infine, un ambiente di sviluppo distribuito implica il fatto che non tutti sono online quando sorgono problemi. Avere linee guida chiare per la segnalazione di bug e per le procedure di risoluzione dei problemi rende più facile per chiunque nel team rintracciare un problema. La revisione del codice e buoni test automatizzati consentono inoltre di condividere le conoscenze relative alla base di codice e consentono al team interessato di apportare le correzioni e verificare che la modifica non abbia effetti collaterali imprevisti. Pertanto, nessun team si trasforma in un bloccante.

Sfrutta al massimo le ore d'oro

Ogni fotografo sa che le "ore d'oro", appena prima e subito dopo l'alba e il tramonto, sono uno dei momenti migliori per scattare splendide foto di paesaggi. Le ore d'oro per i team software distribuiti sono i momenti in cui i team locali e remoti si trovano entrambi nei rispettivi uffici contemporaneamente. Quando tutti i team sono in ufficio, è un ottimo momento per le riunioni stand-up.

Per i team che condividono il lavoro tra fusi orari diversi, le riunioni stand-up sono un ottimo momento per passare il testimone al team appena arrivato online che riprenderà da dove l'altro team ha interrotto. E tenere le riunioni stand-up tramite videoconferenza rende semplice porre domande e aggiornarsi in modo che tutti siano pronti a partire non appena la riunione è terminata.

A volte gli uffici sono così distanti che le riunioni causano un po' di fastidio ai team (alzarsi alle 5 del mattino per partecipare a una riunione stand-up con l'altro team? Umm... No grazie). Ruota gli orari delle riunioni in modo che sia un peso condiviso, piuttosto che sottoporre continuamente il team remoto a orari di lavoro poco convenzionali: un modo sicuro per distruggere il morale. Monitora attentamente il coinvolgimento dell'intero team nelle riunioni stand-up. Se c'è una tensione eccessiva o se la riunione non si rivela molto utile per il team, i membri del team inizieranno a distrarsi e smetteranno di ascoltare o partecipare attivamente. E la riunione stand-up non deve essere per forza un incontro quotidiano. Incontra il team remoto alcune volte alla settimana e usa gli altri giorni per le riunioni stand-up locali. Allo stesso modo, le riunioni stand-up non devono necessariamente fare parte della routine mattutina. Qualunque sia l'ora del giorno più comoda per tutte le persone coinvolte, è quello il momento migliore per la riunione stand-up.

Ogni team è distribuito

Nelle organizzazioni distribuite, la realtà è ogni team è remoto. Tutti i team devono adattarsi e imparare a condividere il lavoro tra i diversi uffici, comunicare in modo efficace e coltivare una cultura coerente in tutte le aree geografiche. I team più efficaci non si limitano a conformare l'ufficio remoto alla cultura della sede centrale, perché sono consapevoli del fatto che ogni ufficio può imparare qualcosa dagli altri. Cercano invece di trovare e condividere pratiche di successo in tutte le sedi. Abbracciano inoltre una cultura del "noi" piuttosto che una cultura del "noi contro loro".

Perché un'altra realtà è che di tanto in tanto i team diventano distribuiti. I viaggi di lavoro portano i membri del team fuori dall'ufficio, senza contare che lavorare occasionalmente da casa può aiutare i dipendenti a gestire meglio l'equilibrio tra lavoro e vita privata. I team che adottano sia la struttura che la trasparenza crescono in modo più efficiente. Quando il progetto si espande oltre il tuo ufficio, ci penserà la cultura aziendale a fare la cosa giusta in modo naturale.