Chi sono gli ingegneri dei dati e come si diventa tali?

E di nuovo buongiorno! Il titolo dell'articolo parla da sé. In previsione dell'inizio del corso «Data Engineer» proponiamo di capire chi siano davvero gli ingegneri dei dati. L'articolo contiene molti link utili. Buona lettura.

Chi sono gli ingegneri dei dati e come si diventa tali?

Una guida semplice su come cavalcare l'onda dell'ingegneria dei dati e non lasciarsi trascinare nell'abisso.

Sembra che oggigiorno tutti vogliano diventare scienziati dei dati (Data Scientist). Ma che dire dell'ingegneria dei dati? In sostanza, si tratta di una sorta di ibrido tra analista di dati e scienziato dei dati; l'ingegnere dei dati è solitamente responsabile della gestione dei flussi di lavoro, dei pipeline di elaborazione e dei processi ETL.Data l'importanza di queste funzioni, al momento è un altro gergo professionale molto popolare che sta guadagnando terreno.

Un alto stipendio e una grande domanda sono solo una piccola parte di ciò che rende questo lavoro estremamente attraente! Se desideri unirti ai ranghi degli eroi, non è mai troppo tardi per iniziare a studiare. In questo post ho raccolto tutte le informazioni necessarie per aiutarti a fare i primi passi.

Quindi, iniziamo!

Cos'è l'ingegneria dei dati?

Onestamente, non c'è spiegazione migliore di questa:

"Uno scienziato può scoprire una nuova stella, ma non può crearla. Dovrà chiedere a un ingegnere di farlo per lui."

– Gordon Lindsey Glegg

Pertanto, il ruolo dell'ingegnere dei dati è piuttosto significativo.

Dal nome si evince che l'ingegneria dei dati è legata ai dati, precisamente alla loro consegna, archiviazione e lavorazione. Di conseguenza, il compito principale degli ingegneri è garantire un'infrastruttura dati affidabile. Se osserviamo la gerarchia dei bisogni dell'IA, l'ingegneria dei dati occupa i primi 2-3 livelli: raccolta, spostamento e archiviazione, preparazione dei dati.

Chi sono gli ingegneri dei dati e come si diventa tali?

Cosa fa un ingegnere dei dati?

Con l'emergere dei big data, l'ambito di responsabilità è cambiato radicalmente. Se in passato questi esperti scrivevano grandi query SQL e trasferivano dati utilizzando strumenti come Informatica ETL, Pentaho ETL, Talend, oggi le richieste per gli ingegneri dei dati sono aumentate.

La maggior parte delle aziende con posizioni aperte per ingegneri dei dati richiede i seguenti requisiti:

  • Ottima conoscenza di SQL e Python.
  • Esperienza con piattaforme cloud, in particolare Amazon Web Services.
  • Preferibile conoscenza di Java/Scala.
  • Buona comprensione dei database SQL e NoSQL (modellazione dei dati, archiviazione dei dati).

Tieni presente che questo è solo il necessario. Da questa lista si può dedurre che gli ingegneri dei dati sono specialisti nello sviluppo software e nel backend.
Ad esempio, se un'azienda inizia a generare un grande volume di dati da diverse fonti, il tuo compito come ingegnere dei dati è organizzare la raccolta delle informazioni, il loro trattamento e la loro archiviazione.

La lista degli strumenti utilizzati in questo caso può variare, tutto dipende dal volume di questi dati, dalla velocità con cui arrivano e dalla loro eterogeneità. La maggior parte delle aziende non affronta affatto grandi dati, quindi come magazzino centralizzato, il cosiddetto data warehouse, è possibile utilizzare un database SQL (PostgreSQL, MySQL, ecc.) con un insieme ridotto di script che indirizzano i dati verso il magazzino.

I giganti IT come Google, Amazon, Facebook o Dropbox hanno requisiti più elevati: conoscenza di Python, Java o Scala.

  • Esperienza con grandi dati: Hadoop, Spark, Kafka.
  • Conoscenza di algoritmi e strutture dati.
  • Comprensione delle basi dei sistemi distribuiti.
  • L'esperienza con strumenti di visualizzazione dei dati, come Tableau o ElasticSearch, sarà un grande vantaggio.

