U svetu podataka: Vodič za rolu Data Engineer

Vodič 12. apr. 2022

“Podaci su nova nafta”, dobro je poznata fraza koja se ispostavila kao potpuno tačna. U svetu se danas praktično svaka akcija pretoči u podatak, a kompanije su uveliko prepoznale važnost data za organizaciju. Tu se pojavila i rola Data Engineer, kao ključne osobe za prikupljanje i upravljanje velikim količinama podataka.

Po Dice-ovom tech izveštaju za 2020. godinu, potražnja za Data Engineer-ima zabeležila je rast od 50%, a pandemija je taj trend dodatno ubrzala.

Ako i ti razmišljaš o ovoj roli, interesuje te svet data, ili možda već radiš na njoj a da nisi ni svestan, na pravom si mestu jer ćemo dalje u tekstu razjasniti šta ona zapravo podrazumeva i otkloniti zablude koje je prate.

U tome će pomoći osvrt na ovu rolu i lično iskustvo Dejana Mijatovića, odnedavno dela novoformiranog Data tima na nivou Global Delivery centra u kompaniji Zühlke. Radeći prethodno kao Software Engineer, Dejan je u Zühlke stigao najpre na poziciju .Net full stack Engineer, a za nekoga sa višegodišnjim Python iskustvom i pasijom za sve što ima data u sebi, put do Data Engineer-a bio je prirodan.

Izvor: The Dice 2020 Tech Job Report

Šta zapravo radi Data Engineer?

Data Engineer je osoba odgovorna za kreiranje i održavanje data pipeline-a,  za prikupljanje, transformisanje i skladištenje podataka, i blisko sarađuje sa Data scientist-ima i analitičarima kako bi shvatio za šta će podaci biti korišćeni i u kakvom obliku treba da se skladište.

Data Engineer != Data Scientist

Pre nego ti dalje približimo ovu rolu, važno je da razjasnimo da Data Engineer nije isto što i Data Scientist. Iako su razlike dosta veće nego što se obično misli, zabunu najčešće unosi zajedničko data u nazivu, dok drugi deo nagoveštava distinkciju.

Kako nam objašnjava i Dejan, dok je jedan inženjer i bavi se problemima logistike podataka, drugi je naučnik koji koristeći istraživačke metode nastoji da izvuče vrednost iz njih.

Problemi koje rešavaju se razlikuju, kao i pristup rešavanju tih problema, pozadina i potreban set veština. Vrlo često je ovo i drugačiji tip osobe, različitog načina razmišljanja i verovatno i drugačijeg akademskog obrazovanja, pa dok Data Scientist uglavnom ima background u matematici i statistici, Data Engineer dolazi uglavnom sa elektrotehničkih fakulteta, kompjuterskih nauka, primenjene matematike ili neke druge IT oblasti.

Na slici iznad je prikazan uprošćen primer data-pipeline u kom se prikupljeni podaci koriste za treniranje ML (machine learning) modela i podelu zaduženja u tom scenariju. Vidimo da gde se posao Data Engineer-a završava, za Data Scientist-a počinje.

Dejan takođe naglašava da konzumenti podataka ne moraju biti samo Data scientist-i. Bitno je napomenuti da vertikalna linija koja deli dve role može biti pomerena u jednu ili drugu stranu u zavisnosti od više faktora kao što su kompleksnost data pipeline-a, set veština inženjera i pre svega veličine projekta, tj. data tima.

Dok će na većim projektima, zaduženja Data Engineer-a biti približna opisu posla, realnost je da će se na manjim projektima očekivati i da pokrije ceo tok kretanja podataka, od prikupljanja i skladištenja, do analiziranja i kreiranja modela, praktično pokrivajući i zaduženja Data Scientist-a. Dakle, može se reći full stack Data Engineer-a - ističe Dejan.

Koje veštine poseduje Data Engineer ?

Ako bi pročitao jedan oglas za posao, opis za ovu poziciju bi otprilike izgledao ovako:

Potrebne veštine:
● Poznavanje relacionih i nosql baza podataka
● Python, poželjno i Java
● Poznavanje ETL i ELT pipeline-a
● Poznavanje algoritama i struktura podataka
● Automatizacija i pisanje skripti
● Poznavanje big data alata kao što su Kafka ili Hadoop
● Razumevanje distribuiranih sistema
● Kontejnerizacija
● Iskustvo u radu za AWS, Azure ili GCP

Zaduženja:
● Kreiranje, održavanje i testiranje data pipeline arhitekture
● Prikupljane podataka iz različitih izvora
● Razvijanje algoritama za tranformaciju sirovih podataka u korisno, upotrebljivo stanje
● Bliska saradnja sa stakeholder-ima kako bi se shvatila potreba kompanije za podacima
● Dizajniranje API za pristup podacima
● Briga o sigurnosti i bezbednosti podataka

Kao što možeš videti, a Dejan potvrđuje, rola Data Engineer-a zahteva jako tehničko znanje. Ko onda ima najbolje preduslove za nju?

Rekao bih da najbrži put do Data Engineer-a imaju softver inženjeri koji poznaju programski jezik Python, poželjno i Javu i dobro poznavanje sistema baza podataka, pisanje SQL upita, modelovanje baza podataka i poznavanje cloud tehnologija. Ukoliko inženjer poseduje sva ova znanja i veštine, učenje data engineer specifičnih alata kao što su Spark ili Airflow je lakši deo posla. Najveći izazov jeste razumevanje podataka i celog seta novih problema koja dolaze uz njih, a jedini ispravan put do toga je iskustvo - objašnjava Dejan i iz sopstvenog iskustva.

