50 anni fa e anche oltre, i linguaggi di programmazione erano direttamente incentrati sul processore che avrebbe eseguito il software. Niente cavi da staccare, ma codice molto complesso per fare operazioni che oggi verrebbero definite elementari con l’aggravante di doverlo riscrivere praticamente da zero per ogni nuovo processore. Quando si parla di programmazione di questo tipo ci si riferisce alla famiglia di linguaggi Assembly o simili.
Full stack developer, i linguaggi di terzo livello
Successivamente la programmazione si è evoluta, fino ad arrivare a creare linguaggi di programmazione il cui codice potesse essere trasformato e reso funzionante per una famiglia più vasta di processori (ad esempio il linguaggio C), o potenzialmente tutti (come Java). Questa magia è resa possibile da elementi come i compilatori e i builder (rispettivamente “traduttori” di linguaggi in linguaggio macchina e integratori di codice esterno come le librerie, scritti da altre persone), o le macchine virtuali (la Java Virtual Machine o il .NET ad esempio, veri e propri strati tra il computer fisico ed il software scritto) oppure ancora gli interpreti, in grado di comprendere il codice scritto in tempo reale, durante l’esecuzione (come nel caso di Python).
Questi linguaggi, oltre ad essere multipiattaforma hanno anche l’enorme vantaggio di essere più semplici in quanto la traduzione nel complesso codice Assembly viene effettuata in automatico, ad esempio, dal compilatore. Per questo motivo vengono chiamati linguaggi di terzo livello (Assembly di secondo, il codice binario di primo)
È necessario precisare che linguaggi di terzo livello non sono tutti uguali per sintassi e per principi base. Inizialmente tutti erano sequenziali, ovvero le istruzioni venivano eseguite una di seguito all’altra (ad eccezione di componenti come condizioni e cicli). Successivamente ci si è spostati quasi in massa verso la programmazione ad oggetti, in cui il codice viene eseguito non sequenzialmente, ma entrando ed uscendo da parti di codice dette classi, che descrivono determinate funzionalità e dati.
Full stack developer, l’evoluzione della figura dello sviluppatore
Gli sviluppatori che si sono trovati costretti a passare dal paradigma sequenziale, utilizzato per anni, a quello a oggetti ci hanno messo del tempo a digerirlo del tutto. Si tratta di un modo di pensare (e lavorare), completamente diverso.
Programmare con grafica o senza grafica era semplicemente programmare. Non c’era distinguo. Siti e applicazioni per i vari sistemi operativi erano realizzati da programmatori. Certo, qualcuno era più bravo di altri e più specializzato in determinati aspetti, ma il lavoro era quello.
Circa 15 anni fa, data l’esplosione di nuove necessità del mondo del web e, di conseguenza, di nuovi linguaggi, il mestiere del programmatore si è diviso in due: backend, ovvero tutto il codice che non si vede, ma che permette al resto di funzionare e il frontend, ovvero tutto ciò che riguarda la grafica del software o dell’applicazione web (o dell’app per mobile).
Full stack developer, l’unione di front e back
I due mondi sono ovviamente collegati, il frontend senza backend non avrebbe molto da mostrare. Questi restano però due mestieri completamente diversi, in comune hanno solo che si scrive del codice. Chi si occupa di frontend spesso utilizza più linguaggi insieme e ha modalità di sviluppo diverse dal backend.
Il salto da back a front (e viceversa), è lungo. Proprio per questo il full stack developer è un essere mitologico che è capace sia di sviluppare il back sia il front. Queste figure esistono, ma, a parte qualche caso eccezionale, si tratta di persone over 30, con almeno 4-5 anni di esperienza immersiva per ognuna delle due macro-famiglie.
Da tutta questa trattazione è immediato comprendere che tutti quei corsi in cui è facile imbattersi online, che propongono di trasformare in full stack nel giro di pochi mesi persone con poca o nulla esperienza, salvo casi eccezionali, creano “professionisti” con molte idee in testa e confuse. Una preparazione del genere può fornire un’infarinatura, ma per far crescere full stack developer autonomi almeno qualche anno di esperienza è necessario.