Si osserva quindi un chiaro spostamento verso i grandi dati, in particolare nel loro trattamento sotto carichi elevati. Queste aziende hanno requisiti elevati per la resilienza del sistema.

Ingegneri dei dati vs. scienziati dei dati

Chi sono gli ingegneri dei dati e come si diventa tali?
Va bene, è stata una semplice e divertente comparazione (niente di personale), ma in realtà le cose sono molto più complesse.

Prima di tutto, devi sapere che c'è una certa confusione nella delimitazione dei ruoli e delle competenze tra scienziato dei dati e ingegnere dei dati. Vale a dire, puoi facilmente essere confuso riguardo a quali competenze siano necessarie per essere un ingegnere dei dati di successo. Certo, ci sono alcune competenze che si sovrappongono tra i due ruoli. Ma ci sono anche una serie di competenze diametralmente opposte.

La scienza dei dati è una questione seria, ma ci stiamo muovendo verso un mondo di data science funzionale, dove i praticanti sono in grado di effettuare la propria analisi. Per attivare pipeline di dati e strutture dati integrate, ti servono ingegneri dei dati, non scienziati.

È un data engineer più richiesto di un data scientist?

— Sì, perché prima di poter preparare una torta di carote, devi prima raccogliere, pulire e rifornire di carote!

Il data engineer conosce la programmazione meglio di qualsiasi data scientist, ma quando si tratta di statistiche, è tutto esattamente il contrario.

Ma qui c'è il vantaggio del data engineer:

senza di lui/lei, il valore del modello prototipo, che spesso consiste in un frammento di codice di scarsa qualità in un file Python, ottenuto dal data scientist e in qualche modo in grado di dare un risultato, tende a zero.

Senza il data engineer, quel codice non diventerà mai un progetto e nessun problema aziendale sarà risolto efficacemente. Il data engineer cerca di trasformare tutto questo in un prodotto.

Fondamentali che un data engineer deve conoscere

Chi sono gli ingegneri dei dati e come si diventa tali?

Quindi, se questo lavoro ti accende e sei pieno di entusiasmo — puoi impararlo, puoi acquisire tutte le competenze necessarie e diventare una vera rock star nel campo dello sviluppo dati. E sì, puoi farlo anche senza competenze di programmazione o altre conoscenze tecniche. È difficile, ma possibile!

Quali sono i primi passi?

Devi avere un'idea generale di cosa sia cosa.

Innanzitutto, l'Ingegneria Dati appartiene all'informatica. In particolare, devi capire gli algoritmi e le strutture dati efficienti. In secondo luogo, poiché i data engineer lavorano con i dati, è necessario comprendere i principi di funzionamento dei database e delle strutture sottostanti.

Ad esempio, i normali database SQL basati su B-tree sono fondati sulla struttura dati B-Tree e, nei moderni repository distribuiti, sugli LSM-Tree e altre modifiche delle tabelle hash.

* Questi passaggi si basano su un articolo straordinario di Adil Khashtamov. Quindi, se conosci il russo, supporta questo autore e leggi il suo post.

1. Algoritmi e strutture dati

Utilizzare la giusta struttura dati può migliorare notevolmente le prestazioni dell'algoritmo. Ideale sarebbe che tutti noi studiassimo le strutture dati e gli algoritmi nelle nostre scuole, ma questo viene raramente trattato. In ogni caso, non è mai troppo tardi per informarsi.
Quindi, ecco i miei corsi gratuiti preferiti per studiare strutture dati e algoritmi:

Inoltre, non dimenticate il lavoro classico sugli algoritmi di Thomas H. Cormen — Introduzione agli algoritmi. È un ottimo manuale quando avete bisogno di rinfrescare la memoria.

  • Per migliorare le vostre competenze, utilizzate Leetcode.

Potete anche immergervi nel mondo dei database con i fantastici video dell'Università Carnegie Mellon su Youtube:

2. Studio di SQL

