I Developer del futuro: 8 figure fondamentali nel mondo della programmazione

Leider ist der Eintrag nur auf Italienisch verfügbar.

I programmatori vengono spesso considerati gente strana! Non ho mai conosciuto un dev in cui la professione non si incrociasse con la passione. E così, a dispetto di molte altre categorie, studiano, approfondiscono, si aggiornano, sperimentano nel tempo libero e quando finiscono di lavorare, la sera, si incontrano tra di loro (se per loro è possibile) per parlare ancora di programmazione.

Da oltre 10 anni, per lavoro – sono un Community Manager – e per passione anche io, ho frequentato e organizzato centinaia di incontri serali. I cosiddetti meetup, in cui le Tech Community, gruppi più o meno organizzati di programmatori accomunati dalla passione e dal desiderio di condividere una particolare tecnologia o linguaggio di programmazione, si incontrano ogni mese per parlare di un argomento, ma soprattutto per confrontarsi attraverso il networking. Certo è più facile nelle grandi città come Roma e Milano ma, in realtà, il mondo delle Dev Community è vibrante in tutta Italia e, quindi, non è difficile trovare Community molto attive, forse in quantità minore, anche in piccoli centri o nella provincia.

Il Covid-19 ha sicuramente interrotto, temporaneamente, questa pratica ma le Community non si sono date per vinte e quasi tutte hanno trasferito i loro incontri online, e così tantissimi webinar sono nati online su Internet in questi mesi così come, per esempio, le Dev Community Night promosse da Talent Garden Innovation School che mi ha visto attivo in prima linea, con gli appuntamenti fissi del giovedì sera già da oltre 10 settimane.

Tra le attività per coinvolgere, durante questo periodo, le Community con le quali sono in contatto e gli sviluppatori del mio network ho deciso di lanciare un questionario composto da un’unica domanda secca per capire la direzione e le aspirazioni della grande community di sviluppatori italiani: Quale professionista del mondo del Coding vuoi diventare?

Le 8 figure fondamentali nel mondo della programmazione

La risposta ha superato ogni mia aspettativa con oltre 800 sviluppatori che hanno partecipato all’iniziativa! Ecco le otto figure professionali che sono emerse da questa indagine in ordine di preferenza:

1. Web Developer

Il lavoro di sviluppatore Web continua ad essere uno dei più ambiti dai programmatori in quanto è un settore sempre in fermento con l’uscita di nuovi standard e tecnologie. Inoltre, le sue applicazioni si allargano di anno in anno ai più disparati campi tecnologici e industriali. In pratica, c’è sempre da aggiornarsi e non si rimane mai con le mani in tasca. Un Web Developer sviluppa il codice che fa funzionare un sito o un’applicazione web. Lo sviluppo web si può dividere in tre parti: il codice eseguito nei browser che determina cosa gli utenti vedono quando approdano al sito web; il codice eseguito sul server che gira dietro le quinte e fa funzionare il sito web; la tecnologia del database, che permette al sito web di memorizzare i dati e di girare velocemente ed efficientemente. Nei progetti di larga scala spesso questi task sono assegnati a molti sviluppatori. Negli ultimi anni, le competenze richieste si sono allargate a dismisura e il lavoro del Web Developer si è settorializzato; sono così nate diverse figure:

Frontend Developer: è uno sviluppatore che scrive codice per la parte visibile all’utente di un sito web. Mentre il web design è come un sito web appare, lo sviluppo del front-end è il modo in cui tale design viene effettivamente implementato sul web. Il linguaggio più utilizzato è senz’altro JavaScript con una miriade di framework come, per esempio, Angular, React, Vue.js.

Backend Developer: è uno sviluppatore che programma e manutiene la tecnologia necessaria per far funzionare l’intero sito o applicazione web. Il suo codice che gira sui server aggiunge funzionalità a tutto ciò che gli sviluppatori front-end e i designer creano. I linguaggi e le tecnologie più utilizzati sono: PHP, ASP.NET, Java, Node.js, etc.

Fullstack Developer: è un programmatore che comprende come avviene ogni parte del processo di sviluppo di un sito o applicazione web e può guidare su strategie e best practice. Questi sviluppatori avranno un ruolo sempre più importante nello sviluppo web del futuro e sono in  rado di guardare al "quadro generale". Sono esperti della parte server e sull‘ esperienza utente lato client.

