Чим займається Data Engineer і які інструменти використовує

Чим займається Data Engineer і які інструменти використовує

Віктор Шитюк, Lead Data Engineer з 12 річним досвідом у IT сфері, про робочу рутину інженера даних, must-have інструменти та перспективи професії.

Існує міф, що дата-інженер робить усю «брудну» роботу з даними — «витягує» їх зі сховищ, сортує «сирі» дані, а потім передає аналітикам і дата-саєнтистам, які роблять з ними справжню магію. Але магії не буде, якщо підготувати дані неправильно.

Ми поспілкувалися з Віктором Шитюком, Lead Data Engineer з 12 річним досвідом в ІТ-сфері і лектором курсу Data Engineering про те, чому інженер даних ― це ключова позиція в будь-якій компанії, яка працює з даними, і з чого починати карʼєру в цій сфері.

Досьє:

  • Віктор Шитюк працює Lead Data Engineer. Має 12 років досвіду в ІТ і останні 4,5 роки займається інженерією даних. Працював у стартапах, великих компаніях, консультував одну з FAANG-компаній.
  • Найбільше подобаються архітектурні задачі, коли доводиться підбирати рішення і покращувати проєкт. Любить запускати проєкти з нуля, збирати команду, налагоджувати процеси.
  • Має багато робочих кейсів, якими пишається. Зокрема, одного разу йому вдалося скоротити процес завантаження та обробки даних із 7 годин до 40 хвилин, що зробило бізнес-процеси набагато ефективнішими.
  • На останньому проєкті побудував MVP-платформу, вибираючи мінімальні рішення, які приносять користь. Ця платформа наразі обробляє сотні терабайтів даних і водночас споживає мінімум грошей.

У чому різниця між Data Engineer, Data Scientist та Data Analyst? Що спільного в задачах цих спеціалістів?

Data Scientist та Data Analyst ― це суміжні професії. Фактично вони обоє займаються BI (Business Intelligence), тільки використовують для цього різні інструменти та методи. Аналітики отримують результати, користуючись мовою запитів SQL, а також такими інструментами, як Tableau чи Power BI. Водночас дата-саєнтисти отримують результати за допомогою зовсім інших методів, технологій і підходів.

Коли щоденним робочим середовищем Data Analyst є інтерфейс якоїсь аналітичної бази даних та, скажімо, такий інструмент, як Tableau, то Data Scientist робить свою магію здебільшого в JupyterLab, під'єднуючись до даних та проводячи дослідження чи тренуючи моделі.

Крім Data Scientist є ще ML Engineer. Ці дві спеціальності теж часто плутають між собою, бо вони мають багато спільного.

Усі три професії (Data Analyst, Data Scientist та ML Engineer) не працюють із сирими даними. Часто вони навіть не мають доступу до них. Вони працюють у зручному середовищі з попередньо опрацьованими даними, підготовкою яких, власне, і займається Data Engineer.

Дуже часто стикаюся з тим, що дата-інженера плутають із дата-саєнтистом. Це дві професії, які працюють у різних, хоча й паралельних, командах.

Скільки даних повинна збирати компанія, щоби виникла необхідність у позиції Data Engineer? Чи можна великій компанії обійтися без нього і на які процеси це може вплинути?

Якщо у вас більш ніж одне джерело даних і ваша компанія планує отримувати результати з них, то вже потрібно задумуватися про таку позицію в компанії.

Зверніть увагу, я не сказав, що це обовʼязково мають бути великі дані. За добу, можливо, ви й не зберете так багато даних, а от за 2–3 роки вже матимете кілька терабайтів у Data Lake чи Data Warehouse. Крім того, лише Data Engineer знає, що правильно робити з даними, щоб усі були щасливі: і Data Analyst, i Data Scientist, і, звичайно, бізнес.

А от якщо у вас великий бізнес і велика компанія, то без інженерії даних вам точно не обійтись. Точніше, ви можете спробувати, але нічого хорошого у вас не вийде, лише втратите час та гроші.

Наскільки дата-інженер має розуміти продукт та бізнес-логіку, щоби правильно підготувати дані для подальшої роботи?

Результати, які хоче бачити бізнес, дійсно надають Data Analyst та Data Scientist. Тому їм треба ідеально розуміти продукт та бізнес-логіку. Але річ у тому, що в них нічого не вийде без дата-інженерної частини.

Інженеру даних треба розуміти продукт та бізнес-логіку на базовому рівні, достатньому, щоби спілкуватися з аналітичною командою та бізнесом. Водночас йому треба знати набагато більше технічних речей, ніж іншим спеціалістам.

Чи потрібно інженеру даних ідеально знати Python та SQL? І який взагалі бекграунд потрібен для побудови архітектури даних?

Якщо декілька років тому Python досить рідко був потрібен в цій сфері, то зараз це абсолютний must have. Інженери даних із досвідом, які спеціалізувалися на таких мовах, як Java та Scala, зараз вчать Python. Подобається їм чи ні, це вже зовсім інше питання, але в індустрії панують свої закони. Я особисто допомагав декільком джавістам опанувати Python.

Поряд із Python за важливістю йде також SQL. Зараз без цієї мови запитів у цій сфері буде дуже важко.

А от для побудови дата-архітектури Python та SQL буде замало. Для цього потрібно орієнтуватися в безлічі підходів, шаблонів та технологій, розуміти бізнес і його цілі. І, що дуже важливо, мати сильні soft skills. Дуже часто хороші інженери даних погано розуміються на побудові архітектури.

З яких галузей найпростіше свічнутися в Data Engineering?