La nostra vita è costituita da dati. E per estrarre questi dati da un database, bisogna "parlare" con loro in un'unica lingua.

SQL (Structured Query Language — linguaggio di interrogazione strutturato) è il linguaggio di comunicazione nel campo dei dati. Qualunque cosa si possa dire, SQL è nato, vive e continuerà a vivere a lungo.

Se siete stati a lungo nello sviluppo, probabilmente avrete notato che le voci sulla prossima morte di SQL ricorrono periodicamente. Il linguaggio è stato sviluppato all'inizio degli anni '70 ed è ancora molto popolare tra analisti, sviluppatori e semplici appassionati.
Senza la conoscenza di SQL nell'ingegneria dei dati non si va da nessuna parte, poiché inevitabilmente sarà necessario creare query per estrarre dati. Tutti i moderni archivi di big data supportano SQL:

  • Amazon Redshift
  • HP Vertica
  • Oracle
  • SQL Server

… e molte altre.

Per analizzare grandi volumi di dati memorizzati in sistemi distribuiti, come HDFS, sono stati inventati meccanismi SQL: Apache Hive, Impala e così via. Vedete, non sta andando da nessuna parte.

Come imparare SQL? Praticandolo.

A questo proposito, vi consiglio di dare un'occhiata a un ottimo libro di testo, che peraltro è gratuito, di Mode Analytics.

  1. Livello intermedio di SQL
  2. Unire dati in SQL

Una caratteristica distintiva di questi corsi è la presenza di un ambiente interattivo in cui è possibile scrivere ed eseguire query SQL direttamente nel browser. La risorsa Modern SQL non sarà superflua. E potete applicare queste conoscenze in esercizi di Leetcode nella sezione Database.

3. Programmazione in Python e Java/Scala

Perché vale la pena studiare il linguaggio di programmazione Python, ne ho già parlato nell'articolo Python vs R. Scegliere il miglior strumento per AI, ML e Data Science. Per quanto riguarda Java e Scala, la maggior parte degli strumenti per l'archiviazione e l'elaborazione di enormi volumi di dati sono scritti in questi linguaggi. Ad esempio:

  • Apache Kafka (Scala)
  • Hadoop, HDFS (Java)
  • Apache Spark (Scala)
  • Apache Cassandra (Java)
  • HBase (Java)
  • Apache Hive (Java)

Per capire come funzionano questi strumenti, è necessario conoscere i linguaggi in cui sono scritti. L'approccio funzionale di Scala consente di affrontare in modo efficace i problemi di elaborazione parallela dei dati. Sfortunatamente, Python non può vantare la stessa velocità e capacità di elaborazione parallela. In generale, conoscere più linguaggi e paradigmi di programmazione influisce positivamente sulla varietà degli approcci nella risoluzione dei problemi.

Per immergerti nel linguaggio Scala, puoi leggere Programmazione in Scala dall'autore del linguaggio. Inoltre, la compagnia Twitter ha pubblicato una buona guida introduttiva — Scala School.

Per quanto riguarda Python, credo che Fluent Python sia il miglior libro di livello intermedio.

4. Strumenti per il lavoro con i big data

Ecco un elenco degli strumenti più popolari nel mondo dei big data:

  • Apache Spark
  • Apache Kafka
  • Apache Hadoop (HDFS, HBase, Hive)
  • Apache Cassandra

Ulteriori informazioni sulla costruzione di grandi blocchi di dati possono essere trovate in questo straordinario ambiente interattivo. Gli strumenti più popolari sono Spark e Kafka. Vale assolutamente la pena studiarli, meglio ancora se si comprende come funzionano internamente. Jay Kreps (co-autore di Kafka) ha pubblicato nel 2013 un lavoro monumentale The Log: cosa ogni sviluppatore di software deve sapere sull'astrazione della fusione dei dati in tempo reale, peraltro, le idee fondamentali di questo talmud sono state utilizzate per la creazione di Apache Kafka.

5. Piattaforme cloud

Chi sono gli ingegneri dei dati e come si diventa tali?

