DEVELOPERS

TAKE YOUR SEAT

"Take your seat" è il quadrante realizzato dai professionisti Experis che fotografa lo scenario degli sviluppatori/developers in relazione alla richiesta sul mercato all'innovatività del linguaggio.

LEGENDA

FRONT END DEVELOPER & MOBILE DEVELOPER
BACK END DEVELOPER
FULL STACK DEVELOPER

DATA SCIENCE - MACHINE LEARNING DEVELOPER
ENTERPRISE APPLICATION: SOLUTION DEVELOPER

FRONTEND & MOBILE DEVELOPER

Il frontend di un sito è la parte di soluzione con cui gli utenti interagiscono. Qualsiasi interfaccia che viene visualizzata durante la navigazione in internet (font, colori, menu e altri “componenti” che ci consentono di navigare tra le pagine e cercare/visualizzare le informazioni) è realizzata basandosi su HTML, CSS e javascript che vengono eseguiti sul browser quando gli utenti raggiungono una particolare pagina.

Fondamentale nello sviluppo del frontend è la user experience e la “fluidità” dell’esperienza che vivono gli utenti. Oggi, infatti, non è più solamente una questione di HTML, CSS e javascript, ma esistono diversi framework/librerie che semplificano il lavoro dello sviluppatore di frontend come Bootstrap e Foundation per la realizzazione di siti cosiddetti “responsive” e jQuery o Angular, React e Vue per accelerare gli sviluppi lato javascript e la realizzazione di moderne single-page web applications che scambiano dati con il “server” sviluppato dai backend developer.

Utilizzando questi strumenti, i frontend developer lavorano quindi a stretto contatto con grafici ed esperti di UX per mettere online il lavoro di mockup e wireframe. Si tratta perciò di figure tecniche che, al tempo stesso, hanno un’anima “visual” ed una passione per la personalizzazione ed ottimizzazione dell’esperienza digitale dell’utente. Il frontend developer non cura solamente l’aspetto “estetico” del sito, ma anche tutti i numerosi “trucchi” che si possono mettere in atto affinché il browser funzioni al meglio, influendo quindi positivamente sulle performance ed in ultima analisi sull’esperienza vissuta dagli utenti. Dopotutto, cosa c’è di peggio di un sito che stenta ad aprirsi e rende ogni click una snervante attesa per capire se finalmente abbiamo trovato il contenuto che stiamo cercando?

 

Lo sviluppatore mobile ha alcune analogie con il web developer, a partire dalla sensibilità verso la user experience. La differenza fondamentale risiede negli strumenti di sviluppo che non si fermano a HTML, CSS e javascript (spesso comunque utilizzati all’interno delle applicazioni mobile), ma toccano anche almeno una tecnologia di sviluppo nativo (Swift/Objective-C in ambito iOS o kotlin/Java per Android) e/o strumenti per lo sviluppo cross-platform come Xamarin, Ionic, React Native, …). Ed a questi strumenti si aggiungono poi alcune peculiarità relative ai dispositivi che ospiteranno le applicazioni (smartphone e tablet) ed agli stili di interazione attesi. Insomma, sempre programmazione, sì… Ma con qualche differenza da tenere presente!

 

Quali competenze deve avere un frontend developer?

  • Programmazione (oggi c’è tanta logica nel frontend quanto nel backend!)
  • HTML, CSS e javascript come base
  • Conoscenza base di design e dei principi del responsive web design
  • Esperienza in almeno un framework per lo sviluppo di single-page web applications

 

E quali invece un mobile developer?

  • Programmazione (linguaggi diversi ma logiche “simili”)
  • Esperienza in almeno un ambiente di sviluppo mobile nativo
  • Conoscenza di almeno un framework per hybrid/cross-platform mobile applications

BACKEND DEVELOPER & ARCHITECT

Se il frontend e mobile developer sono equiparabili agli interior design di una casa, qual è la figura che si occupa di costruirne le fondamenta?

Dove sono memorizzati tutti i dati che finiscono sulle nostre pagine o nelle schermate delle nostre app? E come si recuperano e trasferiscono ai client (in una tradizionale accezione “client-server”)?

Lo sviluppatore di backend si occupa di realizzare la struttura (il “server”) che nessuno vedrà durante la navigazione ma che, al tempo stesso, si nota subito quando non sta funzionando.

 