Python ne znači data, ali data znači Python

Još jedna zabluda u svetu podataka je izjednačavanje poznavanja Python jezika sa poznavanjem data, bilo da je to engineering ili data science.

Činjenica, ističe Dejan, jeste da je Python trenutno najviše korišćen programski jezik u ovoj oblasti, ali to mu sigurno nije jedina svrha.

Kao jezik koji se koristi na Mars Roveru, novom James Webb svemirskom teleskopu koji pokreće milione sajtova među kojima su Reddit, Dropbox i Instagram, nepravedno bi bilo vezivati Python samo za data oblast, a i ne bi bilo fer očekivati od nekog da se poznavanjem jezika odmah kvalifikuje i za data - navodi naš sagovornik.

Data Engineer i ML

Iako smo već objasnili da je ML deo zaduženja Data Scientist-a i nismo ga ubrojali u neophodna znanja za rolu Data Engineer, osnovno poznavanje oblasti je veoma korisno.

Navodeći zašto, Dejan, ističe da omogućuje bolje razumevanje njihovih potreba i ostalih krajnjih korisnika tih podataka, a Pytorch, Tensorflow i Scikit learn su danas vodeće open source biblioteke za ML i DL.

Nova pozicija, stari problemi

Iako je data engineering relativno nova pozicija i još je u razvoju, problemi koje rešava su ti svakako odavno poznati. Njima su se samo uglavnom bavili DB administratori ili Software Engineer-i, i kako se obim i kompleksnost problema povećala, stvorena je potreba za novom rolom, koja bi se bavila isključivo njima.

Poznavanje alata kao što su Airflow, Hadoop ili Spark ne čine nužno nekoga Data Engineer-om. Naravno, svi ovi alati su olakšali i ubrzali posao i otvorili nove mogućnosti, ali ono što čini nekog eksperta u oblasti jeste razumevanje podataka kao oblasti i svih problema koje dolaze uz njih. Data Engineer će se u kreiranju data pipelina-a vrlo brzo susresti sa problemima kao što su nedostupnost podataka, različite ili nepostojeće strukture podataka,  geografska distribuiranost, konzistentnost, pouzdanost i pre svega količina. Jer ako govorimo o podacima i Data Engineer-u, uglavnom je tu i termin big data - ističe Dejan i zanimljivo primećuje sledeće:
Postoji čak mnogo data inženjera koji nisu ni svesni da to jesu, jer im možda to ne stoji napisano uz ime ili nemaju takvu podelu u kompaniji. Uzrok može biti to da se primenjeni način rešavanja razlikuje od modernih rešenja, ili činjenica da trenutno ne koriste popularne alate da izgrade data pipeline.  Svakako,  problemi kojima se bave ih čine data engineer-ima, a to je rad sa velikim količinama podataka, briga o skalabilnosti, transformaciji podataka i rad u distribuiranim sistemima.

Šta dalje

Većina današnjih seniora Data Engineer-a su uglavnom Software Engineer-i koji su došli iz drugih oblasti, stičući usput nova znanja.

Kao neko ko je i sam prošao kroz sličnu tranziciju, Dejan svedoči da je najveći izazov upoznati se sa novim problemima koje ta oblast donosi, pa tek onda učenje novih alata kao što su Airflow ili Nifi. Naravno, prethodno Python iskustvo i rad sa distribuiranim sistemima svakako pomaže.

Ako si softver inženjer, možda ti je put malo lakši samim tim što je spisak za učenje kraći. Ako već poznaješ neki drugi objektno orijentisani jezik, rekao bih da je to prednost i da će ti učenje Python-a biti lakše. Ipak, budi oprezan u njihovim razlikama, nauči šta znači pythonista i nemoj pisati Python kao što bi Javu. A ako poznaješ samo Python, budi svestan njegovih ograničenja - poručuje ti Dejan.

Sigurno su ti Dejanova pojašnjenja i iskustvo pomogli da shvatiš u kojoj meri ti je blizak svet data i da li želiš da stekneš prvo poslovno iskustvo u ovoj oblasti. Njegov savet je i da još jednom pročitaš deo teksta o razlikama između Data Engineer i  Data Scientist i razmisliš gde vidiš sebe, jer je svaka od ove dve oblasti karijera za sebe.

Ako je to i dalje Data Engineer, možda se baš među ovim pozicijama krije pravo rešenje za tebe jer Zühlke širi svoj Data tim! Upoznaj se bliže sa ovom kompanijom i kroz njihov profil na Joberty-u, gde ćeš pronaći i sve trenutno otvorene pozicije koje nude.

Tagovi

Zuhlke

Zühlke Srbija deo je globalne servisne kompanije koja posluje u 10 zemalja. Zühlke grupa kreira nove poslovne modele, razvijajući ideje, usluge i proizvode zasnovane na novim tehnologijama.

Tvoja prijava je uspešno sačuvana!
Odlično! Da bi imao pristup kompletnom sadržaju bloga potrebno je da završiš proces plaćanja.
Tvoja prijava je uspešna!
Tvoj nalog je aktiviran, sada imaš pristup kompletnom sadržaju bloga.