JavaScript Developer: JavaScript è il linguaggio supportato da tutti browser e strumenti web, e non solo. Anche se viene associato al frontend, questo linguaggio non si limita affatto solo a questo utilizzo! E’ sempre più diffuso anche lato server tramite Node.js e in tanti altri ambiti! Proprio per questo uno sviluppatore specializzato su questo linguaggio è sempre più richiesto come categoria a se stante.

2. DevOps Engeneer

DevOps (la contrazione inglese di “development”, sviluppo, e “operations”, messa in produzione) è una strategia di sviluppo software che colma il divario tra gli sviluppatori e il personale IT. Con DevOps, le aziende possono rilasciare piccole funzionalità software e incorporare i feedback che ricevono molto rapidamente. Questo permette di superare tutti i limiti del modello tradizionale a cascata, ridurre il numero dei bug, consegnare il software più rapidamente. Il processo DevOps prevede l’utilizzo di molte tecnologie di sviluppo, test e distribuzione per lo sviluppo di pipeline automatizzate CI/CD. A titolo di esempio, ecco qualcuno degli strumenti DevOps più utilizzati: Git e GitHub – per la gestione del codice sorgente, Jenkins –come server di automazione, Selenio – per i test di automazione, Docker – come piattaforma di container software, Kubernetes – per l’orchestrazione dei container, Puppet – per la gestione della configurazione e distribuzione, Ansible – per gestire la configurazione e la distribuzione, Nagios – per il monitoraggio continuo.

Il DevOps Engineer è esperto del ciclo di vita dello sviluppo del software e ha la piena comprensione di vari strumenti di automazione per lo sviluppo di flussi di distribuzione digitali (pipeline CI/CD). Lavora con gli sviluppatori e lo staff IT per supervisionare le versioni del codice e gestire agevolmente più ambienti (per esempio di stage e produzione). In pratica, sono sviluppatori che si interessano alle operazioni di distribuzione e di rete o amministratori di sistema che hanno una passione per gli script e la programmazione e si spostano sul lato dello sviluppo dove possono migliorare la pianificazione di test e distribuzione.

3. Blockchain Developer

Il 2017 è stato l’anno del Bitcoin, la criptovaluta più famosa. Non a caso, proprio quell’anno, si affermò a Roma il meetup della Community romana di Blockchain, la tecnologia open-source dietro Bitcoin. Più di 200 partecipanti ad incontro e tra di essi tantissimi sviluppatori! Il motivo era ovvio: capire come programmare la tecnologia dietro la moneta virtuale e come sfruttarla per i propri progetti oppure per dare vita a dei nuovi, con lo stesso successo di Bitcoin – quest’atteggiamento accomuna molti dev!

Non mi meraviglia che, a distanza di qualche anno, pur essendo scemato l’interesse per le criptovalalute, non lo è affatto quello per la tecnologia che c’è alle spalle che continua ad avvicinare moltissimo gli sviluppatori che aspirano a lavorare in questo campo. Oggi l’utilizzo dei Blockchain è stata estesa ad altri usi come i contratti, offre un grande potenziale per i flussi di lavoro e la sicurezza e, per alcuni, rivoluzionerà il mondo degli affari e della finanza. E’ una tecnologia che permette di creare un registro pubblico, decentralizzato e inalterabile con una capacità strutturale di ridurre il costo della fiducia.

Un Blockchain Developer è uno sviluppatore con un’ottima conoscenza dei linguaggi di programmazione e di crittografia. Deve, inoltre, possedere una buona capacità analitica e conoscenza degli ambienti Blockchain per comprendere quando sia conveniente utilizzare questa tecnologia o meno e che gli permetta di scegliere, nel panorama ormai decisamente ampio di offerte, quali siano le Blockchain più adatte all’implementazione di uno specifico use case. Si occupa di progettazioni e sviluppo di Blockchain, sviluppo e implementazione di soluzioni e applicazioni basate su Blockchain, test e debug, esecuzione di analisi complesse, consulenza in materia di sicurezza informatica e crittografia. La figura lavorativa di Blockchain Developer è tra le più richieste negli ultimi anni.

4. App Developer

Negli ultimi anni si è assistito ad un incredibile sviluppo ed incremento di app per smartphone, tablet e PC: da quelle per ascoltare musica, ai giochi, alle app bancarie. Uno sviluppatore di app crea, testa e programma app per aziende e clienti, verificando e correggendo eventuali bug prima dell’avvio del prodotto.

