Approccio team-first
L'architettura di un sistema software è legata, ovvero è influenzata, dalla
struttura organizzativa interna del produttore di software.
Qual è l'architettura che vogliamo in CGN?
L'architettura di riferimento che abbiamo scelto risponde a precise esigenze di
business, ovvero:
- Rispondere velocemente al cambiamento (cambiamenti normativi o nuove opportunità di business)
- Costruire nuovi prodotti e servizi integrando rapidamente funzionalità di valore già realizzate
- Offrire prodotti software resilienti, responsivi ed elastici, ovvero in grado di scalare rapidamente e garantire prestazioni adeguate al cambio repentino del carico.
Per soddisfare tali esigenze l'architettura deve essere certamente modulare (in parte a microservizi), riducendo al minimo l’accoppiamento tra i vari moduli e massimizzandone la coesione interna.
Il modello organizzativo, che abbiamo implementato ispirandoci a Team Topologies, prevede i seguenti team:
- I team di sviluppo prodotto (o feature team): sono team fisici che corrispondono agli Stream-aligned Team. Si tratta pertanto di team autonomi, cross-funzionali e stabili che si occupano di tutto il ciclo di vita di un prodotto o di una fetta del suo dominio.
- Team User eXperience: si tratta di un team di specialisti UX, all’interno del quale ciascun UX Designer, per periodi di tempo medio-lunghi, si innesta in un team di prodotto. Questo team rappresenta a tutti gli effetti anche un Enabling Team.
- Team Piattaforma: si tratta di un team di sviluppo che rientra nel modello Team Topologies come Platform Team il cui compito principale è curare l’evoluzione del framework di sviluppo CGN e della Piattaforma tecnologica.
- Team virtuali per specializzazione: si tratta di team virtuali composti da professionisti con lo stesso ruolo/specializzazione. Non si tratta di un Enabling Team, ma piuttosto di una Community Of Practice (CoP).
A questi team si aggiunge:
- IT Board: un particolare team virtuale che comprende alcune figure del reparto che, in virtù delle proprie competenze e attitudini, orchestrano la completa governance della software factory nei suoi vari ambiti (organizzazione e metodologia, architettura/tecnologia, pianificazione).