Per rispondere alle esigenze di un mercato che cambia velocemente e a clienti sempre più esigenti, è necessario che le aziende si dotino di software di qualità, scalabile nelle prestazioni, resiliente e sicuro. Necessità che richiedono un più grande sforzo da parte dei team di sviluppo e, per l’azienda, l’impegno continuo a migliorare la Developer Experience (DevX) dei membri dei team di sviluppo, applicando una Developer Experience Strategy ben definita.
La DevX, dunque, è un aspetto che interviene a livello di singolo individuo, che mira a fornire a ciascuno la migliore esperienza possibile. Considerando però che nella maggior parte delle organizzazioni non c’è un’unica persona dedicata allo sviluppo, ma che c’è un intero team (o più team nel caso di aziende grandi) con competenze diverse e complementari, bisogna porre attenzione anche alla Developer Experience del team intero, considerato come un’unità. Pertanto, risulta decisivo intervenire direttamente sugli aspetti critici, spesso anche di natura relazionale, nei vari passaggi del lavoro e nella gestione degli artefatti software, con lo scopo di ridurre ritardi e frizioni.
Quali sono gli aspetti sui quali intervenire per migliorare la Developer Experience di team? In questo articolo abbiamo individuato tre diverse macro‑aree, e per ciascuna abbiamo indicato gli elementi principali, fornendo alcuni consigli per affrontarli al meglio. Le tre aree sono: l’organizzazione interna del team, la comunicazione/interazione con altri team, e la cultura aziendale. Vediamo nel dettaglio di cosa si tratta.
La Developer Experience di team comincia dall’organizzazione interna
La produttività dei team di sviluppo non è la somma algebrica del lavoro dei singoli, ma dipende dalle capacità delle persone di condividere gli obiettivi e collaborare in modo coerente ed efficace. Di seguito indichiamo alcune soluzioni che possono essere adottate per migliorare la collaborazione all’interno dei singoli team.
Uno dei primi elementi da affrontare riguarda l’abbandono della classica struttura orizzontale per competenze specifiche e adottare l’organizzazione in feature team, ossia in gruppi che hanno la responsabilità, dall’inizio alla fine, di un singolo servizio o funzione applicativa. Con i feature team si eliminano gli stop & go dei progetti presi in carico da team diversi a causa delle tradizionali segmentazioni per competenze di back‑end o front‑end e per singole parti del processo.
All’interno del feature team è molto importante definire bene i ruoli fondamentali, in modo che i processi e le figure di riferimento siano ben definiti. Non può quindi mancare un Product Owner (PO): questa figura ha la responsabilità di raccogliere le richieste lato business, di gestire il budget, e di definire la pianificazione. I PO sono generalmente persone con competenze più di business che tecniche, e per questo motivo sono solitamente affiancate da un Technical Leader (TL). Un TL funge da punto di riferimento per quanto riguarda l’ambito tecnico dello sviluppo, aiutando da un lato i PO a definire il backlog delle attività e dall’altro i developer a trarre il massimo dalle tecnologie utilizzate.
Considerando la sempre maggior diffusione della metodologia agile e in particolare del framework Scrum, è consigliabile individuare all’interno del team uno Scrum Master. Questa figura ha lo scopo di facilitare tutti i processi Agili: ad esempio, si occupa di far sì che le riunioni rispettino i tempi e gli argomenti definiti, e che le board di avanzamento del progetto siano sempre aggiornate. In questo modo migliora la comunicazione interna e si evitano frizioni e colli di bottiglia. Laddove il team non sia particolarmente numeroso, lo Scrum Master può non essere una persona che si occupa di questo a tempo pieno, ma può anche essere un membro del team che prende in carico queste attività affiancandole al suo lavoro da developer.
L’organizzazione è fondamentale, ma affinché sia migliorata la DevX serve prestare attenzione ad altri aspetti utili per rendere più fluido e continuo il lavoro. In particolare, i processi occupano un ruolo di rilievo: un processo lento e faticoso può vanificare gli sforzi del team, mentre uno chiaro e semplice può essere un importante acceleratore.
Il primo aspetto riguarda quindi l’automazione. Infatti, i team devono spesso svolgere attività ricorrenti, che portano via tanto tempo e sono soggette ad errori, in quanto eseguite manualmente: automatizzare queste attività contribuisce sensibilmente a migliorare la Developer Experience del team, in quanto si riducono le frustrazioni dovute a task ripetitivi, non legati al core business e che possono portare ad errori.
Un altro aspetto è l’introduzione di strumenti che possano evitare richieste e passaggi burocratici tra i diversi membri del team. A questo proposito, risultano fondamentali i servizi offerti da uno strumento come l’Internal Developer Platform (IDP): questo tool riduce il carico cognitivo necessario per l’interazione con l’infrastruttura sottostante, semplificando le interazioni e fornendo in modalità self-service le risorse necessarie per le attività quotidiane di sviluppo.
Inoltre, è fondamentale favorire il riutilizzo di componenti già sviluppate, per evitare da un lato di duplicare il lavoro e dall’altro per facilitare l’adesione agli standard aziendali. Lo strumento chiave per questa attività è il Service Catalog, un vero e proprio catalogo di plugin pronti all’uso che contribuisce anche a velocizzare lo sviluppo.
Infine, è utile avere a disposizione una Wiki ben organizzata che contenga tutti i materiali utili per le linee guida di sviluppo. Tra queste possono esserci le best practice, i pattern da seguire, gli antipattern da evitare e le convenzioni in uso (ad esempio per il naming degli endpoint o delle rotte API). Tutti i membri del team devono avere accesso e avere la possibilità di contribuire attivamente, espandendo le risorse a disposizione, aggiungendone di nuove, o archiviando quelle obsolete.
La Developer Experience di team riguarda la comunicazione
La seconda area di intervento, dopo l’organizzazione interna del team in termini di struttura, processi e ruoli, riguarda le interazioni con gli altri team all’interno dell’organizzazione. È infatti fondamentale che i team che devono lavorare insieme cooperino nel miglior modo possibile, senza frizioni, sovrapposizioni e colli di bottiglia. Ma risulta altrettanto importante condividere le esperienze tra team che, per obiettivi e attività, sono scollegati e indipendenti, in modo da non disperdere e anzi accrescere la conoscenza all’interno dell’azienda.
Per questo servono una maggiore comunicazione e chiarezza sulla composizione dei vari team, sulle loro responsabilità e sui loro compiti. In questo modo si evita di avere delle aree di incertezza sull’ownership, che porterebbero a una difficile manutenzione degli artefatti e a malumori tra i team. Per favorire la collaborazione e la conoscenza è utile creare aree e momenti dedicati alla condivisione delle idee e per l’apprendimento reciproco. È inoltre necessario avere a disposizione canali e modalità semplici per ottenere, quando occorra, il supporto di un altro team, nel contesto di un clima di disponibilità e favorevole alla collaborazione.
Come la cultura aziendale influenza la Developer Experience di team
Oltre agli aspetti legati alle dinamiche interne al team e a quelli che riguardano invece le interazioni, anche la cultura aziendale ha un impatto notevole sulla Developer Experience dei team. Come nel coinvolgimento del singolo individuo, infatti, anche per i team giocano un ruolo fondamentale gli aspetti di motivazione, gratificazione e senso di appartenenza.
Ecco alcuni spunti per creare una cultura aziendale che abbia un impatto positivo sulla DevX dei team:
- Coinvolgere i team nelle decisioni e nelle roadmap dei loro progetti;
- Celebrare i successi di ogni team con tutti gli altri, facendoli sentire partecipi;
- Condividere in modo trasparente i traguardi e gli obiettivi dell’azienda, nell’ottica di ricevere nuovi spunti e idee;
- Istituire un team di Developer Relations (DevRel) per migliorare la comunicazione generale e per fornire un punto di riferimento;
- Favorire la partecipazione a eventi e conferenze, sia come utenti per rimanere sempre aggiornati, sia come speaker per far conoscere l’azienda, le sue eccellenze e i suoi successi.
Conclusione
La Developer Experience è sempre più un ingrediente fondamentale per migliorare lo sviluppo software, sia per quanto riguarda i singoli membri, sia per il team considerato come un’unità. Mentre da una parte è possibile aiutare il lavoro dei singoli individui con tool più performanti, dotati di interfacce migliori e capacità di automazione, dall’altra è necessario investire nella creazione di ambienti di lavoro ambiziosi ma sereni, dove le persone cooperano senza frizioni.
Intervenendo direttamente nell’organizzazione interna dei team, nella sua interazione con gli altri team aziendali e sulla cultura aziendale, è possibile migliorare la Developer Experience dei team, e di conseguenza aumentare la produttività e migliorare la qualità del software in rilasciato.
Per trarre il massimo beneficio dai consigli contenuti in questo articolo avrai bisogno degli strumenti adeguati: in Mia‑Platform sviluppiamo prodotti software che semplificano il lavoro dei tuoi team di sviluppo, fornendo un’ottima Developer Experience.
© MIA s.r.l. Tutti i diritti riservati