Sviluppatore full stack: come diventare un developer a tutto tondo
Intervista a Davide Brienza, developer in BitBoss
Essere sviluppatore full stack significa saper programmare a tutto tondo. Un full stack developer ha le competenze di un front-end e di un back-end developer, sa lavorare con linguaggi di base come HTML e CSS e conosce diversi linguaggi di programmazione come Laravel. Ovviamente ciò non significa che possa lavorare in completa autonomia: soprattutto per progetti complessi, è fondamentale avere un team che collabora su diversi fronti. Sicuramente però avere una conoscenza completa in ambito di programmazione conferisce un bel vantaggio competitivo ad uno sviluppatore freelance.
Diventare sviluppatore full stack richiede sicuramente una grande preparazione tecnica, ma qual è il percorso migliore da seguire per avere maggiori probabilità di successo? Quale tipo di carriera è bene intraprendere se si vuole diventare bravi su più ambiti, senza fossilizzarsi solamente su alcuni aspetti verticali?
L’abbiamo chiesto a Davide Brienza, sviluppatore full stack in BitBoss, che ci ha spiegato qual è stato il percorso che ha seguito e quali competenze, non solo tecniche, sono necessarie per intraprendere questo percorso professionale.
Come sei diventato sviluppatore? Quali studi accademici hai intrapreso?
Fin da piccolo mi sono sentito attratto dalle materie informatiche. Per questo devo anche ringraziare mio padre che fin dagli anni ’90 mi ha trasmesso la sua passione per i computer e la tecnologia in generale. Una volta conseguito il diploma mi sono iscritto alla facoltà di ingegneria informatica, ma l’ho trovata poco stimolante. Ho deciso così di cambiare e sono passato a scienze informatiche, ma mi sono reso conto che il metodo di insegnamento e gli studi troppo teorici non facevano per me (gli esercizi di programmazione venivano svolti su fogli di carta). Dopo ho avuto la possibilità e la fortuna di lavorare con mio cugino che collabora con un’azienda informatica di Firenze e quello è stato il mio primo vero contatto con la programmazione. Da quell’esperienza ho sviluppato la mia passione per questo lavoro.
Dopo 3 anni di lavoro con lui e di collaborazioni con altre aziende, ho voluto allargare i miei orizzonti e sono venuto in contatto con diverse realtà. Alla fine ho scelto Bitboss a Torino perché personalmente prediligo gli ambienti più piccoli rispetto alle grandi aziende.
Ti senti più freelance o dipendente?
Anche se sono fisso in BitBoss non mi sento un dipendente nel senso stretto del termine. Rimanere in BitBoss è una mia scelta come freelance perché mi piace sia il lavoro, sia l’ambiente che si è venuto a creare negli anni con i miei colleghi.
Perché prediligi le piccole realtà piuttosto che le grandi aziende?
In un ambiente piccolo il clima è molto diverso da come potrebbe essere quello di una grande azienda. Sicuramente se dovessi essere preso a lavorare come dipendente da una grossa società non sarebbe la stessa cosa. In primis per una questione di coinvolgimento nel team: In un’azienda piccola hai più modo di farti notare e crescere, si chiedono consigli, si parla. Anche dal punto di vista lavorativo, lavorare per un’azienda come BitBoss ti permette di crescere. Io ho imparato tanto e ho avuto modo di sviluppare capacità che altrimenti non avrei avuto modo di ottenere. Ora sono full stack soprattutto per questo motivo. Tempo fa mi era stato proposto un lavoro in un’azienda a Roma, avrei fatto maintainer di database, quindi sarei diventato certamente forte in quell’ambito, ma non avrei imparato nulla di tutto il resto. Lavorare in aziende di dimensioni ridotte e interfacciarmi con altri freelance mi da la possibilità di approfondire aspetti del lavoro che altrimenti non avrei l’opportunità di affrontare.
Al momento lavori da remoto oppure ti rechi in ufficio?
Lavoro da casa, ma è stata una scelta condizionata da forze maggiori, se fosse dipeso da me non l’avrei fatto. Io sono entrato in BitBoss da lavoratore e non da studente, nel senso che BitBoss non è stata la mia prima esperienza lavorativa quindi ero già abituato a lavorare in ufficio condividendo la scrivania con altre persone e questo non mi è mai pesato. Se avessi dovuto crearmi il mio mondo lavorativo da zero sarebbe stato diverso, avrei anche potuto crearmi un ambiente di lavoro in remote working, invece sono sempre stato abituato a lavorare in ufficio. Per me il lavoro è molto importante, compreso il rapporto con i colleghi che è sempre stato di vicinanza fisica e non virtuale. Il lavoro da freelance adesso è uguale a prima, con l’unica differenza che ora lo faccio da casa, cerco di mantenere la mia routine lavorativa, replico la vita da ufficio ma da remoto. Se avessi la possibilità tornerei a lavorare in ufficio con i miei colleghi, l’unica pecca sarebbe il caos della città e il traffico da affrontare tutte le mattine, ma per risolvere quel problema basterebbe trovare una casa vicino al posto di lavoro.
Quali sono i pro e contro del lavoro in ufficio e del lavoro da casa?
Con BitBoss preferirei lavorare in ufficio perché mi trovo bene, in un’altra azienda forse sarebbe diverso. Anche i confronti accesi e i piccoli litigi nati dal lavorare a contatto con il resto del team sono uno stimolo che mi porta a preferire la vicinanza fisica, mi porta a confrontarmi con gli altri e a stringere rapporti anche di amicizia.
Oltretutto per me avere la possibilità di gestire il mio tempo a piacere è più un problema che un vantaggio. Caratterialmente non sono una persona metodica, quindi impormi un orario di lavoro mi aiuta a mantenere regolarità e disciplina. Quindi, anche ora che lavoro da remoto cerco di mantenere gli orari che rispettavo in ufficio. Paradossalmente se avessi più libertà sarebbe più difficile per me organizzare il mio tempo. Per fortuna, pur lavorando a distanza, ho continuamente relazioni con i miei collaboratori e questo mi aiuta a essere più metodico e mi permette di svolgere il mio lavoro al meglio delle mie possibilità.
Riesci a mantenere il rapporto che avevi prima con i colleghi anche a distanza?
Ci sentiamo di meno ovviamente, ma per me i rapporti sono rimasti gli stessi. Se non fosse stato per l’emergenza Covid sarei già tornato a Torino.
Sei più produttivo a casa o in ufficio?
In ufficio mi distraevo più spesso, tra pause caffè e riunioni faticavo a riprendere la concentrazione dopo ogni interruzione. Invece a casa sono solo e riesco a concentrarmi meglio, quindi posso dire di essere più produttivo a casa.
Trovi che sia più stimolante lavorare in ufficio che a casa?
Probabilmente per un senior a livello formativo non c’è differenza tra casa e ufficio perché è esperto e sa come trovare in autonomia le informazioni che cerca. Per un junior invece è diverso: in quel caso lavorare da remoto è sicuramente meno formativo perché manca un po’ una figura di riferimento, qualcuno che ti aiuti quando sei in difficoltà.
Ritieni che dal punto di vista formativo la realtà piccola sia migliore rispetto alla grande azienda?
È un dato di fatto che in una piccola realtà tu debba fare più cose perché ci sono meno figure che ricoprono determinati ruoli. La mia scelta era tra andare a fare il maintainer di database in un’azienda enorme, oppure entrare in una realtà più dinamica in cui sapevo che avrei dovuto cimentarmi in una varietà più ampia di sfide. Nel primo caso non avrei neanche toccato il codice, invece ora in BitBoss faccio tutto: gestisco un progetto da solo, faccio il progettista, il maintainer e mi occupo di programmazione vera e propria.
Ti piacerebbe fare il project manager? Ti sentiresti in grado di coordinare un team e di interfacciarti con il committente di un progetto?
Sì certo, però non mi piacerebbe farlo da esterno al progetto. A me piace programmare, quindi vorrei stare il più possibile all’interno del progetto, mi piacerebbe coordinare un team come project manager tecnico ed essere coinvolto nello sviluppo.
Quale metodo organizzativo utilizzate in BitBoss? Ritieni che questo funzioni o è da migliorare?
Il metodo BitBoss si basa su Scrum che è il metodo più utilizzato dalle grandi aziende per lo sviluppo dei software, quindi non ho la presunzione di dire che secondo me esiste un modo migliore per gestire un progetto. Secondo me ad oggi un’alternativa più valida non esiste. Per quanto riguarda noi nello specifico, si potrebbe puntare ad un potenziamento dell’organico per quanto riguarda i test di prodotto. Durante lo sviluppo di un software c’è bisogno di testare continuamente il codice perché molto spesso si arriva alla consegna con dei problemi dovuti alla mancanza di tempo. Nelle aziende grandi esistono delle figure che si occupano esclusivamente dei test di funzionalità: stressano il sistema e il codice, trovano i malfunzionamenti e li comunicano allo sviluppatore. Essendo una realtà più piccola, noi dobbiamo effettuare i test personalmente, ma in un mondo ideale dovrebbe esserci qualcuno preposto a fare solo quello.
Questo metodo l’hai usato anche con le altre aziende con cui hai collaborato prima di BitBoss?
Nell’azienda con cui ho collaborato prima non ho avuto modo di sperimentare un vero e proprio metodo. Avevo un project manager che mi diceva quello che dovevo fare, ma non ero coinvolto nell’organizzazione. Questo è appunto uno dei motivi per cui ho deciso di entrare in una realtà più piccola. In BitBoss ho imparato, oltre a ciò che concerne la programmazione, come si muove un’azienda nelle sue diverse aree: dalla gestione dei progetti, al marketing, alla fiscalità, al mondo startup in genere. Nella mia vecchia azienda il mio project manager usava Clickup, Gira e tool vari ma difficilmente ero coinvolto nei processi di gestione.
La mancanza di supporto o di una guida potrebbe indurre un giovane sviluppatore a preferire la carriera da dipendente? E’ un problema che potrebbe condizionare questa scelta?
Beh per un freelance esiste la possibilità di collaborare con altri liberi professionisti. Tuttavia, nella maggior parte dei casi un freelance non ha la necessità di gestire mille progetti: nella migliore delle ipotesi si troverà a dover affrontare un paio di progetti contemporaneamente, che già portano un certo guadagno. Per un freelance le prospettive di guadagno che arrivano da un progetto possono coprire le spese di 6 mesi, per una piccola azienda invece è diverso, crescono le complessità ed è necessaria più organizzazione.
Se devi affrontare un problema che non sai risolvere come trovi la soluzione?
Se ci si trova davanti ad un ostacolo durante il lavoro, ritengo che cercare da soli la soluzione e sbattere la testa sul problema sia più formativo che chiedere aiuto all’esterno, a qualcuno che già ha la soluzione. Se trovo un ostacolo che devo superare nell’immediato cerco la soluzione su Google oppure mi affido alle community come quella di Stack overflow.
Tendo ad evitare community tipo Facebook o Telegram perché il codice va decorato, va scritto in un certo modo e le classiche chat non supportano questo tipo di scrittura. Esistono community apposite, appunto tipo Stack overflow, Gitlab, ecc…Quando mi imbatto in un problema i primi siti di riferimento sono sempre quelli.
Se ci si trova davanti ad un ostacolo durante il lavoro, ritengo che cercare da soli la soluzione e sbattere la testa sul problema sia più formativo che chiedere aiuto all’esterno, a qualcuno che già ha la soluzione.
Sei uno che si informa costantemente oppure tendi a farlo solo se è necessario per il tuo lavoro?
Io faccio questo lavoro perché mi piace, quindi sento sempre la necessità di informarmi. Anche nel tempo libero seguo corsi e leggo libri.
Chiaramente quando ti trovi ad affrontare progetti molto impegnativi ti manca il tempo di studiare cose che non ti servono nell’immediato. Quando il lavoro occupa molte ore della giornata, il poco tempo libero che ho alla sera me lo prendo per me. Quasi sempre però capita che anche se non c’è un problema da risolvere nell’immediato comunque si imparano sempre cose nuove. Al momento ad esempio devo creare una rubrica di contatti per un cliente e per fare questo mi serve un sistema di gestione che sia ottimizzato ad oggi, perché quello che magari ho utilizzato nel 2018 adesso è obsoleto. Per cui vado sempre ad informarmi su pacchetti nuovi per trovare il metodo più ottimizzato per fare qualcosa.
Esistono secondo te caratteristiche personali necessarie per fare questo mestiere?
La passione è la prima cosa. Se non c’è la passione parti già penalizzato. Quello dello sviluppatore è un lavoro molto stressante, ti aggiri continuamente tra deadline e richieste sempre nuove. La passione ti aiuta a gestire lo stress che altrimenti sarebbe insopportabile. Diciamo che devi essere una persona anche piuttosto smart, devi essere curioso, devi avere al voglia di imparare sempre cose nuove e aggiornarti. È un lavoro che si fa con se stessi e non con gli altri. Anche se sei in un team di 100 persone il tuo task lo porti avanti da solo, non hai nessuno che ti guarda e ti sorveglia mentre lavori. Per cui in quel momento non senti la pressione, alla consegna sai che il tuo lavoro dovrà essere perfetto, però mentre scrivi il codice non hai nessuno che ti corre dietro. Consiglio questo lavoro ad una persona ansiosa, la aiuterebbe a gestire lo stress. Non devi essere particolarmente intelligente per svolgere questo lavoro, certo devi avere una predisposizione per la programmazione.
È un lavoro che si fa con se stessi e non con gli altri. Anche se sei in un team di 100 persone il tuo task lo porti avanti da solo, non hai nessuno che ti guarda e ti sorveglia mentre lavori.
In che direzione sta andando questa professione?
Penso che questo lavoro verrà soppiantato molto presto. Tra 10 anni probabilmente il mio lavoro cambierà, sarà sempre in ambito informatico, ma si sposterà forse sui sitemi o sull’intelligenza artificiale, sicuramente non farò più il programmatore per come lo intendiamo adesso. Il lavoro che faccio ora verrà fatto da un software e non più da un essere umano. Imparerò forse un altro linguaggio di programmazione.
Penso che la programmazione lato web finirà, nessuno farà più siti web, ma crescerà il numero di applicazioni mobile. Se hai in mente un progetto che migliori la vita dell’essere umano, quel progetto dovrà essere ottimizzato per il mobile piuttosto che per il web. La verità comunque è che tutte le tecnologie vengono soppiantate prima o poi.
Il cambio di approccio sarà dovuto al mercato o alla tecnologia che avanza?
Entrambe: per via della tecnologia cambia il mercato. Ora non va il web ma il mobile: più del 70% degli utenti di JustEat ordina tramite smartphone. Cambiano i Device e di conseguenza le tecnologie. Tra qualche anno dovrò sicuramente reinventarmi…la tecnologia e il mercato cambiano a livello esponenziale.
Cosa deve fare BitBoss in questo scenario per rimanere al passo con i tempi?
Dipende da come cambieranno il mercato e la tecnologia. BitBoss si evolverà e cambierà per seguire la direzione in cui andrà il mercato. Da un lato il nostro lavoro servirà sempre a qualcosa: BitBoss farà magari formazione in ambito web, che un domani potrà trasformarsi in formazione in ambito informatico.
Se in futuro un software scriverà il mio codice ci sarà sempre qualcuno che dovrà fare manutenzione. Forse BitBoss non farà più software ma farà manutenzione, in ogni caso sono sicuro che si plasmerà insieme alle evoluzioni del futuro. Ma tutte le aziende faranno così, nessuno scomparirà, ma si evolveranno tutte insieme. Quando oggi esce una nuova tecnologia sono in pochi a provarla, ma se sopravvive domani la useranno tutti.
Un consiglio che daresti a qualcuno che si sta avvicinando al mondo della programmazione?
Un po’ per fortuna e un po’ per scelta, il mio percorso formativo è stato piuttosto lineare, per cui gli direi di fare come ho fatto io. Gli consiglierei di affrontare realtà piccole, sbattere la testa il più possibile sui problemi senza cedere all’ansia. Gli direi di imparare il più possibile da tutto e da tutti, ascoltare chi ha più esperienza alle spalle. La caratteristica più importante è la testardaggine, non devi gettare la spugna su un determinato problema, anche se dovessi starci giorni, mesi e non ti devi buttare giù. Anche perché è una grande soddisfazione riuscire alla fine a risolvere un problema che ti ha fatto penare tanto, ti dà la voglia di continuare il giorno dopo.