З мого досвіду ― це Software Engineer, який займається розробкою backend-частини. Адже інженер даних ― це той же Software Engineer, який володіє специфічними технологіями, шаблонами, підходами. Також часто зустрічав колишніх інженерів баз даних (DB Engineer), DWH-інженерів. Трохи рідше ― аналітиків.

Варто додати, що останні кілька років світчинг в інженерію даних з інших професій ― це буквально тренд. Бо професія перспективніша, конкуренція на ринку менша, зарплата більша. Плюсів багато.

Які поради ви могли б дати тим, хто лише починає свій шлях в інженерії даних? Що вивчити, щоби стати джуном?

  • По-перше, потрібно володіти однією з імперативних мов програмування, що використовується в інженерії даних. Зараз абсолютний тренд ― це Python. А також обовʼязково SQL. Обома мовами треба володіти на рівні твердої четвірки.
  • По-друге, потрібно мати якийсь досвід роботи із середовищем зберігання та/або обробки великих даних. З трендових рішень ― звичайно, Apache Spark. Або бази даних, такі як Snowflake, BigQuery та подібні. Також вам не обійтися без інструментів оркестрації, таких як Apache Airflow.
  • По-третє, треба мати хоча б елементарний досвід роботи з хмарою. On-premise рішення все ще лишаються на ринку, але хмарні їх майже витіснили. Згодиться будь-що з відомих великих хмарних провайдерів: AWS, GCP, Azure. Молодші хмари, такі як Digital Ocean, наразі можуть дуже мало запропонувати для цієї сфери.
  • Також ви не зможете уникнути інструментів, які є необхідними будь-де, якщо ви працюєте в ІТ. Маю на увазі Git та IDE.
  • Що стосується специфічніших речей ― то слід звернути увагу на формати зберігання та передачі даних. Якщо ви знайомі з JSON, CSV та XML, то варто глянути на такі формати, як JSONLine, Apache Avro, Apache Parquet.
  • Хтось може поцікавитись, а чому я не згадав Hadoop? Якщо років 5 тому завжди, коли говорили про інженерію даних чи Big Data, відразу ж згадували про Hadoop, сьогодні це не завжди так. Компоненти цієї екосистеми все ще актуальні й такими залишаться досить довго, але ймовірність, що вам щось трапиться із цього на першій роботі, не дуже невисока. Можете поцікавитися, що таке, наприклад, HDFS та Hive. Принаймні на співбесіді це може знадобитись. Низькорівневі алгоритми MapReduce ви точно не писатимете. Хоча що це за фреймворк та програмна модель ― варто розуміти.

На кого підписатися, що послухати/почитати ви порадите початківцям, щоб ознайомитися зі сферою інженерії даних?

На це запитання важко відповісти, бо мова йде про новачків. В жодному разі не читайте статті на medium.com чи тим більше на habrahabr.ru. На цих ресурсах опублікувати статтю може хто завгодно, матеріал не рецензується. Хоча перший має хорошу славу, останній вважається помийкою вже досить давно. І не забувайте, що це російський сайт, і монетизується він на Росію.

Якщо ви досвідчений інженер і вільно можете відрізнити правду від дезінформації, а корисне від некорисного, то вибирайте статті на medium.com і читайте. Але не тоді, коли ви початківець, бо в голові буде хаос.

Я та мої досвідчені колеги завжди рекомендуємо читати авторитетні книги. Але книги зазвичай мають дуже вузьку направленість, тому новачкам це навряд допоможе.

Та ж сама ситуація з блогами компаній, що або працюють із великими даними, або створюють середовища та інструменти. Заведено рекомендувати технічні блоги таких компаній, як Google та Twitter, але, знову ж таки, це не для новачків.

Щоби зрозуміти цю професію, новачкам краще записатися на оглядовий курс із цієї професії. Це найкращий варіант, на мою думку.

Які запитання зазвичай ставлять дата-інженеру на співбесіді?

Вичерпна відповідь на це запитання варта окремої розмови. Якщо коротко, то зазвичай перевіряють знання Python (чи іншої мови, на якій ви спеціалізуєтесь) та SQL. Можуть дати розв'язати задачу на одну із цих мов, провівши live coding interview.

Завжди запитують щось загальнотеоретичне. З типових запитань, наприклад:

  • Що таке DWH, Data Lake? У чому відмінність?
  • Що таке ETL та ELT? У чому різниця?
  • Які бувають види даних (тут ви маєте пояснити, що дані бувають структуровані, слабоструктуровані та неструктуровані + навести приклади).

Куди розвиватися далі, якщо вже досяг позиції Senior Data Engineer?

Градація аналогічно позиції Software Engineer в інших напрямках: Lead Data Engineer (чи Data Technical Lead), Data Architect і якась керівна посада, наприклад CTO, Head of Data, VP of Engineering тощо.

Як зміниться професія Data Engineer через 5–10 років?

Обсяг даних у світі зростає разом із цифровізацією нашого життя. Прогнозую, що через 5–10 років інженерія даних остаточно мігрує у хмару, хмарні рішення стануть оптимальнішими та доступнішими.

Сфера Big Data та інженерії даних відома своїм зоопарком технологій (бо їх дійсно багато, і кожна компанія постійно вигадує щось нове). Можливо, відбудеться якась стандартизація.

Ця сфера і професія точно залишаться актуальними, а не зникнуть. Навпаки ― актуальність і попит лише збільшаться. Я в цьому впевнений. Бо, як казав Клайв Хамбі, британський математик, підприємець та спеціаліст із Data Science: «дані ― це нова нафта».

Ще статті
Як розробнику спростити код за допомогою шаблонів.
Що алгоритми дозволяють робити з кодом і чому розробнику потрібно бути креативним.