Gli sviluppatori sono generalmente specializzati in una specifica area di sviluppo, ovvero applicazioni per telefoni cellulari, software di grafica o di contabilità, ed il software applicativo è scritto e diversificato per i differenti sistemi operativi: Android, iOS o Windows.  Per questo motivo, intercettate le esigenze dei consumatori, sono realizzate diverse versioni della stessa applicazione in modo che sia fruibile su diversi tipi di dispositivi: telefoni cellulari, tablet e personal computer. Lo sviluppatore continuerà poi a lavorare alla creazione di aggiornamenti periodicamente rilasciati al pubblico.

Le competenze richieste sono anche in questo caso varie e diversificate, fondate sulle conoscenze tecniche relative ai linguaggi informatici e su quelle analitiche per riconoscere le esigenze dei clienti, sulle capacità creative e comunicative, fino al problem solving, sulla cura dei dettagli e sulla capacità di fare squadra. Lo smartphone è diventato un’appendice naturale per molti di noi, direi la quasi totalità, rappresenta la libertà di poter gestire il proprio tempo libero ed i propri impegni senza vincoli, ha sostituito il personal computer in molti utilizzi. Per questo sono appetibili e ricercate le posizioni di sviluppatori di app mobili declinate per il sistema operativo Android sia per smartphone che tablet che lo supportano o iOS per i dispositivi del mondo Apple: iPhone e iPad.

5. Security Software Developer

In questi ultimi anni ho assistito sempre più ad un maggiore interesse da parte delle Community dei dev al tema della sicurezza informatica. Non mi sorprende, quindi, che un lavoro legato a questo settore risulti in questa posizione tra i lavori più ambiti dai programmatori italiani.
Infatti, un mondo in cui tutti siamo sempre connessi e le informazioni rappresentano una fonte appetibile di reddito per i cyber criminali, diventano fondamentali per le aziende i ruoli associati alla protezione delle informazioni così come la protezione dell’infrastruttura da attacchi che possono minare la credibilità di un’azienda.

Il Security Software Developer crea applicazioni, siti web e servizi sicuri ed efficienti. Può anche adattare il software esistente introducendo nuove misure di sicurezza. Come professionisti che partecipano a tutti gli aspetti dello sviluppo del software, gli sviluppatori di software di sicurezza vantano una vasta conoscenza dei linguaggi di programmazione, della progettazione del software e della sicurezza informatica. Proteggono dati e sistemi tecnologici in contesti aziendali, governativi e non profit. Questi professionisti accrescono esperienza nello sviluppo di software generale, sicurezza informatica e analisi di reti e sistemi informatici. Una precedente esperienza con test di penetrazione, hacking etico e analisi forense può sicuramente apportare loro dei vantaggi, consentendogli di anticipare potenziali minacce e punti deboli. Gli sviluppatori di software di sicurezza documentano le funzioni del software, apportando modifiche, eseguendo aggiornamenti ed eseguendo la manutenzione quando necessario. Inoltre, coordinano l’integrazione dei componenti software, spesso collaborando con programmatori, analisti software e dirigenti. Come team leader, fungono da intermediari e facilitano un lavoro tempestivo ed efficiente.

6. UX Developer

UX vuol dire “esperienza utente” e questo settore sta avendo una rapida crescita nel mondo dei programmatori dovuta all’esponenziale aumento di applicazioni e servizi digitali. Lo sviluppatore UX è in parte un designer e in parte uno sviluppatore; deve avere capacità creative e conoscere i linguaggi di programmazione e gli standard del Web. Il suo compito è migliorare l’esperienza utente delle applicazione, dei siti e servizi web. Il tradizionale binomio uomo-macchina si eleva ad un livello più alto in modo da rendere l’utente completamente soddisfatto e felice della sua esperienza con un prodotto o un servizio.

L’UX Developer è coinvolto nel processo di creazione di un prodotto appetibile per i clienti di riferimento della società per cui lavora, dal sottoporre questionari e sondaggi online per raccogliere informazioni sull’attuale utilizzo del prodotto e dell’interfaccia utente per passare alla fase di design in cui si pensa a come il prodotto o servizio possa meglio adattarsi al comportamento utente ed infine alla fase di test delle modifiche per finire con la fase implementativa in cui si lavora a stretto contatto con i designer occupandosi di trasformare le idee in realtà mediante un sito web perfettamente funzionante. Un progettista di esperienza utente (UX) concentra la propria attenzione sulle interazioni dell‘ utente e sul flusso complessivo di un prodotto, da non confondere con il progettista di interfaccia utente (UI) che si occupa invece di progettare il layout e ciascun elemento con cui l‘ utente interagisce. Possiamo immaginare l’UX Developer come un architetto e l’UI Designer come un pittore che contribuisce a rendere tutto più bello con le sue pennellate di colore. In molte aziende l’UX Developer è una figura univoca che si occupa dell’intero ciclo di vita del progetto per questo deve possedere anche buone capacità di leadership, comunicative e progettuali.

