In questo episodio parliamo di come si possono strutturare i team in modo da ottimizzare le comunicazioni, le sinergie e i risultati per il cliente finale.

Rispondo alle tue e-mail

Prima di proseguire…

Nessuno ci fa mai caso ma puoi rispondere a questo messaggio e io lo leggerรฒ! Fammi sapere cosa ne pensi!

Continuiamo!

Introduzione

Chi lavora nel mondo della tecnologia รจ costantemente in azione: sviluppo di nuove feature e aggiornamento di sistemi a una velocitร  incredibile con una quantitร  di tecnologie e piattaforme coinvolte sempre crescente. Applicazioni mobile, web, dispositivi IoT, wearable device devono interagire tra di loro in modo efficace per raggiungere gli obiettivi di business.

La tecnologia impatta gli aspetti della quotidianitร  di tutti: dal prenotare un taxi, al ricevere lo stipendio ogni mese, fino a dispositivi medici che salvano vite a persone.

Costruire ed erogare servizi altamente complessi e interconnessi รจ un’attivitร  di team (combinati) che richiede l’impegno di svariate persone con competenze differenti. Inoltre, le moderne aziende IT devono operare rapidamente, in modo sicuro mentre crescono si adattano a un mercato in continua evoluzione.

Ecco perchรฉ le interazioni tra le persone sono al centro di un business che abbraccia in profonditร  le tematiche di cultura DevOps.

La legge di Conway

La legge di Conway รจ attribuita a Melvin E. Conway da un suo paper (How Do Committees Invent?) per spiegare la relazione tra l’organizzazione aziendale e il design dei sistemi dell’orgazzione stessa:

_Le organizzazioni che progettano sistemi […] sono indotte a generare design che sono copie dei legami nelle organizzazioni stesse. – Melvin E. Conway_

Conway intendeva dire che c’รจ un forte legame tra le relazioni e i path di comunicazione aziendale e l’architettura dei sistemi (si riferiva principalmente a sistemi elettronici) che vengono progettati. Si puรฒ osservare anche che i percorsi di comunicazione tracciano e rappresentano il flow di creazione del valore (tanto caro alla prima via di DevOps).

Se hai 4 team che lavorano a un compilatore, si avrร  un compilatore progettato in 4 fasi. – Eric S. Raymond. “Conway’s Law”. The Jargon File, version 4.4.8

Dal 1968 รจ diventato sempre piรน chiaro come la legge di Conway si applichi al mondo del software: le aziende sono vincolate a produrre design di sistemi che derivano dai loro path di comunicazione.

Conoscere la legge di Conway รจ importante per riuscire a implentare ai livelli massimi le pratiche DevOps.

La legge di Conway suggerisce che si possono ottenere notevoli miglioramenti progettando i sistemi software e i team che lavoreranno su di essi insieme dato che sono forze simili.

La Reverse Conway Manoeuvre

Per manovra di Conway inversa si intende progettare uno o piรน team IT al fine di ottenere o agevolare una voluta architettura di un sistema software.

Questo รจ l’opposto di quanto accade in modo implicito: cioรจ le dinamiche aziendali governano piรน o meno direttamente la progettazione di un software.

Sfruttando questa dinamica in modo rovesciato si giunge a un’ottimizzazione del flow perchรฉ le dinamiche di team si allineano alle pratiche architetturali.

I team come mezzo di produzione e consegna

Progettare un team introduce un approccio orientato alle persone nella progettazione e costruzione del software per raggiungere una flessibilitร  strategica aziendale.

Impostare una topologia di team chiarisce lo scopo di un team e le responsabilitร , aumentando l’efficacia e la qualitร  delle relazioni interne ed

esterne.

Ecco un esempio di architetture di team per veicolare specifiche architetture software.

team topologia 1

Se l’architettura voluta รจ di tipo “classico” con database condiviso l’approccio dell’immagine qui sopra con 2 team dev, 1 team DBA e 1 ops รจ adeguato.

Se volessimo adottare una architettura a microservizi l’approccio sarebbe molto difficile.

Invece, potremmo ristrutturare le persone in team come nell’immagine seguente:

team topologia 2

In questo modo l’architettura software desiderata si allinea con l’architettura di team.

Quando progettiamo i team aziendali ecco altre cose da tenere in considerazione:

  • Richiedere o pensare che tutti possano comunicare con tutti รจ la ricetta per un disastro.
  • Limitare i path comunicativi in relazioni di team ben definite e “loosely-coupled”.
  • Il team รจ da intendersi come l’unitร  piรน efficiente per la produzione e il rilascio di software e non i singoli individui.

Topologie di team al servizio del flow

I team e le interazioni tra i team creano il valore tramite una sequenza di attivitร  (definizione di flow stream). Ecco perchรฉ i team devono essere ottimizzati per essere al servizio del flow.

Per essere ottimizzati i team dovrebbero:

  • Essere stabili e non cambiare continuamente o essere creati per progetti brevi.
  • Adottare un mentalitร  “stream-aligned” cioรจ orientati al flusso di business di cui si occupano dalla progettazione al live in produzione.
  • Avere responsabilitร  ben chiare per evitare zone di grigio e sovrapposizioni.
  • Per ogni contesto รจ necessario valutare la topologia di team piรน adatta in base al contesto e alla maturitร  culturale e tecnica..

Evoluzione delle interazioni tra team per l’innovare e consegnare software rapidamente

Una volta che i team sono stati strutturati รจ necessario stabilire come e quanto interagiscono tra di loro. Le aziende devono essere consapevoli che per raggiungere gli obiettivi di business, tecnologici, di mercato e delle persone deve esserci una evoluzione.

In molte realtร  le iterazioni tra i team sono definite in modo implicito, senza particolari regole o limitazioni. Questo puรฒ essere causa di rallentamenti o inefficienze. Quando si considerano le relazioni tra i team รจ importante decidere con chi un team collabora per raggiungere un obiettivo o di quale altro team puรฒ servirsi “as a service”. I team possono collaborare in tre modi:

  • collaborazione: lavoro condiviso con un altro team
  • x-as-a-service: utilizzare o fornire qualcosa con collaborazione minima
  • facilitazione: aiutare (o essere aiutati) da un altro team per risolvere problemi.

Saper scegliere le modalitร  di collaborazione tra team valutandone pro e contro รจ cruciale per il successo di tutti i progetti di medio-lunga durata.

Azioni

Esercizio 1 – La tua architettura software corrisponde alla realtร  aziendale?

Identifica la tua struttura aziendale e verifica quanto si applica la legge di Conway alla tua situazione.

Esercizio 2 – Manovra di Conway inversa

Identifica, da solo o in gruppo, come poter applicare la manovra di Conway inversa per allineare l’architettura aziendale con quella software.

Esercizio 3 – Mappatura

Identifica, da solo o in gruppo, una mappa dei team in cui lavori e le modalitร  di interazione tra essi (collaborazione, x-as-a-service, facilitazione).

Sharing is caring

Se conosci qualcuno che potrebbe trovare utile ricevere nozioni per migliorare l’organizzazione dei team di sviluppo software, DevOps e software engineering in generale inoltragli questo messaggio! Qui puรฒ iscriversi e cominciare a riceverli subito!


Lascia un commento

Il tuo indirizzo email non sarร  pubblicato. I campi obbligatori sono contrassegnati *