Una chiacchierata con:Matteo Papi, Front-end developer

Author:
Kode s.r.l.
Date:
31.10.2023
Topic:
News

 

Il mondo della data science sfrutta competenze del mondo informatico già ampiamente utilizzate e note nella loro applicazione in altri ambiti e che nel nostro settore cambiano volto. Ma se una buona visualizzazione dei dati è la chiave per rendere le analisi dati concretamente utili, quante le complessità di cui un front-end developer  deve farsi carico nel mondo dei Big Data? Ne parliamo oggi con il nostro Matteo Papi.

Matteo Papi
Matteo Papi

Matteo in cosa consiste il tuo lavoro da front end developer?

Il front-end developer è una figura tendenzialmente con un background informatico che si occupa dello sviluppo client-side di applicazioni con le quali un utente può interagire: si parla indicativamente di siti web, gestionali, applicazioni per cellulari o dashboard. In sostanza il front-end developer ha la responsabilità di rendere un’applicazione facile da utilizzare e fruibile su tutti i device (browser e sistemi operativi).

Qui in Kode sviluppo applicazioni per rappresentare al meglio la conoscenza estratta dai big data: in questo settore strumenti e tecnologie di visualizzazione dati sono indispensabili per analizzare enormi quantità di informazioni e prendere decisioni basate sui dati stessi.

L’obiettivo, soprattutto in ambito aziendale, è quello di rendere immediate e tangibili le informazioni estratte anche a un pubblico non necessariamente tecnico (manager o  C-Level). Un cruscotto di visualizzazione dati deve fornire una visione di alto livello delle metriche più importanti combinando numeri, grafici, diagrammi, tabelle e altri elementi grafici con il fine di individuare tempestivamente i problemi, prendere rapidamente decisioni e misurare eventuali progressi nel tempo.

L’analisi dati è una branca della data science meravigliosa, ma se non è accompagnata da strumenti che consentono di capire quello che veramente i dati ci stanno raccontando, non serve a niente.

Quanto ho detto fino ad adesso può portare a pensare che serva necessariamente una formazione da data scientist: in parte è vero anche se le mie competenze sono più orientate verso il mondo dello sviluppo software.

Allora quale è stato il percorso che ti ha portato fin qui?

Ho seguito un percorso piuttosto articolato: fare scuole superiori come il liceo scientifico sembra ti renda pronto solo per studiare ed in realtà questo è vero solo se riesci in seguito a trovare delle materie che ti veramente ti appassionano.

Sono passato poi da Ingegneria delle Telecomunicazioni per completare il mio percorso ad Informatica Umanistica, dove ho scoperto la mia passione sia per lo sviluppo informatico che per i dati. Durante il mio percorso universitario ho approfondito tutti gli aspetti che riguardano lo sviluppo di soluzioni web-based che in qualche modo permettevano di fruire e visualizzare dati.

Erano però nozioni teoriche e in alcuni casi molto distanti da un contesto reale affrontato poi con la mia prima esperienza lavorativa in una web agency a Lucca.Qua ho approfondito e verticalizzato le mie competenze su linguaggi di programmazione come JS e PHP; sviluppato siti e gestionali con CMS opensource (WordPress, Typo3, Magento); sviluppato applicazioni mobile con framework ad hoc (Ionic); approfondito le mie competenze con i principali database (MySQL, PostgreSQL e MongoDB).Era una tipologia di lavoro estremamente meccanico e per certi versi ripetitivo in molti passaggi: la pipeline di sviluppo era quasi sempre la stessa per molti dei progetti che ho affrontato. Durante questi anni ho cercato di non lasciare indietro la mia passione per il mondo dei dati, curando e sviluppando soluzioni legate ad uno strumento come Google Analytics, software che se configurato correttamente, è in grado di raccogliere i dati di traffico generato da un sito web.

Nel 2018 la mia strada ha incrociato quella di Kode dove fin da subito ho affrontato una serie di tematiche che già ai tempi dell’università mi avevano incuriosito ed appassionato: la gestione e la visualizzazione dei Big Data. L’aspetto che rende ancora più interessante questo tipo di lavoro è la natura di provenienza dei dati: impianti industriali, sensori IoT, dispositivi wearable, dati logistici.

In questa nuova esperienza lavorativa, anche se avevo già una solida competenza nello sviluppo web, ho dovuto verticalizzare la mie competenze su nuovi framework (React, React Native) e software opensource (NodeJS, Docker, Jenkins) utili per sviluppare soluzioni che permettono di visualizzare qualsiasi tipologia di dato nel miglior modo possibile.

Nel 2023 può sembrare incredibile ma alcune aziende non sanno quanto e che tipologia di dati sono in grado di raccogliere: per questi motivi strumenti di analisi e visualizzazione, ben fatti, non sono utili ma fondamentali.

Hai parlato di verticalità delle competenze, qual è la differenza dello sviluppo front-end per la Data Science?

Come ho già detto in parte il mondo dello sviluppo front-end è molto ampio e variegato. Metodologia di lavoro, strumenti e framework cambiano soprattutto in funzione del prodotto da sviluppare: un’applicazione per cellulare è molto diversa da un sito web che a sua volta è molto diverso da un gestionale.