La conoscenza di almeno una piattaforma cloud è tra i requisiti di base richiesti per i candidati alla posizione di data engineer. I datori di lavoro preferiscono Amazon Web Services, al secondo posto c'è la piattaforma cloud di Google, e chiude la classifica Microsoft Azure.

Dovete avere una buona familiarità con Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Sistemi distribuiti

Lavorare con i big data implica l'uso di cluster di computer autonomi, la cui comunicazione avviene tramite rete. Più grande è il cluster, maggiore è la probabilità di guasti nei suoi nodi. Per diventare un esperto nel campo dei dati, è necessario comprendere i problemi e le soluzioni esistenti nei sistemi distribuiti. Questo campo è antico e complesso.

Andrew Tanenbaum è considerato un pioniere in questo campo. Per coloro che non temono la teoria, consiglio il suo libro «Sistemi distribuiti», per i principianti potrebbe sembrare complesso, ma in realtà ti aiuterà a affinare le tue competenze.

Credo che «Progettazione di applicazioni ad alta intensità di dati» a cura di Martin Kleppmann sia il miglior libro introduttivo. Tra l'altro, Martin ha un ottimo blog. Il suo lavoro aiuterà a sistematizzare le conoscenze sulla costruzione dell'infrastruttura moderna per l'archiviazione e l'elaborazione di grandi dati.
Per chi ama guardare video, su Youtube c'è un corso Sistemi informatici distribuiti.

7. Pipeline di dati

Chi sono gli ingegneri dei dati e come si diventa tali?

Le pipeline di dati sono ciò di cui non puoi fare a meno come ingegnere dei dati.

La maggior parte del tempo, un ingegnere dei dati costruisce ciò che viene chiamato pipeline di dati, cioè crea un processo per la consegna dei dati da un luogo all'altro. Questi possono essere scenari utente che si connettono a un'API di un servizio esterno o eseguono una query SQL, arricchendo i dati e collocandoli in un'archiviazione centralizzata (data warehouse) o in un'archiviazione di dati non strutturati (data lake).

In sintesi: la checklist principale per un ingegnere dei dati

Chi sono gli ingegneri dei dati e come si diventa tali?

Riassumendo, è necessario avere una buona comprensione dei seguenti aspetti:

  • Sistemi informativi;
  • Sviluppo software (Agile, DevOps, Tecniche di design, SOA);
  • Sistemi distribuiti e programmazione parallela;
  • Fondamenti di database — pianificazione, progettazione, funzionamento e risoluzione dei problemi;
  • Progettazione di esperimenti — A/B test per dimostrare concetti, determinare l'affidabilità, le prestazioni dei sistemi e per sviluppare percorsi affidabili per fornire buone soluzioni operativamente.

Questi sono solo alcuni requisiti per diventare ingegnere dei dati, quindi studia e approfondisci i sistemi di dati, i sistemi informativi, la consegna continua/implementazione/integrazione, i linguaggi di programmazione e altri argomenti di informatica (non in tutte le aree tematiche).

E, infine, l'ultima cosa, ma molto importante, che voglio dire.

Il percorso per diventare un Data Engineer non è così semplice come può sembrare. Non perdona, frustra e devi essere pronto a questo. Alcuni momenti in questo viaggio potrebbero spingerti a mollare tutto. Ma è un vero e proprio lavoro e un processo di apprendimento.

Non mascherarlo fin dall'inizio. Il senso del viaggio è imparare il più possibile ed essere pronti ad affrontare nuove sfide.
Ecco un'immagine interessante con cui sono rimasto colpito, che illustra bene questo concetto:

Chi sono gli ingegneri dei dati e come si diventa tali?

E sì, non dimenticare di evitare il burnout e di riposarti. È molto importante anche questo. Buona fortuna!

Che ne pensate dell'articolo, amici? Vi invitiamo a un webinar gratuito, che si terrà oggi alle 20:00. Durante il webinar discuteremo di come costruire un sistema di elaborazione dati efficace e scalabile per una piccola azienda o un startup con costi minimi. In pratica, ci familiarizzeremo con gli strumenti di gestione dei dati di Google Cloud. A presto!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster