Il tema della Developer Experience sta diventando sempre più importante, per quale motivo? Semplice: un'esperienza di sviluppo positiva genera team devops più efficienti e, quindi, software migliori.
Quando si parla di “experience” immediatamente si pensa all’utente finale di un prodotto digitale. Tuttavia, anche l’esperienza di coloro che realizzano il prodotto - gli sviluppatori - acquisisce sempre più un’importanza strategica all’interno delle organizzazioni. Parliamo in questo caso di DX, Developer Experience.
La DX, o Developer Experience, o DevX, è l’equivalente della User Experience quando gli utenti primari del prodotto sono gli sviluppatori. Perciò, la Developer Experience cura l’esperienza di utilizzo di prodotti quali: librerie di prodotto, SDK (software development kits), documentazione e soluzioni open source quali framework o API.
La Developer Experience e la User Experience condividono alcuni dei principi fondamentali, con differenze nel modo in cui questi sono applicati. Questo perché un utente “tecnico” come uno sviluppatore ha dei bisogni molto diversi rispetto a quelli dell’utente medio.
Migliorare la DX è un obiettivo che si persegue per lo stesso motivo per cui si cerca di migliorare la User Experience. Uno sviluppatore che trova un prodotto con una buona DX sarà più propenso ad utilizzarlo, promuoverlo e a fidelizzarsi. E, calando il concetto di DX all’interno di un'azienda, vedremo come una buona Developer Experience avrà ripercussioni positive sulla developer productivity e sull’armonia dei team.
POTREBBE INTERESSARTI ANCHE:
Guida introduttiva alla metodologia DevOps
Così come la User Experience, anche la Developer Experience ha dei principi fondamentali che ci aiutano a capire quanto questa sia buona o migliorabile, li elenchiamo di seguito.
Partiamo dalla caratteristica più importante: la funzionalità. Uno strumento è tanto utile quanto la sua abilità nell’aiutare il suo utilizzatore a portare a compimento una attività.
In aggiunta alla funzionalità, il prodotto offerto deve offrire performance adeguate nello svolgimento dell’attività per cui è stato concepito. Deve inoltre garantire stabilità e assenza di malfunzionamenti inaspettati.
Una bassa curva di apprendimento dello strumento permette di semplificarne l’adozione, l’utilizzo e la promozione. Questo tratto è migliorabile non solo progettando una UI (user interface) intuitiva, ma anche rendendo precise e sempre aggiornate risorse come knowledge base e tutorial.
La capacità dello strumento di fornire in maniera immediata e non ambigua le informazioni di cui lo sviluppatore ha bisogno per portare a termine l’attività, velocizzando ad esempio operazioni di debugging e troubleshooting.
Secondo uno studio recente, vi è una correlazione tra developer experience e risultati aziendali. Le organizzazioni che investono nell'esperienza degli sviluppatori acquisiscono vantaggi concreti e possono quindi migliorare la propria competitività.
Migliorare la DevX significa poter contare su team più agili, performanti e uniti. Quest'ultimo punto non è da sottovalutare, visto che i problemi all’interno dei team di sviluppo (e nei rapporti tra team diversi) rischiano di avere un impatto negativo all’interno del ciclo di vita del prodotto. Curare la Developer Experience permette ad un'organizzazione di arginare molte di queste difficoltà, come ad esempio:
"Not My Problem" Mentality: La tendenza dei componenti del team a non interessarsi alla risoluzione di una problematica che non rientra nella loro sfera di influenza.
Toxic Team Culture: Ambiente dove rivalità e ambizione prendono il sopravvento rispetto agli obiettivi che si è prefissati di raggiungere.
Poor Code Quality: Poca cura nel rispetto delle best practice e nel garantire una bassa difettosità del prodotto.
Meaningless Work: Mancanza di visione e pianificazione a lungo termine che può portare il team a navigare a vista, portando avanti delle attività inutili rispetto all'obiettivo finale.
Demotivated Team: Il clima all’interno del team non permette ai suoi componenti di lavorare in maniera armoniosa, non favorisce la collaborazione e lo spirito di squadra.
Disconnect Between Business and IT: L’organizzazione non riconosce il valore di investimenti a lungo termine nel reparto IT e pertanto non supporta e investe in nuove iniziative.
Un’organizzazione che riesce a implementare una buona Developer Experience - da un punto di vista organizzativo con processi efficienti e grazie agli strumenti che mette a disposizione dei suoi tecnici - ne trae beneficio sotto più punti di vista.
A titolo di esempio, vediamo i tratti distintivi dei team con e senza una buona DX.
Cosa c’entrano le Internal Developer Platform (IDP) con la DevX? Una IDP è uno strato che si pone al di sopra dello stack tecnologico scelto dal team di sviluppo. Serve a unificare ed integrare tutti gli strumenti, in modo che i vari team possano operare in maniera self-service. Per questo motivo giocano un ruolo importante nella DX dei team di sviluppo.
L’utilizzo di una IDP ha un impatto estremamente positivo sulla velocity e serenità del team poiché permette al team di focalizzarsi sul valore delle attività e non sulle complessità tecniche sottostanti. Oltre a migliorare la Developer Experience, le IDP favoriscono la produttività, riducono le operazioni manuali, diminuiscono e ottimizzano i costi di manutenzione.
Una IDP in pratica favorisce la standardizzazione, portando il reparto IT ad operare con un maggior livello automazione ed efficienza. Per questo motivo, l’adozione di una Internal Developer Platform è spesso fondamentale per curare la DX.
POTREBBE INTERESSARTI ANCHE:
User Story Mapping: come costruire un prodotto digitale attorno ai bisogni dell’utente
Dopo aver descritto i vantaggi di una buona Developer Experience è importante capire come è possibile migliorare quest’ultima all’interno di un’organizzazione. Non esiste una ricetta univoca per il raggiungimento di questo obiettivo, ma piuttosto una serie di accortezze:
Framework, metodologie e paradigmi moderni si fondano in molti casi su principi comuni. È necessario comprendere i bisogni delle persone all’interno della propria organizzazione oltre che quelli dei clienti e utilizzatori finali, e prendersene cura attraverso processi decisionali e organizzativi fondati sulla collaborazione.
Che l’obiettivo sia quello di una software delivery rapida e affidabile (DevOps), quello di migliorare la sicurezza, (DevSecOps), di tenere le redini della gestione finanziaria del cloud (FinOps), di rendere la propria organizzazione agile e orientata al risultato (metodi Agile), o che l’intento sia quello di realizzare un prodotto veramente user centric (User Story Mapping): persone e collaborazione devono essere al centro.
Avere a cuore la Developer Experience è un altro modo per perseguire gli obiettivi aziendali, mettendo al centro le persone e la relazioni tra di esse.