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

E ancora buongiorno! Il titolo dell'articolo parla da solo. In vista dell'inizio del corso «Data Engineer» proponiamo di approfondire chi siano realmente gli ingegneri dei dati. Nell'articolo ci sono moltissimi link utili. Buona lettura.

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

Una guida semplice su come cogliere l'onda dell'ingegneria dei dati e non farsi risucchiare nell'abisso.

Sembra che oggigiorno tutti vogliano diventare data scientist. Ma che dire dell'ingegneria dei dati? Fondamentalmente, è una sorta di ibrido tra un analista dei dati e un data scientist; l'ingegnere dei dati di solito è responsabile della gestione dei flussi di lavoro, delle pipeline di elaborazione e dei processi ETL.Dati l'importanza di queste funzioni, attualmente è un altro gergo professionale popolare in rapida ascesa.

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

Iniziamo!

Che cos'è l'ingegneria dei dati?

A dire il vero, 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 Lindsay Glegg

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

Dal nome, l'ingegneria dei dati è legata ai dati, ovvero alla loro consegna, archiviazione e elaborazione. Di conseguenza, il compito principale degli ingegneri è garantire un'infrastruttura affidabile per i dati. Se consideriamo 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?

Di cosa si occupa un ingegnere dei dati?

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

La maggior parte delle aziende con posti vacanti per ingegneri dei dati richiede i seguenti requisiti:

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

Ricorda, questo è solo il fondamentale. Da questa lista si può dedurre che i data engineer 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 data engineer è organizzare la raccolta, l'elaborazione e l'archiviazione delle informazioni.

L'elenco degli strumenti utilizzati in questo caso può variare, a seconda del volume di questi dati, della loro velocità di arrivo e della loro eterogeneità. La maggior parte delle aziende non affronta realmente grandi dati, quindi per un centro di archiviazione centralizzato, il cosiddetto data warehouse, si può utilizzare un database SQL (PostgreSQL, MySQL, ecc.) con un piccolo insieme di script che dirigono i dati verso l'archivio.

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

  • Esperienza con big data: Hadoop, Spark, Kafka.
  • Conoscenza di algoritmi e strutture dati.
  • Comprensione dei principi fondamentali dei sistemi distribuiti.
  • L'esperienza con strumenti di visualizzazione dei dati come Tableau o ElasticSearch è un grande vantaggio.

C'è un chiaro spostamento verso i big data, in particolare nella loro gestione sotto carichi elevati. Queste aziende hanno requisiti più elevati in termini di resilienza del sistema.

Ingegneri dei dati vs. scienziati dei dati

Chi sono gli ingegneri dei dati e come si diventa tali?
D'accordo, questo era un confronto semplice e divertente (niente di personale), ma in realtà tutto è molto più complesso.

Innanzitutto, dovete sapere che esiste molta confusione nella definizione dei ruoli e delle competenze di uno scienziato dei dati rispetto a un ingegnere dei dati. È facile essere confusi su quali competenze siano necessarie per diventare un ingegnere dei dati di successo. Certo, ci sono competenze che si sovrappongono a entrambi i ruoli, ma ci sono anche un certo numero di competenze diametralmente opposte.

La scienza dei dati è una cosa seria, ma stiamo passando a un mondo di data science funzionale, dove i praticanti sono in grado di fare la propria analisi. Per attivare i pipeline di dati e le strutture dati integrate, hai bisogno di ingegneri dei dati, non di scienziati.

È un ingegnere dei dati più richiesto di uno scienziato dei dati?

— Sì, perché prima di poter cucinare una torta di carote, bisogna prima raccogliere, pulire e avere le carote!

L'ingegnere dei dati ha una migliore comprensione della programmazione rispetto a qualsiasi scienziato dei dati, ma quando si tratta di statistiche, è tutto esattamente il contrario.

Ma ecco il vantaggio dell'ingegnere dei dati:

senza di lui/lei, il valore di un modello prototipale, che spesso consiste in un frammento di codice di scarsa qualità in un file Python, ricevuto dallo scienziato dei dati e che in qualche modo produce risultati, tende a zero.