I linguaggi di programmazione server-side sono tendenzialmente differenti rispetto a quelli lato client, come lo sono anche le librerie, i framework e le caratteristiche architetturali da considerare. Si può dunque parlare di Java, .NET, Python, PHP, ecc. ma quello che è fondamentale è proprio il “contorno” in termini di soluzioni di:

  • memorizzazione dati (RDBMS – Oracle, SQL Server, MySQL, Postgres, … -, NoSQL – MongoDB, Cassandra, Redis, …)
  • “plumbing” per la realizzazione di architetture distribuite, performanti e scalabili (brokers di code – ActiveMQ, RabbitMQ, … -, enterprise service bus – Jboss Fuse, Tibco, Mule, … - , container platforms specialmente rilevanti in architetture a microservizi – OpenShift, Netflix OSS, …)
  • API ecosystems ed API Gateways – Tyk, Kong, Apigee, AWS, …
  • supporto a strategie di CI/CD e DevOps - Jenkins, AWS CodeBuild, Azure DevOps, …

 

Proprio per questa ragione, il backend developer è molto più portato ad assumere anche il ruolo di Architect e, di conseguenza, spinto ad un aggiornamento costante delle proprie competenze mantenendo il passo con l’innovazione tecnologica ed i paradigmi architetturali. Così, arriverà ad occuparsi di definire i nuovi scenari di business e le implementazioni tecnologiche necessarie per l’evoluzione delle piattaforme aziendali, indirizzare le linee guida e le best practices per lo sviluppo del codice, scegliere le migliori soluzioni tecnologiche a fronte delle richieste di business, coordinare diversi team e gestire tutte la catena fino al rilascio in produzione nonché effettuare analisi di fattibilità e stime tempi/costi.

 

Quali competenze deve avere un backend developer?

  • Utilizzo ed integrazione di DB relazionali e non-relazionali
  • Integrazione di sistemi tramite API diversificate
  • Solidi “fundamentals” in ambito Information Technology per garantire un buon livello di troubleshooting e le giuste scelte in termini di security e performance

 

E per diventare un buon architect?

 

  • Diversificazione! Per fare la giusta scelta architetturale occorre aver fatto esperienze con tecnologie e soluzioni il più possibile diverse tra loro. Capiterà prima o dopo che sarai chiamato a sviluppare una soluzione che non è il “semplice” backend di un sito!
  • Dimestichezza nell’utilizzo dei principali design pattern IT
  • Esperienza su container platforms e API management
  • Conoscenza dei principali offering, componenti e vendor in ambito cloud (IaaS/PaaS/SaaS), dei vari componenti, utilizzi e paradigmi di integrazione, delle metodologie e le componenti DevOps.

FULL-STACK DEVELOPER

E cos’è il full-stack developer? In alcuni casi, la linea di demarcazione tra il frontend developer ed il backend developer tende a “sbiadire”, soprattutto per il fatto che il mercato del lavoro si trova in una situazione di difficoltà di reperimento di professionisti IT, con una forte domanda da parte delle aziende, di ogni settore.

Negli ultimi anni, infatti, la complessità in ambito sviluppo IT è cresciuta molto. Non si tratta più “solo” di HTML, CSS, javascript, PHP, Python, Ruby e Amazon, oggi per una soluzione completa si aggiungono iOS, Android, MongoDB, Machine Learning, Microservices. Il tutto con esigenze di scalabilità, fault-tolerance e performance sempre marcate.

Di fronte a una complessità di tecnologie, quindi, le aziende a volte preferiscono assumere professionisti con competenze trasversali, anche se meno verticali.

 

Quali competenze deve avere un backend developer?

  • L’unione (anche se non con la stessa “intensità”) di quelle dei due profili precedenti!

DATA SCIENCE - MACHINE LEARNING DEVELOPER

La data science è quella branca che non ha necessariamente e strettamente a che fare con il mondo dello sviluppo, ma più con la manipolazione di dataset (fonti di dati) complessi. Negli ultimi anni, grazie anche a una sempre più diffusa potenza computazionale, si è passato a elaborare questi dati secondo logiche e algoritmi di machine learning sempre più complessi e quindi necessariamente legati allo sviluppo di codice.

Sono due le figure in questo scenario che sono emerse dal mercato del lavoro: il data scientist e il data engineer. Il Data Scientist si occupa principalmente di individuare, lato statistico e matematico, quali sono i modelli più efficaci.

Il Data Engineer si occupa prevalentemente di applicare e tradurre in codice quanto elaborato dai modelli statistici e matematici. Il linguaggio più utilizzato per lo sviluppo di machine learning e applicazione della data science è prevalentemente python, ma si utilizzano ancora alcuni software statistici quali R e Matlab.

La tendenza sempre più diffusa è quella di fare sviluppo di applicazioni di machine learning attraverso piattaforme quali tensorflow. L’utilizzo della data science e del machine learning ha delle potenzialità sicuramente ancora inesplorate, ma si applicano a tutti quegli ambiti dove sono presenti grandi moli di dati. Alcune applicazioni consolidate sono nel natural language process e dell’image recognition, ma sono ben note alcune applicazioni lato marketing e digital sulla prediction della customer base.

ENTERPRISE APPLICATION: SOLUTION DEVELOPER

Il mondo dell’IT è costellato non solo di linguaggi di programmazione e framework, ma anche di soluzioni “confezionate” che aiutano le aziende in molte loro esigenze. CMS, CRM, ERP, e-Commerce: per ognuna di queste voci ci sono soluzioni “pronte all’uso” che poi necessitano di integrazioni, personalizzazioni, modifiche. Questo è il ruolo di quegli sviluppatori che si specializzano su una di queste soluzioni. La particolarità di questo profilo è che, più di altri con cui condividono nel job title la parola “Developer”, di solito alle competenze tecnologiche sulla programmazione e sulla particolare soluzione uniscono anche una competenza funzionale relativa al campo di applicazione della soluzione stessa. Vero peraltro soprattutto al crescere dell’esperienza. Alcuni esempi:

  • se sei uno sviluppatore Hybris - e lo sei da diversi anni - non potrai non aver maturato una certa competenza in ambito e-commerce; e, d’altro lato, i clienti se lo aspetteranno assolutamente da te!
  • se negli ultimi anni hai sviluppato in SAP FI, o SAP FF, varrà un discorso analogo, ovvero avrai acquisito una competenza sui processi sottesi da questi moduli della suite di SAP; ancora una volta, questo sarà quello che i clienti ti chiederanno.

 

In questi contesti è assolutamente normale che il codice che si scrive/personalizza abbia un’importante connotazione funzionale e, tanto più siamo Senior, quanto più dovremo comprendere (se non addirittura parlare) questo linguaggio specifico.

 

Quali sono i compiti di un Enterprise Application Solution Developer?

  • è incaricato della progettazione e dello sviluppo di modifiche e/o estensioni per le applicazioni ed i verticali della soluzione di riferimento
  • collabora con i consulenti funzionali e con il team di supporto per i test e la documentazione
  • testa quanto realizzato per garantire la validità dei risultati e l'affidabilità, nonché conformità agli standard previsti
  • si assicura che i nuovi sviluppi siano integrati con le altre applicazioni che l’azienda utilizza per i propri scopi di business
  • fornisce le stime di lavoro che permetto la definizione di priorità e di pianificazione
  • analizza ed implementa report mediante diversi tool

 

Quali competenze bisogna acquisire per diventare un Enterprise Application Developer?

  • buona conoscenza di metodologia di analisi e sviluppo software
  • conoscenza di tool di reporting
  • conoscenza dei principali processi aziendali legati all’area funzionale di riferimento e di come interagiscono nella realizzazione di soluzioni applicative gestionali
  • capacità di adattarsi al cambiamento, sviluppare strategie per risolvere i problemi, pensare in modo analitico
  • capacità di tollerare lo stress e concentrazione su scadenze e risultati finali

 

 

Chatta con un Recruiter Experis

 

Consulta le posizioni aperte

Gioca alla Coding Challenge

Guarda i corsi Experis Academy

 

Experis, brand di ManpowerGroup, è leader in 54 paesi nella Ricerca e Selezione del personale, sviluppo di Career & Skills, Consulenza e Project Solutions. 

Presente in Italia con la Ricerca e Selezione da oltre 20 anni, con 5 sedi Experis, 4 sedi Experis Academy e una software house, lavora al fianco delle imprese per realizzare progetti in ambito informatico e ingegneristico, ricercare talenti e sviluppare risorse attraverso soluzioni veloci, efficaci ed innovative.