TECH | 15 Feb 2018

Data Science da ingegnerizzare

Come si è già evoluto in così poco tempo il ruolo del Data Scientist

Con l’esplosione dei Big Data, la Data Science ha trovato nuova linfa e nuovi ambiti di applicazione. Una tecnica che fino a poco tempo fa era identificata con il termine “Data Mining”, ora acquisisce una validità più ampia, operando su moli di dati sempre più generose e anche su dati non strutturati, quali testi, video, immagini e file audio. Tale cambiamento ha richiesto l’intervento di piattaforme distribuite, preposte a contenere, archiviare e consentire l’elaborazione di tali informazioni su larga scala.

Se, da un lato, l’approccio esplorativo volto alla comprensione del dato ai fini analitici è rimasto invariato, dall’altro l’utilizzo di ambienti sempre più articolati, costituiti da tecnologie eterogenee e innovative, ne ha aumentato la complessità.

Come lavorano i Data Scientist?

In tale contesto, al fine di interagire con Hadoop o più in generale con ambienti Big Data, il Data Scientist è chiamato oggi a utilizzare strumenti ad-hoc che consentono di effettuare indagini e filtri con operazioni distribuite. Sono molte, infatti, le applicazioni messe a punto dai vendor per agevolare questo approccio euristico, basti pensare ai vari Notebook o ancora agli strumenti di Data Discovery e Data Wrangling, a supporto rispettivamente dell’acquisizione-aggregazione e della pulizia dei dati. Terminata quindi la fase investigativa, il processo esplorativo deve essere tradotto in codice eseguibile e riproducibile, tramite la definizione di una pipeline elaborativa che consenta di portare a termine il processo analitico.

Laddove i linguaggi R e Python non sono più sufficienti, i Data Scientist sfruttano altri paradigmi di computazione su Hadoop (come Spark, MapReduce, H2O), che mettono a disposizione librerie e algoritmi di Machine Learning per elaborare dataset di grosse dimensioni sfruttando le capacità del cluster, ma che richiedono una buona conoscenza della piattaforma tecnologica e skill di programmazione specifici. Tali competenze sono quelle ritagliate per il ruolo del Data Engineer che tratta una varietà di linguaggi e conosce a fondo l’ecosistema Hadoop, garantendo flussi elaborativi ottimizzati e performanti.

Il Data Scientist davvero così sexy?

In effetti, appena nato, quando l’Harvard Business Review lo aveva definito il ruolo più sexy del ventunesimo secolo, il Data Scientist era una figura mitologica: l’unicorno informatico che riusciva a perpetrare azioni che andavano dal Machine Learning alla programmazione (distribuita e non), alla realizzazione d’interfacce grafiche accattivanti, fino alla profonda conoscenza delle piattaforme Big Data e dei loro strumenti. Dopo la disillusione (alquanto prevedibile), le diverse competenze sono state attribuite a ruoli distinti, tenuti tuttavia a comprendersi e supportarsi vicendevolmente in un circolo virtuoso di collaborazione.

Da quando i progetti di Machine Learning e Advanced Analytics sono diventati una necessità per molte aziende, che ne hanno compresi i vantaggi competitivi ma anche le intrinseche difficoltà, l’organizzazione del lavoro è diventata un tema all’attenzione dei team leader e dei project manager.

In quanto a competenze e responsabilità, esiste una significativa sovrapposizione tra ingegneri dei dati e scienziati dei dati, pur differenziandosi nell’obiettivo che perseguono. Infatti, se i Data Engineer costruiscono infrastrutture e architetture a supporto della generazione d’informazioni, gli scienziati dei dati si concentrano su matematica avanzata e analisi statistica su tali dati generati. Fino a che punto può spingersi l’ingegnere dei dati nel raffinamento e tuning (ottimizzazione) del codice analitico senza inficiarne le funzionalità, così come quali competenze informatiche sono requisito minimo per un Data Scientist?

Data Engineer vs Data Scientist

La questione relativa alla coesistenza di background così differenti è tuttora oggetto di dibattito: ingegnerizzare la Data Science è un problema non banale di cui si stanno facendo carico anche le più importanti web company all’avanguardia in ambito Big Data. Il problema non è da intendersi solo in termini di team mix e collaborazione efficace, ma anche in termini metodologici: come pianificare e gestire un progetto che si basa su processi di validazione iterativi che possano prevedere insuccessi e riadattamenti continui, nel contesto IT laddove deadline e metodi di sviluppo sono ben consolidati?

Le differenze fisiologiche tra la progettazione di un software (come lo sviluppo di un’applicazione Java, un processo ETL o di un job Spark su Hadoop) e un progetto con finalità analitiche su dati non certificati (spesso provenienti da sorgenti esterne come i social network, open data o raccolti mediante web crawling), non sono palesi in fase di stima degli sviluppi.

L’insidia si annida nel dato stesso, potenzialmente incompleto, sporco e insufficiente a completare l’analisi. Secondo molti recenti sondaggi di settore, come il CrowdFlower – 2016 Data Science Report, si evince che la quota di attività legate alla pulizia e pre-processing del dato o, in termini più noti, alla “data preparation” si attesta intorno all’80% sul totale. L’ammontare di tempo dedicato a queste operazioni che non danno un risultato di immediato all’occhio del PM o del cliente stesso, ma che garantiscono l’oggettività e imparzialità dell’algoritmo, può essere percepito come un preoccupante segnale d’inconcludenza o lentezza. Il successo delle analisi non è scontato, proprio per le motivazioni già citate legate ai dati utilizzati così come l’accuratezza dell’algoritmo potrebbe essere disattesa e tutto ciò è difficilmente riconducibile a logiche di gestione di progetto conclamate.

Fail fast è meglio

La sfida legata all’esercibilità delle soluzioni messe a punto dalla scienza dei dati, in concomitanza con scenari tecnologicamente impegnativi, è ancora aperta. Si tratta di un approccio incrementale, basato sull’esperienza. Il motto “fail fast”, ovvero fallisci velocemente per apprendere e migliorare altrettanto velocemente, è molto calzante in questo contesto: è bene affrontare fin da subito il tema dell’ingegnerizzazione del codice e delle metodologie di sviluppo applicabili, partendo da piccoli progetti sviluppati da gruppi di lavoro misti e multidisciplinari, al fine di comprendere come raggiungere il miglior risultato tramite il continuo perfezionamento.

Monica Franceschini