DX (Developer Experience)

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 Developer Experience non è un optional. Scarica il White Paper gratuito e  scopri gli approcci alla DevX più innovativi.

Che cos'è la DX o 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

I pilastri della DevX 

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.

Funzionalità

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à. 

Stabilità

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.

Semplicità di utilizzo

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.

Chiarezza

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.

Perché hai bisogno di migliorare la DevX?

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.

Team con una buona e una cattiva Developer Experience a confronto

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.

Team che beneficiano di una buona Developer Experience

  • Maggiore senso di impatto nel riconoscere che il loro lavoro sta contribuendo ad un obiettivo più grande e non solo al profitto dell’azienda.
  • Maggiore senso di ownership e responsabilità rispetto alle attività portate avanti.
  • Il team lavora per raggiungere un obiettivo comune, come una squadra.
  • Onestà e armonia nelle relazione tra componenti del team.
  • Possibilità di fare errori senza la paura di ripercussioni ma con la consapevolezza di avere il supporto della squadra, qualora sia necessario risolvere una situazione critica.

Team sottoposti ad una cattiva Developer Experience

  • Finger-pointing nel caso di anomalie o situazioni di emergenza.
  • Paura di ripercussioni qualora ci siano degli errori nella gestione di una determinata situazione.
  • Timeline sempre strette e un carico di lavoro sproporzionato.
  • Ostilità e competizione malsana tra componenti del team.
  • Responsabilità diluite che portano a non avere chiaro chi è a capo di determinate attività e della risoluzione di situazioni critiche.

Il ruolo delle Internal Developer Platform

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

Consigli per migliorare la Developer Experience del tuo team

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:

  • Adottare soluzioni e tool pensando anche ai risvolti tecnologici e di piattaforma associati.
  • Studiare e capire il Developer Journey per comprendere quali sono gli ostacoli alla produttività degli sviluppatori.
  • Accorciare il feedback loops degli sviluppatori per migliorare quelle iterazioni che per loro natura sono brevi e frequenti (es: debugging).
  • Favorire la collaborazione e rimuovere le organizzazione silos-based che portano ad inefficienze. 
  • Coltivare una cultura dove gli sviluppatori, ed in generale i membri del team tecnico, si sentano al sicuro nello sperimentare nuove soluzioni o a portare in maniera autonoma innovazione nel modo di lavorare.

La cultura aziendale fondata sulla collaborazione

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.

Guida alla Developer Experience