Cos'è l'esperienza degli sviluppatori?
Per "Developer Experience" (DevEx o DevX), ovvero esperienza degli sviluppatori, si intende il modo in cui gli sviluppatori interagiscono con strumenti e processi di sviluppo e l'esperienza che ne deriva. Migliorare questa esperienza significa semplificare flussi di lavoro, strumenti e processi di collaborazione, in modo che gli sviluppatori possano dedicarsi maggiormente all'innovazione, riducendo il tempo impiegato nelle attività ripetitive.
Nel loro lavoro quotidiano, gli sviluppatori si occupano di progettare e mantenere le applicazioni software dell'organizzazione. Realizzano soluzioni che rispondono a specifiche esigenze aziendali o IT, con l'obiettivo che queste vengano adottate su larga scala dai vari team e reparti dell'azienda. Puntano inoltre a rilasciare soluzioni funzionanti nei tempi previsti, con il minor numero possibile di bug, e ottenere un riscontro positivo da parte di clienti e utenti.
La DevEx applica i principi dell'esperienza utente al lavoro degli sviluppatori, promuovendo un approccio che incoraggia le organizzazioni a considerare il modo in cui lavorano come un elemento strategico. La DevEx si concentra sull'impatto che i processi e gli strumenti utilizzati dagli sviluppatori hanno sulla qualità del loro lavoro, nonché sulla loro soddisfazione e produttività.
Perché mettere al centro l'esperienza degli sviluppatori?
Mettere la DevEx al centro aiuta le organizzazioni a comprendere quali aspetti del lavoro degli ingegneri, che realizzano applicazioni e strumenti di importanza strategica, funzionano e quali, invece, richiedono miglioramenti. La DevEx non riguarda solo la soddisfazione degli sviluppatori, è un importante fattore di differenziazione per il business, perché influisce sulla produttività e, di conseguenza, sui risultati dei team di ingegneria in cui operano gli sviluppatori e dell'azienda nel suo complesso.
Una migliore esperienza degli sviluppatori accelera l'innovazione, incrementa la qualità del codice e rende più efficaci i percorsi di trasformazione DevOps. Riduce inoltre il carico cognitivo degli sviluppatori, con ricadute positive anche sulla qualità del software. Quando i flussi di lavoro risultano più semplici, efficienti ed efficaci, gli sviluppatori sono più produttivi, con effetti positivi anche sulla loro soddisfazione e fidelizzazione.
Quali sono i fattori che ostacolano un'esperienza positiva degli sviluppatori?
In molte organizzazioni, gli sviluppatori devono destreggiarsi tra numerosi strumenti eterogenei, ciascuno dedicato a una specifica funzione, come la sicurezza, l'integrazione e la distribuzione continue (CI/CD) e la gestione del prodotto, o progettato per uno specifico ambiente cloud oppure on premise. La necessità di imparare a utilizzare numerosi strumenti può rappresentare un ostacolo all'efficacia degli sviluppatori. Inoltre, la frammentazione degli strumenti aumenta il carico cognitivo individuale, rallentando lo sviluppo del software.
Un'altra criticità è la mancanza di feedback durante il processo di sviluppo. Questo fa sì che i problemi nel codice vengano individuati solo quando gli utenti segnalano i bug. Tempi di compilazione elevati, pipeline di test CI/CD poco efficienti e revisioni del codice che richiedono troppo tempo rallentano l'intero ciclo di vita dello sviluppo software (SDLC). Individuare gli errori prima della messa in produzione consente di risparmiare tempo, evitare rilavorazioni e migliorare l'esperienza degli sviluppatori.
Anche la resistenza aziendale può compromettere la DevEx. Se nuovi strumenti o processi vengono introdotti rapidamente e senza una chiara motivazione, gli sviluppatori possono essere meno propensi a imparare a utilizzarli.
Quali elementi contribuiscono a un'esperienza degli sviluppatori positiva?
Un'esperienza degli sviluppatori soddisfacente si basa su strumenti integrati, sulla riduzione del carico cognitivo sul singolo e su un'attenzione costante ai meccanismi di feedback. La DevEx consente agli sviluppatori di dedicarsi all'innovazione e distribuire il codice più rapidamente, grazie a un ambiente di lavoro più omogeneo e quindi favorevole.
Strumenti integrati
Gli ambienti di sviluppo che si basano su numerosi strumenti eterogenei e su approcci "bring your own tool", in cui ogni sviluppatore utilizza gli strumenti che preferisce, possono diventare complessi da gestire. Un ambiente unificato, con golden path supportati efficacemente, consente agli ingegneri di lavorare in contesti di sviluppo e di deployment incompatibili tra loro, senza dover imparare rapidamente a utilizzare nuovi strumenti.
Carico cognitivo ridotto
La proliferazione incontrollata di architetture di microservizi, ambienti cloud native e dipendenze da componenti di terze parti aumenta la complessità dei moderni sistemi IT. L'uso di strumenti non coerenti e le lacune nella documentazione distolgono gli sviluppatori dalle attività principali, ossia scrivere e distribuire il codice, perché devono prima ricostruire autonomamente processi e modalità operative.
Da sempre gli sviluppatori hanno la responsabilità di valutare e scegliere lo strumento più adeguato alle proprie esigenze, oppure di crearlo da zero. Attualmente gli sviluppatori delle grandi organizzazioni osservano che, con la crescita dell'azienda, i flussi di lavoro di supporto e la scalabilità diventano sempre più complessi e frammentati. L'ingegneria della piattaforma offre un approccio più efficace per:
- Automatizzare la distribuzione delle applicazioni.
- Favorire la collaborazione e la comunicazione.
- Ridurre gli errori.
- Garantire sicurezza e conformità.
- Consentire agli sviluppatori di dedicarsi agli obiettivi strategici.
Strumenti intuitivi, portali self service e ambienti basati sull'ingegneria della piattaforma consentono agli sviluppatori di utilizzare piattaforme di sviluppo interne (IDP) per automatizzare le attività, favorire l'operatività self service e migliorare la collaborazione tra i team, accelerando la distribuzione del software. Strumenti preconfigurati semplificano il lavoro degli sviluppatori, riducendo al minimo le attività non essenziali e il tempo necessario per acquisire familiarità con nuovi strumenti e processi.
Cicli di feedback
L'efficienza e la produttività di uno sviluppatore dipendono anche dalla rapidità con cui gli strumenti che utilizzano forniscono un riscontro. Eseguire tempestivamente le revisioni del codice, individuare i bug, automatizzare i controlli e i test del codice ed eseguire rapidamente le suite di test in locale evita agli sviluppatori di dover attendere la fase di convalida o di individuare i problemi a posteriori. Grazie alle pipeline CI/CD e a cicli di feedback rapidi, gli sviluppatori hanno visibilità sull'efficacia del codice sin dalle prime fasi dello sviluppo.
Collaborazione
Un approccio collaborativo tra i team di sviluppo e quelli operativi (DevOps) crea un ambiente di lavoro che favorisce una comunicazione efficace e la condivisione delle competenze. Nella cultura DevOps, i team di sviluppo, che solitamente creano codice in un ambiente di sviluppo standard, collaborano con il personale IT operativo per velocizzare le fasi di creazione, test e rilascio dei software, senza compromettere l'affidabilità. L'approccio DevOps contribuisce a migliorare la DevEx prediligendo strumenti self service e a una comunicazione più efficace tra i team.
Come si valuta l'esperienza degli sviluppatori?
Per valutare l'esperienza degli sviluppatori, le organizzazioni possono utilizzare indicatori quantitativi, come il volume di output e i tempi di rilascio dei prodotti sviluppati, e indicatori qualitativi, quali la soddisfazione, le prestazioni e l'efficacia della comunicazione degli sviluppatori.
Il framework DORA, sviluppato nell'ambito del programma di ricerca DORA di Google Cloud, utilizza cinque metriche chiave per valutare le prestazioni dei team di sviluppo software:
- Frequenza di deployment
- Tempo richiesto per le modifiche
- Tasso di errore delle modifiche
- Tempo di ripristino del servizio
- Affidabilità
Nel loro insieme, le metriche DORA consentono di misurare i risultati di business monitorando nel tempo i risultati prodotti dai team.
Il framework SPACE considera la produttività degli sviluppatori da una prospettiva maggiormente incentrata sulla persona e si articola in cinque aspetti:
- Soddisfazione e benessere
- Prestazioni (misurate più in termini di qualità che di quantità del codice)
- Attività
- Comunicazione e collaborazione
- Efficienza e flusso di lavoro
Il framework SPACE pone maggiormente l'accento sulla soddisfazione degli sviluppatori piuttosto che sul solo volume di output.
I due framework sono complementari e possono essere utilizzati congiuntamente. Coniugandoli, offrono una visione complessiva della DevEx, utile per valutare l'esperienza dei team di sviluppo e favorire il miglioramento continuo.
Qual è il ruolo dell'IA e dell'automazione nell'esperienza degli sviluppatori?
La diffusione dell'IA sta introducendo nuove sfide per gli sviluppatori: vulnerabilità con cui restare al passo, strumenti da integrare nei flussi di lavoro esistenti e nuovi bug e problemi di sicurezza. Allo stesso tempo, offre anche opportunità per migliorare la DevEx.
Opportunità
Gli assistenti per la programmazione basati sull'IA e gli agenti autonomi consentono agli sviluppatori di evitare le attività di configurazione ripetitive, mentre gli strumenti integrati per la spiegazione del codice e il refactoring semplificano le architetture complesse e riducono il debito tecnico. L'IA generativa trasforma i tradizionali ostacoli della distribuzione del software in flussi di lavoro ad alta velocità, riducendo al minimo i ritardi. Molte organizzazioni si avvalgono dell'automazione basata sull'IA per migliorare la pipeline CI/CD, incorporando direttamente nel processo di distribuzione strumenti intelligenti per la revisione del codice, il rilevamento rapido dei bug e la risoluzione dei problemi. In questo modo è possibile individuare i difetti strutturali prima ancora che inizi la revisione umana.
Sfide
Gli assistenti IA producono codice più rapidamente di quanto gli sviluppatori riescano a verificarlo, con il rischio di introdurre bug, pacchetti obsoleti e vulnerabilità di sicurezza nascoste. La verifica del codice rappresenta quindi un'ulteriore difficoltà per gli sviluppatori.
La maggior parte degli sviluppatori si avvale ormai di assistenti IA, per cui il semplice utilizzo dell'IA non rappresenta più un vantaggio competitivo. Con la crescente diffusione dell'IA, tendono a utilizzarla sempre meno per scrivere codice e sempre più per convalidarlo, eseguirne il debug e gestirlo. Gli sviluppatori rivestono sempre più un ruolo strategico, che consiste nell'orchestrare contemporaneamente più agenti IA. Questo richiede una visione d'insieme del sistema e può rappresentare una sfida per gli ingegneri, tradizionalmente più orientati ad affrontare problemi logici circoscritti.
Come migliorare la DevEx?
Per migliorare l'esperienza degli sviluppatori è necessario semplificare i flussi di lavoro per ridurre il carico cognitivo quotidiano che affatica i team di sviluppo, rendere più efficienti gli ambienti di sviluppo locali e fornire strumenti per sviluppatori intuitivi che riducano i tempi dei cicli di feedback.
Le organizzazioni possono adottare IDP che sfruttano l'automazione self service, consentendo agli sviluppatori di predisporre rapidamente le risorse necessarie senza dover attendere la gestione manuale dei ticket. Le IDP possono inoltre fungere da punto di accesso centralizzato alla documentazione aggiornata, semplificando l'onboarding dei nuovi sviluppatori e promuovendo la collaborazione tra i team. La leadership aziendale può inoltre valutare la qualità dell'esperienza degli sviluppatori attraverso sondaggi, utilizzando dati qualitativi per migliorare progressivamente l'intero ecosistema.
Domande frequenti sulla DevEx
Quali difficoltà comporta l'onboarding nella DevEx?
Se i nuovi sviluppatori devono lavorare in ambienti non coerenti e diversi da quelli di produzione, rischiano di dover dedicare le prime settimane a risolvere le incoerenze locali di configurazione, anziché impratichirsi con le code base. Queste difficoltà legate all'onboarding sono spesso aggravate da sistemi con una documentazione carente, in cui mancano le istruzioni per la configurazione, o sono frammentate tra i vari reparti o non aggiornate. Per individuare questi ostacoli, le organizzazioni ricorrono spesso a sondaggi sull'esperienza degli sviluppatori, raccogliendo il feedback degli ingegneri sin dalle prime fasi del loro inserimento in azienda.
Quali fattori rallentano la distribuzione del software?
La distribuzione del software rallenta spesso a causa di cicli di feedback inefficienti. Le richieste pull in attesa di revisione possono rallentare l'avanzamento del lavoro, mentre una revisione del codice più rapida consente di accelerare la distribuzione del software. Anche le criticità legate al controllo delle versioni e i conflitti di merge possono rallentare la distribuzione. Risolvere manualmente le differenze tra le diverse versioni del codice impegna tempo che gli sviluppatori potrebbero dedicare allo sviluppo di nuove funzionalità.
Che cosa rallenta il lavoro degli sviluppatori?
Secondo una ricerca di Atlassian, molti sviluppatori dichiaranodi perdere tempo a causa di inefficienze e incompatibilità tra i sistemi. Il passaggio continuo tra strumenti non coerenti, la gestione del debito tecnico e flussi di lavoro frammentati, uniti a una documentazione carente, sono tra i principali fattori che sottraggono tempo all'innovazione.
In che modo il debito tecnico e le scelte architetturali influiscono sulla DevEx?
Lavorare con codice già esistente rappresenta un ostacolo perché le code base meno recenti spesso non presentano una chiara separazione tra i componenti e sono prive di test automatizzati. Questi problemi si aggravano quando le applicazioni utilizzano interfacce di programmazione delle applicazioni (API) interne o di terze parti sensibilmente complesse, caratterizzate da una quantità eccessiva di codice ripetitivo, endpoint poco chiari o meccanismi di gestione degli errori inadeguati. In queste condizioni, anche l'aggiornamento di semplici funzionalità può diventare un'attività laboriosa e frustrante per gli sviluppatori.
Perché scegliere Red Hat?
Red Hat® Advanced Developer Suite permette ai team di ingegneria della piattaforma di creare esperienze self service appositamente per gli sviluppatori, con funzionalità di sicurezza che garantiscono il rispetto coerente delle policy. La soluzione riduce il carico cognitivo degli sviluppatori e le complessità della catena di distribuzione, combinando portali per gli sviluppatori, controlli di sicurezza automatizzati e IA applicata.
Red Hat Developer Hub accorpa in un'unica interfaccia strumenti eterogenei, centralizza la documentazione e mette a disposizione modelli software preapprovati basati sui golden path. Riduce i tempi di onboarding e consente agli sviluppatori di passare rapidamente dalla progettazione allo sviluppo del codice.
Le funzionalità di sicurezza di Advanced Developer Suite, come Exploit Intelligence, sfruttano l'analisi del codice basata sull'IA per filtrare e classificare automaticamente gli avvisi relativi alle vulnerabilità. Con Advanced Developer Suite, gli sviluppatori non devono più esaminare ogni vulnerabilità teorica, dando priorità agli interventi di correzione in base al rischio effettivo delle applicazioni in esecuzione. Prodotti e componenti integrati, come Red Hat Trusted Artifact Signer, Red Hat Trusted Profile Analyzer e Red Hat Trusted Libraries, automatizzano la firma crittografica del codice, la tracciabilità della provenienza e la gestione delle dipendenze verificate secondo lo standard Supply-chain Levels for Software Artifacts (SLSA) di livello 3, rafforzando la sicurezza del codice dall'ingresso nella catena di distribuzione fino all'esecuzione nei cluster.
Red Hat OpenShift®, basato su Kubernetes enterprise, è una piattaforma applicativa che consente di sviluppare, modernizzare e distribuire applicazioni in modo scalabile. Basato su standard open source, aiuta le organizzazioni a sviluppare, accelerare e gestire in modo scalabile i carichi di lavoro tradizionali e basati sull'IA, grazie a funzionalità integrate di sicurezza e conformità. Raggruppa strumenti e servizi per semplificare l'intero ciclo di vita dell'applicazione, dallo sviluppo del codice alla distribuzione, fino alla gestione dei carichi di lavoro applicativi negli ambienti ibridi. Red Hat OpenShift permette di accelerare l'innovazione e semplificare l'adozione dell'IA con un insieme completo di strumenti per l'infrastruttura di tua scelta. Inoltre, elimina la complessità legata alla gestione di strumenti eterogenei e alle conseguenti problematiche di interoperabilità e portabilità.
Red Hat OpenShift AI offre a data scientist e sviluppatori un ambiente completamente integrato e scalabile per sviluppare, addestrare e distribuire applicazioni intelligenti, semplificando al massimo l'integrazione dell'automazione basata sull'IA nell'intero ecosistema.
Red Hat OpenShift Dev Spaces e Red Hat Desktop offrono ambienti di sviluppo cloud e locali coerenti e containerizzati, che riproducono l'ambiente di produzione. In questo modo i team possono testare le applicazioni in sicurezza ed eseguire gli agenti IA in una sandbox prima della distribuzione in un cluster.
Modernizzazione dell'esperienza degli sviluppatori nel cloud ibrido
Affidati a Red Hat Services per modernizzare l'esperienza dei tuoi sviluppatori negli ambienti con cloud ibrido e velocizzare la distribuzione delle applicazioni. Scarica l'ebook.