Nel mondo della data science, dopo aver compreso la necessità del cliente (anche se molto spesso ci viene chiesto di effettuare delle esplorazioni per capire cosa può essere sviluppato), il primo scalino da affrontare riguarda ovviamente aspetti legati ai dati: volume, tipologia  e data source nella quale sono salvati. Tendenzialmente sono informazioni aziendali disponibili esclusivamente nella rete del cliente, raggiungibile solo tramite VPN (Virtual Private Network). Lo sviluppo di una nostra soluzione deve necessariamente tenere di conto di questo aspetto fondamentale.

Stabilita la natura dei dati lo sviluppo di una nostra applicazione deve tenere conto delle elaborazioni anche onerose per recuperare ed elaborare le informazioni: una gestione ottimale dello stato dell’applicazione e delle chiamate ai servizi di back-end sono aspetti fondamentali per rendere usabile una soluzione.

I rilasci dei vari servizi che compongono un’applicazione più o meno complessa devono tenere conto del fatto che spesso il deploy finale deve essere fatto sul server del cliente: questo significa concordare preventivamente le risorse hardware della macchina su cui verrà installata l’applicazione.

Prima del rilascio finale i servizi devono essere testati accuratamente con l’obiettivo di prevenire eventuali bug, ridurre i costi di sviluppo e migliorare le prestazioni del software.

Per concludere, nello sviluppo front-end, sia la grafica sia i moduli ed i componenti che sono alla base della UI sono costruiti e pensati internamente in Kode (framework Princess) con l’obiettivo di creare soluzioni riconoscibili e con una forte identità visiva.

Vuoi spiegarci meglio la complessità insita nel fatto che le nostre soluzioni devono fare una “chiamata ai dati”?

Prima di essere rappresentati in un grafico o in una tabella i dati devono essere “recuperati ” da un software di storage che può essere un database relazionale o non relazionale, un database a grafo o documentale e simili.

Operazioni come il recupero e la manipolazione dei dati, il caricamento e l’esecuzione di un modello di AI sono tendenzialmente implementate all’interno di un servizio di back-end, modulo che si interpone tra interfaccia e datasource.

Provo a semplificare il più possibile il flusso di funzionamento che è concettualmente semplice: lato UI un utente esegue un’azione che a sua volta genera una chiamata ad un servizio di back-end il quale recupera ed elabora i dati per ritornare le informazioni nuovamente alla UI. È un processo circolare che ha origine e fine in una interfaccia ed avviene tramite chiamate che si basano su protocollo HTTP passando dati in formato JSON.

In linea di massima la manipolazione di grandi quantità di dati avviene sempre a livello di back-end in modo da eseguire operazioni complesse lato server evitando di sovraccaricare il client.

Alcune elaborazioni si possono fare anche lato front-end: ordinare, filtrare e mappare i dati, eseguire funzionalità statistiche (medie, somme etc.) e piccole operazioni computazionalmente non onerose.

Nella mia concezione di sviluppo software però è sempre meglio distinguere i servizi di front-end da quelli di back-end in maniera netta fin dalla prototipazione della soluzione. Le due entità non si devono mai sovrapporre in modo da mirare e rendere più preciso e specifico lo sviluppo di ciascun servizio.

Alcuni aspetti di questo lavoro sembrano essere generalizzabili per ogni progetto, cosa rende questo lavoro meno ripetitivo di altri?

L’aspetto che più mi affascina ed entusiasma del lavorare in Kode è la diversità dei progetti con i quali quotidianamente ci misuriamo: c’è chi vuole recuperare da un video girato durante un percorso stradale i cartelli incontrati per costruire un catasto dei segnali; chi vuole fare manutenzione predittiva degli impianti; chi ottimizzare la logistica last-mile; chi vuole recuperare e visualizzare in tempo reale le informazioni provenienti da dispositivi wearable.

Ogni progetto ha sfide differenti che devono essere risolte utilizzando gli strumenti che abbiamo a disposizione. In quest’ottica la metodologia e l’approccio allo sviluppo diventa fondamentale per offrire soluzioni modulari in grado di abbattere i tempi di sviluppo, di aggiornamento e di manutenzione.

Questa modo di concepire il lavoro caratterizza tutto il team di sviluppatori di Kode: il fine condiviso è quello di creare strumenti e processi che mirano ad abbattere le ripetizioni standardizzando il più possibile le nostre soluzioni in modo da concentrare gli sforzi su sviluppi custom.

Da anni stiamo lavorando allo sviluppo di un framework proprietario (già citato precedentemente, Princess) che come una scatola di attrezzi ci permette di implementare soluzioni ottimizzando i tempi di rilascio dei vari servizi.

Lato front-end il Princess UI Toolkit che stiamo sviluppando è composto da una serie di moduli per visualizzare dati ed una serie di servizi per manipolarli. Il toolkit cresce in relazione ai progetti che entrano in Kode: ogni lavoro può portare potenzialmente delle nuove features che si vanno ad aggiungere o ad integrare a quelle già esistenti.

Su Princess poi potrei dire molto di più, ma forse è meglio se gli dedichiamo una chiacchierata a parte.

Contact form

Thank you for your message