Senza un ingegnere dei dati, quel codice non diventerà mai un progetto, e nessun problema aziendale sarà affrontato in modo efficace. L'ingegnere dei dati cerca di trasformare tutto questo in un prodotto.

Le principali informazioni che un ingegnere dei dati deve conoscere

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

Quindi, se questo lavoro risveglia in voi una passione e siete pieni di entusiasmo — siete in grado di apprendere, potete acquisire tutte le competenze necessarie e diventare delle vere rock star nel campo dell'ingegneria dei dati. E sì, potete farlo anche senza abilità di programmazione o altre conoscenze tecniche. È difficile, ma possibile!

Quali sono i primi passi?

Dovete avere una comprensione generale di cosa sia cosa.

Innanzitutto, l'ingegneria dei dati riguarda l'informatica. In particolare, dovete comprendere algoritmi e strutture dati efficienti. In secondo luogo, poiché gli ingegneri dei dati lavorano con i dati, è necessario comprendere i principi di funzionamento dei database e delle strutture sottostanti.

Ad esempio, i database SQL comuni basati su B-tree si fondano sulla struttura dati B-Tree, e, nei moderni repository distribuiti, sull'LSM-Tree e sulle altre varianti delle tabelle hash.

* Questi passaggi sono basati su un articolo straordinario di Adil Hashtamov. Quindi, se conoscete il russo, supportate questo autore e leggete il suo post.

1. Algoritmi e strutture dati

L'uso della corretta struttura dei dati può migliorare notevolmente le prestazioni dell'algoritmo. Idealmente, dovremmo tutti studiare le strutture dati e gli algoritmi nelle nostre scuole, ma raramente vengono trattati. Comunque, non è mai troppo tardi per imparare.
Ecco quindi i miei corsi gratuiti preferiti per imparare le strutture dati e gli algoritmi:

Inoltre, non dimenticate il lavoro classico sugli algoritmi di Thomas Cormen — Introduzione agli algoritmi. È una guida ideale quando avete bisogno di rinfrescare la vostra memoria.

  • Per migliorare le vostre abilità, utilizzate Leetcode.

Potete anche immergervi nel mondo dei database con i fantastici video della Carnegie Mellon University su Youtube:

2. Studiare SQL

La nostra vita è fatta di dati. E per estrarre questi dati da un database, è necessario "parlare" con loro in un linguaggio comune.

SQL (Linguaggio di Query Strutturato) è il linguaggio di comunicazione nel campo dei dati. Indipendentemente da ciò che si dice, SQL è stato, è e continuerà a vivere ancora a lungo.

Se sei stato a lungo nello sviluppo, probabilmente avrai notato che ci sono periodicamente voci sulla prossima morte di SQL. Il linguaggio è stato sviluppato all'inizio degli anni '70 e continua a godere di enorme popolarità tra analisti, sviluppatori e semplici appassionati.
Senza conoscere SQL, non si va da nessuna parte nell'ingegneria dei dati, poiché dovrai inevitabilmente creare query per estrarre dati. Tutti i moderni repository di big data supportano SQL:

  • Amazon Redshift
  • HP Vertica
  • Oracle
  • SQL Server

… e molti altri.

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

Come imparare SQL? Basta praticare.

Per questo, ti consiglio di dare un'occhiata a un ottimo tutorial, che tra l'altro è gratuito, da Mode Analytics.

  1. Livello intermedio di SQL
  2. Unione dei dati in SQL

Una caratteristica distintiva di questi corsi è la presenza di un ambiente interattivo nel quale puoi scrivere ed eseguire query SQL direttamente nel browser. Risorsa SQL Moderno può tornare utile. E puoi applicare queste conoscenze in compiti di Leetcode nella sezione Database.

3. Programmazione in Python e Java/Scala

Perché dovresti studiare il linguaggio di programmazione Python, l'ho già scritto in un 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 memorizzare e elaborare enormi volumi di dati è scritta in questi linguaggi. Ad esempio:

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

