Posizione lavorativa da Developer Experience: skill, background e concetti chiave. Buzzword o realtà? Continua la lettura per saperne di più su questa tendenza!
Introduzione: Dev Ex, buzzword o realtà?
Negli ultimi anni, il termine Developer Experience (o Dev Ex) è diventato sempre più comune nel mondo dell’ingegneria del software. Quando una nuova espressione diventa di moda, ma molti non sanno ancora cosa significhi, l’idea può essere banalmente etichettata come buzzword. Eppure il concetto di Developer Experience esiste e porta un valore reale alle aziende. Allo stesso tempo, la sua utilità dipende da ciò che si intende con esso.
Inevitabilmente, come ogni nuovo termine che piace ai marketer, Developer Experience ha un’ampia gamma di significati. Da un lato, l’espressione può essere associata a DevRel e HR, ovvero un insieme di soft skill utilizzate per migliorare le condizioni di lavoro degli sviluppatori, riunirli e migliorarne la produttività e le competenze attraverso mezzi principalmente non tecnici. In modo più specifico, tuttavia, il lavoro del Developer Experience viene considerato come correlato all’User Experience (UX). Ecco perché Developer Experience spesso viene abbreviato in DX, aspetto complementare dell’UX.
In altre parole, Developer Experience è un modo per esaminare come gli sviluppatori utilizzano strumenti, interfacce, sistemi e prodotti software di cui hanno bisogno per svolgere il loro lavoro. In particolare, il DX si chiede questi strumenti possano essere perfezionati o evoluti per renderli più adatti all’utilizzo da parte dei developer. Ciò non serve solo per rendere la vita dei programmatori più facile, ma li rende anche più produttivi nelle loro aziende.
Ecco perché il ruolo di developer experience sta diventando sempre più diffuso. Perché funziona!
Di cose si occupa un esperto di DX? Skill e background
In una azienda, il nucleo dello sviluppo software è rappresentato naturalmente dai programmatori. In passato, gli sviluppatori erano spesso indipendenti. Erano apprezzati per le loro competenze, ma i manager avevano generalmente poca idea dei dettagli del loro lavoro. Le idiosincrasie individuali erano diffuse. Oggi, l’ingegneria del software è un’attività molto più standardizzata e non sorprende affatto che le attività dei programmatori siano soggette a metodologie ingegneristiche. È qui che entra in gioco la DX.
La posizione di Developer Experience è una sorta di ponte tra lo sviluppo e l’amministrazione, per questo richiede una buona dose di competenze interpersonali. Il lavoro svolto da un esperto di Developer Experience include la razionalizzazione degli strumenti e delle interfacce per i programmatori. Per farlo, ha bisogno di una conoscenza approfondita del tipo di lavoro che gli sviluppatori svolgono, nonché dell’ecosistema tecnologico in cui ha luogo. Un esperto di DX avrà quindi bisogno di una profonda comprensione dei seguenti aspetti dell’ingegneria del software, di come vengono utilizzati e di cosa li rende efficaci:
- SDK, API e librerie
- Strumenti per sviluppatori, compresi IDE, editor di testo, compilatori, debugger e terminali
- Framework di sviluppo
- Database, piattaforme e software di supporto
- Snippet di codice
- Documentazione, compresi guide tecniche, standard di codifica e tutorial
- Ecosistemi open-source
Oltre a queste competenze tecniche, un ingegnere DX deve avere la capacità di ascoltare, comunicare e imparare dalle esperienze degli altri. Dovrà inoltre interfacciarsi con livelli più elevati del management per ottenere gli strumenti e gli ambienti giusti per soddisfare i suoi programmatori. Chiaramente, è un lavoro che non si adatta a tutti. E probabilmente neanche al tipo di programmatore indipendente che abbiamo menzionato in precedenza. Ciononostante, una formazione in ambito di sviluppo del codice è probabilmente essenziale per il ruolo, così come l’esperienza nella gestione di team.
Perché il lavoro del Dev Experience è così importante?
Se sei arrivato fino a qui, ti starai chiedendo perché sia necessario questo ruolo. Non sono stati i developer a gestire tradizionalmente queste cose, scegliendo i loro strumenti preferiti e trovando la giusta infrastruttura di supporto per i loro progetti? La risposta, ovviamente, è sì, ma questa individualità può anche causare problemi.
I programmatori sono famosi per essere esigenti con gli editor di testo per lo sviluppo. Ad esempio, ci sono dibattiti aperti sui vantaggi dei vecchi veterani, Vim e Emacs, rispetto ai più moderni IDE come VS Code. Quando però si tratta di scegliere librerie, SDK o API, le cose possono complicarsi rapidamente. Gli sviluppatori possono dare per scontate determinate funzionalità. Questo ha un impatto sul lavoro in team o quando si sviluppano componenti software per clienti esterni.
Le incompatibilità possono portare a errori di compilazione o di runtime. A volte sono evidenti, a volte sono molto più sottili e difficili da individuare. È chiaro che spendere tempo per risolvere bug dovuti a incompatibilità tra tecnologie e scelte fatte dai team non è un uso produttivo delle competenze degli ingegneri.
Lo scenario esemplificato poc’anzi può essere facilmente esteso a molte altre aree, più o meno tecniche, del lavoro di un Developer Experience. Anni di consapevolezza relative alle frustrazioni causate da ecosistemi e pratiche di lavoro inconsistenti hanno portato alla crescente importanza della DX. Perfezionare l’esperienza di sviluppo non si limita a migliorare lo stato d’animo dei programmatori, ma consente anche di ottenere una maggiore produttività e più consistente aderenza alle scadenze. La DX è quindi un passo importante verso la piena professionalizzazione dello sviluppo software.
Quali aziende stanno facendo leva sui Developer Experience?
Praticamente qualsiasi azienda che si occupa di produzione software può trarre beneficio dalla posizione di Developer Experience. Anche le piccole imprese possono utilizzare le competenze richiesta per la DX per migliorare la coerenza e l’integrazione dei loro processi di sviluppo. Ovviamente, le PMI con un solo sviluppatore non avrebbero probabilmente vantaggi nell’assumere un esperto specializzato in DX. Al contrario, sono le aziende con team più grandi le più inclini a trarre benefici da specialisti DX dedicati, soprattutto quando sviluppano progetti che prevedono la collaborazione tra più team.
Le aziende il cui modello di business si basa sulla vendita o sul licensing di API o librerie beneficeranno significativamente dell’esperienza di figure DX. Questi agiranno come essenziali reviewer strategici e qualitativi non solo delle pratiche dell’azienda, ma anche dei suoi prodotti. Specialmente, per quanto ne riguarda la loro usabilità.
Date le ricadute positive dei Dev Ex sulla produttività delle aziende software, ci si aspetterebbe che anche le grandi aziende abbiano adottato questa posizione. E infatti è proprio così. Prendiamo due dei nomi più importanti della tecnologia attualmente, Twitter e Google. Entrambi hanno una significativa rappresentanza di DX, anche se chiamano questo concetto in modo diverso. Hanno dei team che si occupano rispettivamente di “efficacia ingegnerista” e “produttività ingegneristica”, aspetti chiave gestiti dai Dev Ex.
È istruttivo anche dare un occhio a come il settore IT riconosca l’uso della posizione del Developer Experience. Un buon esempio sono i premi recentemente introdotti per l’esperienza e la produttività degli sviluppatori. I vincitori, Bought By Many, Luscii, Forto e Unibuddy, spaziano in una vasta gamma di settori, dal FinTech ai servizi sanitari, indicando l’importanza di un sviluppo software efficace in qualunque settore.
Altri nuovi ruoli in tendenza nell’industria IT
Come abbiamo visto, il ruolo dei Developer Experience è un tema caldo al momento nell’industria IT. Questo none però certamente l’unica cosa da tenere d’occhio. Ecco altri cinque ruoli in tendenza da considerare:
- Ingegnere DevOps: Il DevOps riguarda codice, distribuzione e competenze interpersonali. L’obiettivo è gestire distribuzioni rapide di rilasci di software e configurazioni del server per soddisfare le esigenze dei clienti. Un figura di questo tipo ha bisogno di una buona conoscenza delle pratiche di sviluppo, dei cicli di vita del software e delle competenze di gestione.
- Ingegnere di machine learning: L’AI e il machine learning sono diventati sempre più diffusi recentemente. La razionalizzazione dei processi quotidiani e aziendali tramite algoritmi sta infatti diventando la norma. Un ingegnere di machine learning ha bisogno di una capacità tecnica elevata con eccellenti competenze di ingegneria del software e di analisi dei dati.
- Analista di business intelligence: Affine alle tecniche di AI ma più strettamente orientata alla strategia aziendale. La business intelligence è una tendenza emergente che ha come scopo ricavare dati per ottenere insight sulle prestazioni aziendali e la pianificazione strategica. Per questo ruolo, si necessitano competenze riguardo all’analisi dei data e esperienza nei processi aziendali.
- Analista di cybersecurity: Con la crescita delle tecnologie online, c’è stata anche una crescita di utenti digitali malintenzionati. Gli analisti di sicurezza informatica fanno parte di un team che monitora continuamente sistemi, reti e infrastrutture software alla ricerca di falle di sicurezza. In questo modo trovano soluzioni rapide quando necessario e implementando misure protettive preventive. Nella cybersecurity servono ottime competenze analitiche e di problem solving. Oltre che a qualifiche nel mondo IT e/o della sicurezza digitale.
- Ingegnere del cloud: Stiamo entrando sempre più in un’era in cui virtualmente tutte le operazioni digitali vengono effettuate online. Gli ingegneri di cloud sono responsabili dello sviluppo e della manutenzione dei sistemi di rete che forniscono servizi cloud per applicazioni aziendali e/o software per il cliente, oltre che a siti e servizi web. Anche l’Internet of Things, forte mercato in crescita, si basa su una infrastrutture cloud. Per una carriera in ingegneria del cloud si richiedono di competenze in amministrazione di sistemi e reti e probabilmente anche skill in ambito di programmazione.
Tradotto dall’inglese da Antonello Zanini.