Codemotion Milan 2023
Il Codemotion è la più grande conferenza tecnica per sviluppatori, la community di codemotion supera oramai le 250.000 persone e questo evento annuale diventa così un momento di aggiornamento e confronto estremamente importante per chi lavora e in generale è appassionato al mondo dell’informatica.
Per questo motivo PC Cube non manca mai all’evento, e anche quest’anno siamo stati presenti a Codemotion Milan 2023.
Sono stati veramente tanti gli argomenti caldi trattati, tra questi vi proponiamo alcuni resoconti di tematiche particolarmente interessanti.
Cominciamo con l’evoluzione dei robot quadrupedi, innovazione tecnologica particolarmente interessante nel settore della sicurezza, medico, agricolo e dell’esplorazione spaziale.
L’intervento di Victor Barasoul è stato particolarmente coinvolgente, concentrandosi sull’agevole implementazione di algoritmi basati sull’intelligenza artificiale. Questo approccio sta rivoluzionando la programmazione dei robot quadrupedi, migliorandone l’efficacia e l’efficienza, e consentendo loro di adattarsi in modo più intelligente all’ambiente circostante.
Questo campo di ricerca sta avendo un impatto significativo in settori come l’ispezione, l’agricoltura e l’esplorazione spaziale, poiché i robot quadrupedi sono sempre più utilizzati in scenari complessi e pericolosi. La programmazione gioca un ruolo fondamentale in queste applicazioni di successo e continua a evolversi con nuove scoperte e innovazioni.
Da evidenziare la presenza del robot HyQReal, un’imponente macchina da 140 kg, che ha dimostrato la sua potenza spostando un aereo di quasi 3 tonnellate in un test di forza presso l’aeroporto di Genova, sottolineando ulteriormente il progresso nell’ingegneria dei robot quadrupedi.
Proseguiamo con Servant Leadership, un momento di riflessione importante sul ruolo del team leader, da questa figura dipende infatti la coesione di un gruppo e il conseguente successo dei progetti gestiti.
Ci preoccupiamo sempre delle tecnologie che sono “di moda” che sono utilizzate attualmente nel mondo tech, ma non ci fermiamo mai a pensare come gestire un team di sviluppatori dal punto di vista del diretto responsabile. Alla fin fine è proprio il gruppo coeso che porta a casa il lavoro e riesce a traguardare progetti irraggiungibili anche in poco tempo.
L’argomento relativo all’adozione di un approccio basato sull’empatia, la fiducia e la collaborazione nei team tecnici è estremamente rilevante e intrigante. Ciò che più mi colpisce è l’idea di trasformare i team tecnici in una forza altamente motivata e creativa attraverso una leadership che ispiri e motivi. La creazione di un ambiente in cui i membri del team si sentono valorizzati e in grado di esprimere appieno il loro potenziale è un obiettivo ambizioso, ma anche fondamentale. Questo aspetto può contribuire a migliorare significativamente l’efficacia e la produttività dei team tecnici, e quindi rappresenta una sfida interessante per i delivery leader e/o team leader. Il concetto di “Servant leadership” suggerisce un approccio che mette in primo piano il benessere e lo sviluppo dei membri del team, anziché l’ego del leader. Questa prospettiva può aprire nuove vie per una leadership più inclusiva ed efficace.
Come si superano i punti deboli dei framework e delle librerie Javascript quando è il momento di sviluppare delle web application?
Oggigiorno la quantità di framework e librerie javascript a disposizione per realizzare web application è enorme, ma quasi tutti soffrono delle stesse debolezze: difficile implementazione della SEO, scarsi risultati in merito ai Core Web Vitals di Google e problemi di performance, soprattutto per quel che riguarda il primo caricamento e visualizzazione del contenuto sullo schermo. Queste debolezze sono dovute principalmente alla grande quantità di codice JavaScript necessario a rendere la pagina HTML e CSS interattiva. I browser renderizzano, sia client-side (CSR) che server-side (SSR), le applicazioni web attraverso il processo di hydration, che si occupa del collegamento degli ascoltatori di eventi, del ripristino dello stato applicativo e della ricostruzione dell’intero albero dei componenti da zero. Ciò che Misko Hevery propone con il framework Qwick è una soluzione a tutto questo, eliminando il processo di hydration e sostituendolo con un nuovo paradigma di rendering chiamato “Resumability”. Esso si riferisce alla possibilità di poter sospendere l’esecuzione sul server e riprenderla sul client senza dover riprodurre o scaricare tutta la logica dell’applicazione. Una web app scritta con Qwick genera puro HTML e CSS e, qualora ci sia un’interazione dell’utente, scarica solo il codice JavaScript necessario allo svolgimento di quella azione. Quindi il framework si basa sul concetto del ritardare il download e l’esecuzione del codice JavaScript più a lungo possibile se non necessario, e lo fa sfruttando il “lazy loading”. In questo modo riesce ad ottenere prestazioni e metriche paragonabili a quelle di un sito statico. Giorgio Boa ha spiegato come questo è realizzato: prefetchando il codice js che potrebbe essere eseguito in base alle interazioni precedenti dell’utente e ai collegamenti tra le varie parti, mantenendolo nella cache, tramite l’utilizzo dei service worker. Quick si propone di essere un framework di rottura con quelli del passato, fornendo all’utente un ecosistema pronto all’uso e improntato fin da subito alle performance e alla dev experience degli sviluppatori che, non dovendo preoccuparsi di molti degli aspetti dell’ottimizzazione del codice, possono mantenere il loro focus su quella che è la logica di business.
I web components potrebbero salvare, metaforicamente, la vita degli sviluppatori, intervenendo in molte situazioni in cui era necessario ricominciare il lavoro da zero.
Forse uno dei talk più interessanti di questo codemotion, incentrato sulla risoluzione di una problematica che moltissime aziende che realizzano applicazioni web utilizzando vari framework e librerie frontend devono affrontare. Accade spesso che per realizzare un progetto sia necessario definire un insieme di componenti di base riutilizzabili e componibili, i quali poi andranno a dar vita a quella che sarà la UI della web app. A volte ci si ritrova a definire un vero e proprio design system di componenti, mentre in altri casi è il cliente a fornirlo al team che dovrà utilizzarlo per lo sviluppo. Ma cosa succede se successivamente bisogna realizzare un progetto gemello, o simile, con lo stesso insieme di componenti base o design system ma utilizzando un diverso framework? O quando si ha un sistema di componenti realizzato con un framework css con una specifica versione, e quello stesso framework rilascia una nuova versione non retrocompatibile e per cui quei componenti non sono più utilizzabili? Oppure quando è lo stesso framework Frontend utilizzato ad aggiornarsi con una nuova interfaccia API e quella utilizzata precedentemente è deprecata? Questi sono tutti scenari reali che possono presentarsi durante lo sviluppo web. Ciò che nella maggior parte dei casi si fa è rifare tutto quanto da zero. L’argomento trattato nel talk da Massimo Artizzu è focalizzato sul presentare una soluzione a questi problemi: i web components. I web components sono un insieme di standard W3C per la creazione di componenti HTML riutilizzabili. In sostanza si tratta di un insieme di API della piattaforma Web nativa che tramite l’utilizzo di HTML CSS e JavaScript consentono di creare tag html personalizzati, riutilizzabili e incapsulati per le app web, basandosi su standard stabiliti. Ciò che si ottiene è una libreria di componenti riutilizzabili, adattabili a qualsiasi framework JavaScript, anche se basato sul Server Side Rendering. Durante il talk è stato mostrato come è possibile realizzarli, quali problemi di compatibilità esistono oggi con alcuni browser, che comunque possono essere risolti tramite vari polyfill in attesa che essi si adattino ai web components, lavorando già in questa direzione. Credo che i web components se ben utilizzati, possano rappresentare un’ottima soluzione per le aziende che utilizzano diversi framework JavaScript e vogliono mantenere un aspetto coerente su varie web app.