Per comprendere come funzionano questi strumenti, devi conoscere i linguaggi in cui sono scritti. L'approccio funzionale di Scala consente di risolvere efficacemente i problemi di elaborazione parallela dei dati. Purtroppo, Python non può vantare la stessa velocità e capacità di elaborazione parallela. In generale, avere familiarità con più linguaggi e paradigmi di programmazione influisce positivamente sulla varietà degli approcci alla risoluzione dei problemi.

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

Per quanto riguarda Python, credo 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

Maggiore informazione sulla costruzione di grandi blocchi di dati puoi trovarla in questo straordinario ambiente interattivo. Gli strumenti più popolari sono Spark e Kafka. Vale sicuramente la pena studiarli, preferibilmente comprendere come funzionano internamente. Jay Kreps (coautore di Kafka) ha pubblicato nel 2013 un'opera monumentale The Log: cosa ogni sviluppatore software deve sapere sull'astrazione della fusione dei dati in tempo reale, tra l'altro, le idee principali di questo talmud sono state utilizzate per creare 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 fondamentali per i candidati alla posizione di data engineer. I datori di lavoro preferiscono Amazon Web Services, al secondo posto troviamo Google Cloud Platform, seguita da Microsoft Azure.

Devi avere una buona padronanza di Amazon EC2, AWS Lambda, Amazon S3 e DynamoDB.

6. Sistemi distribuiti

Lavorare con big data implica avere dei cluster di computer autonomi, i cui nodi sono connessi via rete. Maggiore è il cluster, maggiore è la probabilità di guasto dei suoi nodi membri. Per diventare un esperto di dati di alto livello, è necessario approfondire le problematiche e le soluzioni esistenti per i sistemi distribuiti. Questo è un campo datato e complesso.

Andrew Tanenbaum è considerato un pioniere in questo settore. Per chi non teme la teoria, consiglio il suo libro «Sistemi distribuiti», che all'inizio può sembrare complesso, ma ti aiuterà realmente a perfezionare le tue abilità.

Credo che «Progettazione di applicazioni ad alta intensità di dati» di Martin Kleppmann la migliore introduzione. A proposito, Martin ha un eccellente un blogLavoro che aiuterà a sistematizzare le conoscenze sulla costruzione di infrastrutture moderne 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 essenziali per ogni data engineer.

La maggior parte del tempo, un data engineer costruisce quello che viene chiamato un data pipeline, creando un processo per il trasferimento dei dati da un luogo all'altro. Questi possono includere scenari utente che effettuano chiamate API a servizi esterni o eseguono query SQL, arricchendo i dati e salvandoli in uno storage centralizzato (data warehouse) o in uno storage di dati non strutturati (data lake).

In sintesi: la checklist fondamentale per un data engineer

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

In sintesi, è 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, gestione e risoluzione dei problemi;
  • Progettazione di esperimenti — test A/B per dimostrare concetti, determinare l'affidabilità, le prestazioni dei sistemi e sviluppare percorsi solidi per fornire soluzioni efficaci.

Questi sono solo alcuni dei requisiti per diventare un ingegnere dei dati, quindi studiaci e familiarizza con i sistemi di dati, i sistemi informatici, la continuous delivery/deployment/integration, i linguaggi di programmazione e altri argomenti dell'informatica (non in tutti i campi di studio).

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

Il percorso per diventare Data Engineer non è così semplice come potrebbe sembrare. Non perdona, è frustrante, e bisogna essere pronti a questo. Alcuni momenti in questo viaggio potrebbero spingerti a mollare tutto. Ma è un vero lavoro e un processo di apprendimento.

Non abbellirlo fin dall'inizio. Il vero significato del viaggio è apprendere il più possibile e prepararsi a nuove sfide.
Ecco un'immagine fantastica che ho incontrato, che illustra bene questo punto:

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

E sì, non dimenticate di evitare il burnout e di prendervi delle pause. Anche questo è molto importante. Buona fortuna!

Cosa 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 una startup con costi minimi. Come esercitazione, ci familiarizzeremo con gli strumenti di elaborazione dati di Google Cloud. Ci vediamo!

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