7. AR/VR Developer

L’industria della realtà aumentata (AR) e della realtà virtuale (VR) è ancora agli inizi, tuttavia è questo il momento perfetto per imparare a creare contenuti per queste tecnologie. Le competenze principali di cui si ha bisogno sono nell’area del 3D! In realtà, non è molto diverso dallo sviluppo di videogiochi in 3D. Questo perché AR e VR hanno a che fare con la creazione di mondi e ambienti immersivi in cui è possibile interagire in tre dimensioni, come nella vita reale. Dipende dal livello di approfondimento, ma bisogna imparare a scansionare e/o modellare in 3D, padroneggiare i motori software 3D per videogiochi (come Unity e Unreal Engine), lavorare con foto e video a 360°, conoscere un po’ di matematica e geometria, linguaggi di programmazione come C, C++, C# e gli SDK principali per progettare esperienze 3D per gli utenti.

La realtà aumentata / virtuale (e lo sviluppo 3D in generale) richiedono hardware di fascia alta. Tuttavia, poiché il prezzo dell’hardware è in costante calo, questo potrebbe non rappresentare un grosso problema come alcuni anni fa. Inoltre, ormai, i più grandi player tecnologici come Facebook, Google, Microsoft, etc. si sono tutti lanciati con le proprie soluzioni hardware e software (Oculus, Kinect, etc.) e la realtà aumentata sta prendendo sempre più piede sui social (Instagram, Messenger, etc.). Infine, tanti sviluppatori con un background di sviluppo web e conoscenze di JavaScript stanno volgendo il proprio interesse alla realtà aumentata e virtuale grazie alla creazione di standard aperti, come WebVR, che stanno portando queste tecnologie nei browser di ogni computer e smartphone (Android e iOS).

8. Game Developer

Chi di noi non ha giocato da bambino ai videogiochi e, diventato poi un programmatore, non ha sognato di crearne uno?!
L’industria dei videogiochi è oggi una delle più redditizie al mondo. All’inizio questo mercato attraeva soprattutto coloro che amavano particolarmente giocare ai videogiochi, ma ultimamente questo lavoro si è aperto a molte più posizioni e include una vasta gamma di attività quali l’intelligenza artificiale, gli effetti grafici, la fisica, la programmazione del suono, i sistemi di collisione e molte altre aree dello sviluppo.

Lo sviluppatore di videogiochi scrive codice che gira su svariate piattaforme: i computer, le console, i browser e gli smartphone. Creatività, passione per i videogiochi, un’ampia conoscenza delle ultime tecnologie e tendenze di questo mercato, mente analitica, capacità di lavorare come parte di un team, competenze di linguaggi di programmazione come C#, C++, HTML5, Swift, etc.

Le figure più richieste e che collaborano alla creazione di un videogioco sono essenzialmente quattro: il Game Designer che trasforma un concetto in prodotto, il Game Programmer che si occupa della programmazione del videogame, l’Artist, l’Animator 2D e 3D che si occupa delle animazioni e degli effetti e il Game Tester che collauda il gioco e si occupa della qualità di sviluppo e implementazione.

Innocenzo Sansone
Programmo fin da bambino, quando mi fu regalato dai miei genitori un Commodore 16. Oltre 15 anni fa, uno dei primi in Italia, ho iniziato a lavorare come Community Manager in ambito Tech per un’importante multinazionale del settore. Continuando questo lavoro anche con altre aziende, ho dato vita e supportato moltissime Dev Community, ho ideato e organizzato centinaia di eventi tecnici, ho diretto programmi e dipartimenti Tech Community.

Oggi, come libero professionista, dialogo con migliaia di sviluppatori, professionisti e appassionati di tecnologia, startup, aziende, community e associazioni. Continuo ad occuparmi di Community gestendo le Pubbliche Relazioni (con il network diretto – la propria community – e il network indiretto – tutte le altre), organizzando eventi online e dal vivo, ideando nuovi format, occupandomi di Comunicazione e Marketing specifici per la Community, supportando nello sviluppo di prodotti e servizi atti a valorizzare l’interazione con il proprio pubblico. Mi trovate suwww.innosans.it, a presto!

Abonniere unseren Newsletter

Bleibe auf dem Laufenden mit den aktuellsten News