Scopri cosa sono la programmazione front-end e back-end, le principali competenze richieste per queste professioni e i trend del futuro nel settore.
INDICE
Quando mi sono affacciato per la prima volta al mondo della programmazione web ho iniziato a chiedere consiglio ad amici programmatori su quale linguaggio di programmazione fosse il migliore per poter iniziare. Molto spesso la loro risposta era sempre la stessa:
“non conta il linguaggio che sceglierai di imparare all’inizio, quello che conta davvero è capire se vuoi fare front-end o back-end”.
Anni dopo, sono passato dal lato degli sviluppatori, e molto spesso mi trovo a dare lo stesso suggerimento per orientare chi vuole affacciarsi allo sviluppo web.
Partiamo dal capire che cosa sviluppa un programmatore front-end e cosa sviluppa un back-end. Ad esempio, quando apriamo il nostro browser e inseriamo “https://lacerba.io” sulla barra di ricerca verrà visualizzata l’homepage del sito Lacerba. Questa home è composta da una serie di elementi strutturati e organizzati all’interno della pagina, come la la barra di navigazione in alto oppure la sezione con i percorsi disponibili. La disposizione di questi elementi nella pagina, e il loro stile è uno dei compiti principali di uno sviluppatore front-end. Se invece proviamo a fare login per accedere alla nostra area riservata avremo un form che ci chiede email e password. Quando inseriamo le nostre credenziali e clicchiamo sul bottone ‘invia’, viene effettuata una chiamata al server Lacerba che si occuperà di interagire con il database e verificare se questo utente esiste e se la mail è corretta. Il server si occuperà di rimandare al browser un’informazione positiva se l’utente esiste e la password è corretta oppure, in caso contrario, un errore. L’interazione tra front-end, server e database è uno dei compiti principali di uno sviluppatore back-end.
Di seguito trovi un anche breve video che ho realizzato dove spiego la differenza tra front-end e back-end, utilizzando come esempio un fast food.
La differenza tra front-end e back-end molto spesso va oltre il concetto di codice, rappresenta due culture e paradigmi di sviluppo tra loro diversi, con un obiettivo molto spesso condiviso, realizzare applicazioni e siti web utilizzabili e performanti, e questo non è possibile senza il lavoro di entrambi. Andiamo ad analizzare nel dettaglio la differenza tra front-end e back-end, facendo riferimento non solo al codice, ma anche alla soft skills utili per diventare una di queste figure.
Il front-end è la parte di un sito web con cui l’utente interagisce. Tutto quello che vedi in una pagina web, dal font alla disposizione dei bottoni, passando per i popup, fa parte del front-end del sito web.
Il front-end developer è responsabile di realizzare la parte del codice del sito che viene visualizzato dall’utente e la sua user experience. I linguaggi principali richiesti sono HTML, css e Javascript. In aggiunta a questi linguaggi è importante che uno sviluppatore front-end abbia familiarità con dei framework di User Interface come Bootstrap, delle librerie come jQuery per la gestione di interazione ed eventi oppure linguaggi di css avanzato come SASS.
Da qualche anno ormai si sono diffusi dei framework javascript, come ad esempio React o VueJs, che permettono di sviluppare interfacce e interazioni complesse all’interno del sito velocemente e in maniera strutturata. Questi framework, molto spesso però hanno delle logiche di sviluppo vicine al back-end, rendendo la differenza tra front-end e back-end sempre meno netta.
Gli sviluppatori front-end si troveranno a lavorare a stretto contatto con dei web designer e per questo può aiutare conoscere dei software di mockups o wireframe come ad esempio sketch o photoshop. Per un front-end può essere un valore aggiunto avere un approccio orientato al design e alla user experience, in modo da contribuire direttamente alla realizzazione e progettazione delle interfacce. Per questo gli sviluppatori front-end spesso sono orientati al dettaglio, esprimono la loro creatività in maniera visuale e ricevono un feedback immediato.
Se desideri approfondire gli aspetti relativi al front end ti consiglio anche l’articolo “Chi è il front end developer?”, sempre su questo blog.
Il back-end è quello che sta dietro un sito, quello che non si vede ma che ne permette il funzionamento generale. Il back-end consiste di un server, un’applicazione web e un database. Il back-end developer si occupa di costruire e mantenere la tecnologia che abilita e collega queste tre componenti.
Per far comunicare il server, database e l’applicazione tra di loro, gli sviluppatori back-end utilizzando uno o più linguaggi server-side, come ad esempio Ruby, Python, Java, PHP, .NET o Node per costruire l’applicazione, e strumenti come SQL Server per interagire con il database.
La maggior parte degli sviluppatori back-end conosce, almeno ad un livello base, i principali linguaggi front-end, HTML, css e Javascript. Javascript, come già menzionato, è un linguaggio front-end molto diffuso che negli anni si è evoluto tantissimo, ed è ormai molto comune trovare sviluppatori back-end che utilizzano quotidianamente uno dei framework front-end basati su javascript come React, VueJS o AngularJS. Proprio perché Javascript è un linguaggio così diffuso sono nati anche dei linguaggi di programmazione server-side basati interamente su Javascript, il più famoso è sicuramente NodeJS che è un framework back-end a tutti gli effetti basato su Javascript.
I programmatori back-end molto spesso si trovano ad integrare diverse componenti tra loro, molto spesso in maniera astratta, quindi è importante avere un approccio orientato al problem solving. Al back-end developer spettano anche decisioni su tecnologie, integrazioni o architettura del software e spesso si occupano di convertire richieste di business in requisiti tecnici per trovare la soluzione più efficiente per sviluppare la tecnologia. Se lo sviluppatore front-end ha più un approccio orientato all’utente, lo sviluppatore back-end ha un approccio più orientato alla tecnologia e alle funzionalità.
Ma come possiamo scegliere se iniziare dallo sviluppo front-end o back-end? Ci sono alcune variabili che ci possono aiutare nella scelta.
Quale è l’obiettivo che ci spinge ad imparare a programmare? Se l’obiettivo è la ricerca lavoro possiamo dire che non c’è una forte differenza tra le due figure, entrambe sono molto richieste nel mercato. Anche come stipendio medio le due figure sono più o meno in linea su un entry level.
Se invece l’obiettivo è quello di imparare a programmare per realizzare dei progetti personali oppure per diventare un freelance, la scelta tra un percorso front-end e uno back-end può impattare. Se i progetti che si vogliono realizzare sono dei progetti che non richiedono un server/database come ad esempio dei siti statici (sito vetrina di un’attività, portfolio di un professionista, etc…) allora la scelta migliore può essere quella di focalizzarsi sul front-end. Se invece si vogliono creare delle applicazioni web che necessitano dell’architettura con il server e database per la gestione dei dati allora la scelta è forzata verso il back-end.
Le caratteristiche personali, soft skills e passioni possono essere un fattore determinante nella scelta della carriera.
Una figura orientata all’estetica, alla parte visuale, al dettaglio probabilmente sarà più appassionata dallo sviluppo front-end, visto che la sfida principale di questo lavoro è realizzare applicazioni che siano utilizzate e amate dagli utenti. Mentre una figura più orientata al problem solving e all’integrazione di diversi sistemi sarà più appassionata dalla parte back-end, dato che la sfida principale del suo lavoro è quella di ridurre al minimo gli errori e garantire il funzionamento di tutta l’architettura.
Come abbiamo visto la differenza tra front-end e back-end è ancora attuale anche se con lo sviluppo di Javascript e dei suoi framework la distinzione è decisamente meno netta e ormai è abbastanza comune trovare sviluppatori front-end che sono in grado di scrivere del codice attraverso linguaggi server-side così come è comune trovare programmatori back-end che sono dei guru di javascript. Basta analizzare questo report realizzato da stackoverflow (il sito più utilizzato da ogni programmatore) per vedere che javascript è ormai il linguaggio più diffuso.
In aggiunta a javascript ed i suoi framework ci sono una serie di strumenti di sviluppo che ormai sono utilizzati quotidianamente da entrambe le figure, come ad esempio Git e Github per gestire il codice e lavorare in team sullo stesso progetto, oppure Docker per semplificare il setup di una nuova applicazione e ridurre eventuali problematiche relative ad ambienti di sviluppo diversi. Anche nel modo di impostare il lavoro ormai è comune vedere lo stesso approccio tra le due figure, ovvero sviluppo agile, che sfrutta la metodologia lean basata su cicli di sviluppo brevi a sprint.
Allo stesso tempo il web development sta andando verso una direzione modulare, con la creazione di componenti indipendenti, riutilizzabili, e semplici da mantenere nel lungo termine. Questo significa che sviluppatori front-end e back-end si trovano a lavorare a stretto contatto, spesso in piccoli team ed è molto comune che queste figure siano in grado di capire il lavoro dell’altro per raggiungere al meglio gli obiettivi di business prefissati.
È importante sottolineare come il coding sia un mondo in continua evoluzione, molte tecnologie nascono e muoiono velocemente, così come paradigmi di sviluppo, mentre quello che rimane invariato è l’obiettivo della programmazione: ovvero creare applicazioni che hanno l’obiettivo di essere utilizzabili, performanti e sicure.
Fra 10 anni i linguaggi di cui ti ho parlato potrebbero essere in disuso, allora non sarai più un programmatore Back End o Front End? Non sono tanto le etichette a definire chi sei nella programmazione, ma il tipo di soluzione, la strategia di problem solving che sceglierai di attuare per risolvere o aggirare un dato problema. Perché tutto è in costante evoluzione nel mondo della programmazione, ma una cosa resta invariata: si tratta di risolvere problemi.
Se desideri approcciarti alla programmazione su Lacerba abbiamo sia dei corsi introduttivi di livello base, che corsi verticali per apprendere il front-end e il back-end.
Corso base di programmazione – (accedi con il 20% di sconto attraverso questo link)
Percorso da front end developer – accedi con una borsa di studio e inizia la tua carriera
Percorso da programmatore back end – accedi con una borsa di studio e inizia la tua carriera