Proseguiamo in questo articolo la serie di interviste finalizzata all’approfondimento di alcune tematiche inerenti il settore dell’informatica, del software e di tutto quello che ci gira intorno con gli argomenti Javascript, Angular e React.
Abbiamo il piacere oggi di parlare dell’evoluzione che il front-end ha avuto negli ultimi 10 anni con Fabio Biondi, GOOGLE DEVELOPER EXPERT e MVP MICROSOFT, che abbiamo avuto il piacere di avere come ospite nel corso del 2018 come relatore ad un evento di live coding dedicato ad Angular (Evento Angular Plansoft) in collaborazione con l’Università di Firenze.
Fabio Biondi ci ha raccontato un po’ di sé, della sua attività di formatore e consulente in ambito front-end e dei futuri sviluppi del mercato. Ci ha infine anticipato una succosa novità, di cui parleremo meglio alla fine dell’articolo!
Parlaci un po’ di te e del tuo percorso lavorativo
Ho iniziato la mia esperienza di lavoro nel settore nel lontano 1999, quando aprii un negozio di informatica che lasciai solamente nel 2003. Da allora ricominciai praticamente da zero.
Prima trovai lavoro come web developer: mi occupavo di realizzare layout in Photoshop, sviluppare HTML e CSS, un po’ di PHP/mySQL e in ogni sito aggiungevo animazioni e parti interattive in Flash. Con uno degli ex soci del negozio decidemmo di fondare successivamente una nostra società, Elastech, con la quale per diversi anni abbiamo sviluppato portali, e-commerce, siti Flash e applicazioni di vario genere per aziende locali.
Nel 2010 mi sono infine deciso a lavorare da solo e ho aperto la partita IVA come libero professionista.
Da allora ho iniziato a collaborare con moltissime software house e web agency, ottenendo nel frattempo una quindicina di certificazioni Adobe Expert e Adobe Instructor, moderando diversi forum Flash e Flex e aprendo successivamente diverse community su Angular, React e JavaScript, che ancora sopravvivono floride, soprattutto su Facebook.
Con la fine del Flash Player nel 2012, ho deciso di prendere la strada del front end, da vero appassionato di UI e UX dinamiche.
La mia conoscenza di HTML era limitata alle tabelle e riguardo JS sapevo a mala pena creare un paio di script. Ho iniziato quindi a studiare contemporaneamente le basi di HTML, CSS e a focalizzarmi soprattutto su JavaScript / jQuery.
Da expert del mondo Adobe ero diventato un super newbie del web.
Dopo un periodo di adattamento e nuovi studi, iniziarono a nascere i primi framework JavaScript, tra i quali AngularJS, Ember e Backbone. Scelsi il primo, perché il più simile ad Adobe Flex, una tecnologia Adobe che, all’epoca, utilizzavo quasi quotidianamente, e fu subito amore a prima vista!
Ho acquistato poi decine di libri, video tutorial e molto altro, ma soprattutto studiavo e sperimentavo tantissimo. Mi sentivo in fondo ancora un principiante, la sindrome dell’impostore aleggiava su di me. Quindi ho continuato a studiare e sperimentare, talvolta a costo di non lavorare (quindi non fatturare) per prendermi dei periodi di pausa allo scopo di incrementare il mio know-how (metodo che tuttora applico per tenermi aggiornato e aggiungere costantemente qualche skill al mio profilo).
Nel 2014, insieme a un collega, abbiamo deciso di studiare React, ES6, WebPack e, poco dopo, di introdurre il pattern Redux. Anche in questo caso è stato amore a prima vista.
Per i primi mesi ho usato sia AngularJS che React ma poi, per circa 2 anni, ho utilizzato esclusivamente React e ho iniziato a migliorare le mie skills come sviluppatore JavaScript.
Nel frattempo, ho partecipato come docente a diversi corsi, collaborando con molte società, tra le quali Codemotion, a cui devo molto perché mi ha dato modo di crescere come docente.
Nel 2016 nasce Angular e inizio ad adottare Typescript. Da allora ho approfondito molte tematiche come la programmazione reattiva con RxJS e gli state manager come Angular Redux, inizialmente, e poi NGRX. Grazie agli eventi che organizzo costantemente, alle community che gestisco, ai video tutorial e agli articoli che pubblico, mi occupo ad oggi quasi esclusivamente di formazione.
Angular, React, Redux: su quali progetti stai attualmente lavorando?
Al momento ho attivi molteplici corsi (per i dettagli: https://formazione.fabiobiondi.io/ ) su Angular, React, Javascript ES6, Redux, RXJS e NGRX, che erogo principalmente in aziende di piccole e grandi dimensioni. A Febbraio 2019 ho realizzato anche un video-corso Angular, che parte dalle basi fino alle best practices (in italiano: https://angularfundamentals.com/) composto da circa 200 video su Javascript ES6, Typescript & Angular.
Organizzo e partecipo anche a diverse dirette live, in cui parlo di sviluppo front-end, principalmente JavaScript (quindi Angular, React, NGRX, RxJS, Typescript, web components, metodologie e best practices), ma anche di Azure, deploy e altre tematiche che riguardano comunque il nostro lavoro.
Mi occupo anche di code review, mentoring e consulenza personalizzata, per non limitare l’attività e la conoscenza ad argomenti puramente accademici.
In questa particolare fase di emergenza sanitaria dovuta all’epidemia di Coronavirus, tutta l’attività è stata ovviamente rivoluzionata: i corsi programmati sono stati trasformati quasi tutti in formazione da remoto, dunque senza la necessità di un rapporto diretto in aula. Devo dire che pochissimi hanno preferito aspettare il momento di tornare live, anche se per adesso questo significherà molto probabilmente aspettare almeno gennaio 2021; non credo che prima di quella data sarà possibile, e soprattutto conveniente in termini di partecipazione e interesse, organizzare dei corsi in aula.
La formazione da remoto si è rivelata una buona alternativa in questo momento. Certamente il grado di interazione è minore rispetto alle lezioni frontali, ma ad essere del tutto sinceri, in questo periodo così particolare, il nostro settore (sia la formazione che la consulenza software) è riuscito a superare meglio di altri le difficoltà.
Oltretutto ho integrato dei nuovi strumenti per aumentare il coinvolgimento degli studenti durante le lezioni: ovviamente diverse piattaforme di e-learning ma soprattutto quiz con sfide in tempo reale per metterli in competizione tra loro e valutare il grado di apprendimento, strumenti per il pair programming, utilizzo IPad e Pencil al posto della lavagna e ho creato diverse esercitazioni da poter svolgere durante e dopo il termine del corso.
Nell’ultimo periodo ci sono stati, inoltre, alcuni cambiamenti nelle materie che sto approfondendo. Mi sono infatti avvicinato anche al mondo Microsoft, sia per seguire nuove ispirazioni e materie da studiare, sia perché ho avuto la necessità, per motivi lavorativi, di dovermi interfacciare con questo mondo, fino ad allora poco conosciuto.
Sto approfondendo in particolare l’utilizzo di JavaScript all’interno di prodotti Microsoft, quindi con le API di Office 365 e la loro integrazione in Single Page Application sviluppate in Angular, creazione Office Add-In in React, integrazione in Microsoft Teams, utilizzo Fluent UI e molto altro.
Altri campi sui quali mi sto muovendo sono il Machine Learning e i vari servizi forniti da Microsoft Azure: computer vision, analisi di testi, video e immagini, Bot, Q&A, traduzioni, solo per citarne alcuni.
Il potenziale di questi strumenti è davvero altissimo e la loro integrazione nei processi aziendali può portare enormi benefici. Un altro argomento che sto studiando, dopo aver passato diverso tempo a “giocare” con Arduino, è lo sviluppo in JavaScript nei prodotti Lego Mastermind Education. Penso sia un modo davvero fantastico per avvicinare i ragazzi al mondo della programmazione e della robotica, divertendosi e dando ampio spazio alla propria creatività.
Non so ancora se diventerà parte del mio lavoro ma per il momento sto studiando e mi sto divertendo.
Last but not least, ci tengo particolarmente ad anticipare anche un progetto sul quale sto lavorando insieme ad un collega e che, in realtà, non so ancora se partirà concretamente: si tratterà di una sorta di scuola di specializzazione destinata alla formazione di professionisti in vari campi e tecnologie. A seconda della specializzazione: Angular, React, Node, Flutter e così via, il tutto in collaborazione con aziende del settore, piccole e grandi.
Ma di questo ve ne parlo meglio alla fine!
Perché il cambio di tecnologie?
Come ti anticipavo prima, ho deciso di approfondire anche il mondo Microsoft e le altre materie per alcune richieste di lavoro ricevute dai clienti. In tanti mi chiedevano di sviluppare Office Add-in, di utilizzare React in PowerApps e in Dynamics 365 o di integrare API Microsoft all’interno di SPA, così mi sono detto che sarebbe stato molto utile studiare questi aspetti, fortemente sentiti sia dalle piccole che dalle medie/grandi aziende.
Nel frattempo, durante questo percorso di studio, ho scoperto tutta una serie di funzionalità di cui mi sto letteralmente innamorando, dai servizi cognitivi alla miriade di prodotti Azure, di cui ignoravo quasi totalmente l’esistenza.
Tuttavia, c’è anche una seconda motivazione.
Fino a qualche tempo fa avevo scelto di specializzarmi sullo sviluppo front-end perché preferivo conoscere meno argomenti ma essere ritenuto un esperto in quello che facevo. Tuttavia, quando sviluppo o studio il tempo mi vola, sono felice, adoro quello che faccio e quando ottengo un risultato o risolvo un problema complesso sento dentro di me una soddisfazione e un appagamento difficile da descrivere. Proprio il gusto di studiare e di scoprire cose nuove mi ha spinto così ad affrontare queste nuove sfide.
Come sviluppatori, infatti, la maggior parte del tempo della nostra vita la passiamo davanti al PC e credo sia fondamentale trovare la quadra per essere felici, e io attualmente lo sono.
Gli aspetti fondamentali per ottenere questo traguardo secondo me sono due:
1) Avere tanta passione per il lavoro che stai facendo. Tuttavia, non è una skill che si può acquisire a posteriori. Devi amare la programmazione, il problem solving e studiare nuovi argomenti. Non dev’essere un impegno ma una gioia.
2) Fare sempre quello che ti piace, traguardo che da sempre ho cercato di raggiungere. Difficilmente la sera riesco a staccarmi dal PC, studiando e lavorando spesso fino tarda notte. E non perché sono obbligato! Molti pensano non sia facile vivere facendo sempre quello che ami, ma più sei esperto in una materia e più diventerai una risorsa preziosa per team e aziende.
Com’è la preparazione universitaria in materia che trovi nei corsisti?
Purtroppo, devo dire che non è altissima. Nel nostro campo le facoltà di riferimento sono quelle di Informatica o Ingegneria Informatica, ma specie in questo secondo caso mi capita spesso di constatare che i neolaureati sono più degli ingegneri che degli informatici.
La base di preparazione è buona, ma senza una personale attitudine e passione per la materia la conoscenza finisce per essere solamente accademica e nozionistica.
Credo che, almeno per quanto riguarda le competenze richieste dalle aziende ai fini di un’assunzione lavorativa, siano più interessanti le facoltà di matematica, fisica e statistica. Pensiamo ad esempio ai nuovi campi di sviluppo e ricerca del Machine Learning, del Deep Learning e dell’Intelligenza Artificiale: la preparazione offerta ai nuovi statistici o matematici è in tal senso molto più approfondita, accompagnata in ogni caso anche da una buona conoscenza delle basi dell’informatica.
Per un’azienda che vuole assumere giovani, meglio cercare tra i laureati oppure tra i diplomati?
Paradossalmente i più bravi con cui lavoro non sono laureati! Magari si tratta solamente di un caso, oppure è una questione di età, non saprei.
Le basi dei diplomati sono ovviamente inferiori, soprattutto se confrontate con le facoltà di Informatica, Fisica o Matematica. Ma come dicevo prima l’aspetto più importante, almeno per esperienza personale, credo sia quello della passione e dell’interesse individuale per le materie.
In definitiva, considerando anche la velocità con la quale evolvono le tecnologie al giorno d’oggi, in molti casi potrebbe risultare più idoneo per un’azienda un giovanissimo diplomato piuttosto che un laureato.
Per quanto riguarda invece la partecipazione ai miei corsi, la cosa più importante è che si sappia programmare. Non è necessario essere degli esperti, ma almeno le basi è indispensabile conoscerle. Qualche esperienza professionale infine, anche minima, non guasterebbe.
Cosa ne pensi della situazione italiana rispetto all’estero?
Secondo il mio parere meglio di quanto si creda.
Sembra che l’estero sia l’oasi felice in cui tutti hanno una retribuzione più alta e che si sviluppi un codice di altissima qualità. Tuttavia, anche in Italia ci sono realtà interessanti e programmatori davvero capaci e competenti.
Purtroppo, ci scontriamo con una tassazione e una burocrazia assurda, quindi creare una startup e mantenere in vita un’azienda non è facile. Di conseguenza molti sviluppatori e società IT si sono spostati all’estero, lasciando in tal modo ampio spazio a chi rimane. E questa, per le aziende ma soprattutto per gli sviluppatori rimasti nella nostra amata patria, è un’occasione ghiotta per emergere e creare opportunità interessanti, o almeno io la vedo così
Ma non ci sono trucchi o scorciatoie: è necessario studiare, sperimentare, innovare e mettersi in gioco.
Cosa pensi dello Smart Working e come è cambiato il tuo lavoro a seguito dell’emergenza Coronavirus?
Come ti dicevo prima, il cambiamento più grosso è stata la necessità di spostare quasi tutti i corsi in programma da live a remoto. Ovviamente questo ha portato qualche svantaggio in termini di interazione con i corsisti e di scambio diretto di informazioni, ma a parte questo credo che il settore dell’informatica sia stato tra quelli che ha attutito meglio il colpo.
Nella formazione a distanza ho notato inoltre che anche le domande dei partecipanti sono in numero inferiore rispetto al live. Dal vivo puoi coinvolgere sicuramente di più gli studenti, puoi guardarli in viso, farli ridere e, sembrerà una stupidaggine, anche la pausa caffè e il pranzo insieme a loro sono un momento importante: spesso emergono le domande più interessanti e si crea una certa confidenza ed empatia, che agevola non poco il prosieguo delle lezioni.
Per risolvere questo problema ho introdotto, come accennato in precedenza, nuovi strumenti per le attività di didattica ma l’esperienza dello studente rimane comunque differente rispetto a quella in aula.
In questo periodo in cui gli eventi dal vivo sono stati spostati, ho organizzato diverse live gratuite per i canali social che gestisco (che ormai contano più di 25.000 membri tra Facebook e LinkedIn).
Sto inoltre pubblicando molti video sul mio canale YouTube, in cui ovviamente parlo di programmazione ma soprattutto di codice con sessioni di live-coding individuali, pair programming e invitando colleghi ed esperti a rispondere alle domande dei partecipanti.
Questo mi permette di non perdere il contatto con gli amici che ormai ho in tutta Italia e, allo stesso tempo, di fornire supporto e trasferire il mio know-how ai membri delle community.
Per finire, ci puoi dire finalmente in cosa consiste il progetto formativo che accennavi all’inizio dell’intervista?
Premetto che in questo momento il progetto è totalmente Work In Progress ma sostanzialmente stiamo cercando di trovare una soluzione al problema più grande del millennio: trovare sviluppatori da assumere e possibilmente che siano preparati.
Quindi, io e il mio collega e amico Michele Stieven, stiamo pensando di realizzare dei percorsi di studio verticali su diverse tematiche (inizialmente Front-End) che avranno una durata di diverse settimane allo scopo di preparare neodiplomati/laureati e professionisti, rendendoli produttivi ed efficienti in brevissimo tempo.
Al momento non posso dirti di più. Stiamo ancora lavorando sui programmi, studio di fattibilità, cercando partner e verificando se ci sono le condizioni per mettere in piedi questa idea.
Informazioni su Fabio Biondi
Si avvicina al mondo dell’informatica e della programmazione già nel 1997, a 10 anni, quando riceve per regalo uno ZX Spectrum 48K. Inizia così ad esplorare il Basic e successivamente C, Cobol e i primi linguaggi di programmazione all’Istituto tecnico commerciale con indirizzo perito programmatore.
Nel 1999 apre un suo negozio di computer e inizia a sviluppare siti web principalmente in Flash e PHP, ottenendo la prima certificazione come Macromedia Flash MX Expert nel 2004.
Preso dall’entusiasmo lascia l’attività e durante gli anni si fa assumere come sviluppatore da società molto diverse tra loro, maturando esperienza e un portfolio molto ampio. In quegli anni sviluppa, infatti, centinaia di siti web e applicazioni in ambito Bancario, Educational, Farmaceutico, Smart City, Marketing, Piattaforme di E-Learning, Totem touchscreen per aeroporti / ferrovie e diverse applicazioni mobile per famosissimi brand e aziende di livello nazionale e internazionale.
Nel 2010 inizia l’attività in proprio come libero professionista e collabora con decine di web agency e software house, focalizzandosi totalmente nello sviluppo front-end. Dopo un intero anno di sviluppo in JavaScript, jQuery, HTML Canvas e D3.js, continua da allora ad approfondire AngularJS, Ionic, ES6 e successivamente React, Redux, Angular e in generale lo sviluppo web con particolare focus sul front-end
Nel 2018 ottiene il riconoscimento di Google Developer Expert in web technologies and Angular e successivamente, nel 2019, quello di Microsoft MVP.
Speaker in numerosi eventi nazionali, ha inoltre fondato diverse community italiane che si occupano di Javascript, Angular e React (circa 20.000 membri).
Attualmente si occupa di formazione frontend – Javascript, Typescript, Angular, React, Redux, NGRX e RxJS.