Мій шлях до оферу в Data Engineering. Як пройти першу технічну співбесіду
Мене звати Олександр Чакалов, я Big Data Engineer в компанії N-ix. В минулому професійно займався бадмінтоном (так-так, це олімпійський вид спорту) та був тренером, а в 2020 році вирішив кардинально змінити сферу діяльності й перейти в ІТ. Варто зазначити, що це була моя друга спроба.
Цього разу я обрав Python і з головою в нього занурився. Через приблизно чотири місяці вивчення зміг потрапити на курси в одній з українських компаній. Це був не Data-напрям, але він мені дав багато цінних знань і найголовніше — щось, що не було соромно вписати в резюме як релевантний досвід.
Після проходження теоретичної частини курсу я почав надсилати своє резюме на Trainee-вакансії і проходити технічні співбесіди. У цій статті спробую розповісти, з якими викликами я зіткнувся, починаючи свій шлях в IT, і на що б звернув увагу, якби проходив свої перші співбесіди зараз.
Важливо
Зі свого першого робочого дня я потрапив на проєкт у ролі Data-інженера, тому все у статті буде саме про інженерію даних. Якщо ви опинилися на цій сторінці, швидше за все знаєте, хто такий Data Engineer. Якщо ні, пропоную для початку переглянути статтю Data Engineer: хто це і що потрібно знати для цієї роботи.
Шлях до оферу
Маючи за спиною кілька закінчених онлайн-курсів, мені знадобилося п’ять-шість технічних співбесід на Trainee-Junior вакансії, щоб отримати омріяний офер.
Варіативність та кількість етапів, які повинен пройти кандидат, відрізняється в кожній компанії. Комусь щастить отримати пропозицію роботи за два дзвінки. Дехто має три і більше зідзвонів, а також тестові завдання, розклад карт таро і тест на аналіз характеру. Це не жарти: у одній з компаній, куди я хотів потрапити на першу роботу, потрібно було пройти тест на визначення характеру і ще декілька цікавих тестиків.
Минаючи більшість винятків та особливостей співбесід у продуктових, аутсорсових та аутстафових компаніях, хочу сконцентруватись на найважливішому етапі — розмові з технічним експертом. Зазвичай цей дзвінок триває одну-півтори години, за яку він розпитує за багатьма темами з Data-інженерії, а також ставить кілька project specific питань.
Приклад неадекватної співбесіди
У мене були доволі різні співбесіди — деякі адекватні, деякі не дуже. Для прикладу про одну неадекватну: вакансія нічим не виділялась, стек був наближений до того, що я вивчав. Мене запросили на розмову з рекрутером, де попередили, що треба буде зробити тестове завдання, і вже потім запросять на технічну співбесіду з експертом.
Тестове було доволі простим, кілька завдань на знання Python (маніпуляція різними типами даних, створення класів і, якщо не помиляюсь, написання декоратору). За дві-три годинки все написав, відправив і став очікувати наступних кроків. На наступний день мені відписали і запросили на співбесіду.
В день Х двоє експертів провели зі мною приємну розмову, більшість часу ми говорили про Python та SQL. Згодом обговорили моє тестове, а також торкнулись теми моїх хобі та інтересів. Менеджер розповів про бенефіти компанії і ми попрощались. На наступний день прийшла дуже дивна пропозиція. Мені пропонували роботу. «Круто!» — подумаєте ви. «Зовсім не круто» — пояснили мої досвідчені друзі з ІТ.
В офері були дуже цікаві пункти: працювати я мав не з Python, який вивчав останні шість-вісім місяців, а з якоюсь іншою, маловідомою та вузькоспеціалізованою мовою. Контракт мав підписуватись на два роки без можливості дострокового розірвання. І свічкою на цьому торті виявилось три місяці безоплатного стажування, і після них — півтора роки зарплати, нижчої за ринкову майже в півтора рази.
Мені тоді пощастило — довкола були люди, які вберегли від цієї фатальної угоди.
Була ще одна цікава співбесіда, де я отримав півтори години «прожарки» за всіма темами, які існують в світі розробки. Починаючи з Python, SQL та баз даних і закінчуючи процесами в компаніях, методологіями розробки, оркестрації тощо. Звісно, я цю розмову з тріском провалив, бо на той час в мене не було потрібних знань. Але вона мені дала дещо дуже важливе, а саме — усвідомлення, чого мені бракує для досягнення мрії.
Порада
Якщо ви шукаєте першу роботу, не соромтеся перепитувати в технічного експерта те, що ви не почули або не розібрали, та занотовуйте все, чого ви не знаєте. Це пришвидшить ваш розвиток.
Як готуватись до технічної співбесіди
Якщо ви саме той, хто шукає свою першу роботу або хоче перейти в Data Engineering з інших спеціальностей, раджу звернути увагу на таке:
Знання мов програмування. Це може бути конкретна мова, яка використовується на проєкті або хоча б одна з найбільш популярних серед Data-спеціальностей — Python, Scala чи Java. Необхідно орієнтуватися в основах мови, її синтаксисі, мати досвід використання декількох бібліотек. Це важливо, щоб ви змогли вести діалог з технічним експертом. Наявність сертифікатів про вивчення тої чи іншої мови — це завжди плюс, що підсилить вашу кандидатуру. Для отримання практичних навичок рекомендую звернути увагу на сервіс leetcode, де є безліч завдань для апгрейду Hard skills.
Знання SQL. SQL (Structured Query Language) — це основний інструмент для роботи з базами даних, тому без базових знань цього інструменту вам буде надзвичайно важко (якщо взагалі можливо!) стартанути у Data-світі.
Так само як і з мовами програмування, є велика кількість курсів та джерел, які допоможуть вивчити SQL. Для практики можна знову ж таки використати leetcode.
Практичний досвід використання Git. Must-have інструмент в сучасному світі розподіленої розробки. Без базових навичок і знання команд працювати буде важко, тому бажано закрити це питання до того, як надсилаєте резюме рекрутеру. Основні знання можна вивчити з цього сайту.
Англійська мова. Це перша мова, яку повинна вивчити людина, що вирішила розпочати шлях в ІТ. Більшість якісної документації написана саме англійською і якісного перекладу може не бути. Комунікація з клієнтом та командою на стороні клієнта також відбувається зазвичай англійською.
Крім вищезазначених «китів», які можуть бути розглянуті на технічній співбесіді, будьте готові вести діалог на інші прийняті серед девелоперів теми. Наприклад, розуміння базових алгоритмів, починаючи з класичного bubble sort та простих структур даних; досвід використання Docker тощо. Також уважно читайте вакансію, на яку подаєтесь. Краще заздалегідь ознайомитися зі специфічними інструментами, які використовуватимуться в ході роботи.
Щодо live coding завдань — якщо вам пощастило і вас запросили на співбесіду без тестового, є великий шанс, що такого завдання у вас не буде. Хіба щось легеньке на знання мови. На прикладі Python: реверснути list/string, написати for loop, використати list/dict/.. comprehension, написати декоратор тощо.
Порада
Якщо не знаєте, як відповісти на конкретне питання технічного експерта, спробуйте дійти до правильної відповіді за допомогою логіки. Озвучте свій хід думок, це дасть змогу експерту оцінити напрям вашого мислення та, можливо, додасть вам певні «бали» під час оцінки вашої кандидатури після співбесіди.
Після отримання оферу
Що ж, у вас все вийшло — ви отримали свій перший офер без рабських умов. Що тепер? Все, тихенько сидимо і працюємо? Ні, це було б занадто банально.
Яку класну роботу ви би не мали, я раджу раз на півроку або рік проходити співбесіди, щоб не дати собі «заіржавіти». Це дасть змогу розуміти сучасні тенденції та тренуватися якісно проходити співбесіди, що знадобиться в майбутньому.
В моєму випадку найкурйозніші співбесіди відбулися саме під час пошуку першої роботи, тому порівняно з ними наступні були дуже навіть звичайні. Спробую трішки детальніше на цьому зупинитися.
Співбесіди на рівні Junior та Middle
Співбесіди на позиції рівня Junior та Middle дуже схожі на все, що ми розібрали вище, але з багатьма «але». «Кити» залишаються обовʼязковими, а от рівень володіння ними зростає з beginner до advanced.
Знання основної мови програмування повинно бути на досить високому рівні. Треба орієнтуватися в її тонкощах, розуміти, як писати чистий код, дотримуватися стандартів його написання тощо. Бажано знати кілька складних алгоритмів пошуку чи сортування, розуміти, як саме визначається складність алгоритмів (Big O notation) і так далі. Як і з мовою програмування, рівень знань та навичок використання SQL має бути на вищому рівні. Ви повинні бути готовими створювати важкі, комплексні запити до баз даних, орієнтуватися у синтаксисі та розуміти тонкощі роботи з базою даних.
На цьому рівні вже необхідні не лише базові знання у різних сферах, але і знання певних технологій та фреймворків, а також досвід їхнього практичного застосування. Грубо кажучи, потрібно не тільки знати SQL, але й мати досвід використання реляційних (MySQL, PostgreSQL тощо) та нереляційних (Redis, Cassandra, DynamoDB тощо) баз даних.
Також варто приділити увагу ETL-процесам та computation-фреймворкам. Наприклад, Spark — надзвичайно популярний, швидкий і доволі простий у використанні. Такий досвід точно стане вам у нагоді. Тому якщо досі його не маєте, сьогодні прекрасний день, щоб виправити це!
У наш час важко уявити роботу Data Engineer без використання хмарних технологій, тому на цьому рівні кандидат повинен мати досвід використання хмарних сервісів хоча б від одного з основних провайдерів (AWS, Azure, GCP). Тому краще подаватися на вакансію, де технологічний стек перетинається з вашим досвідом. Адже експерт точно спитає про сервіси, які часто використовуються на проєкті, на який вас розглядають.
Звісно, не забуваємо звертати увагу на такі речі, як Streaming, Workflow Orchestration і Data Quality. Без них ви матимете серйозний пробіл у CV та провалите цю частину технічної співбесіди. А ми тут якраз намагаємось цього уникнути.
Співбесіди на рівень Senior та вище
І на верхівці Data-айсбергу знаходяться спеціалісти рівня Senior та вище. Тут все просто: вам треба знати все, вміти за допомогою танців з бубном відновлювати продакшн, який впав швидше за все через ваші ж зміни, мігрувати дані звідусіль і у будь-які бази даних чи прямісінько у блокнот вашого менеджера. При цьому з серйозним виразом обличчя пояснювати користувачам базові речі.
Якщо ж відкинути жарти, то жартів тут нема і це все правда. Ну добре, добре...
Отже, фахівець цього рівня повинен володіти усім, що зазначено вище, але на ще глибшому рівні. При цьому нести більшу відповідальність, брати активну участь у житті проєкту, прийнятті рішень, онбордингу нових членів команди та підтримці членів команди Trainee-Middle рівнів.
Окрім базових речей від вас вимагатиметься:
- можливість швидко адаптовуватися і онбордитись;
- просунуте володіння інструментами та технологіями, які використовуються на проєкті;
- вміння поєднувати їх у єдину архітектуру.
Також важливим є бачення big picture проєкту: вміти зауважувати слабкі місця в коді та архітектурі, могти запропонувати вирішення тої чи іншої проблеми, оптимізовувати наявний код. А ще намагатися зменшити витрати на забезпечення життєдіяльності проєкту.
Не дуже очевидна річ, але на технічній співбесіді звертатимуть увагу і на ваші Soft skills — як саме ви відповідаєте, чи зможете виступати у ролі ментора для інших спеціалістів у команді тощо.
Висновки
Що ж, час підбивати підсумки. Data-напрямок цікавий і має безліч можливостей для підготовки. У вас є прекрасний вибір інструментів та ресурсів, які допоможуть успішно пройти технічну співбесіду. Головне — чітко визначити ціль і бути наполегливим.
Також не забувайте звертати увагу на умови контракту. Краще витратити більше часу і уважно його прочитати, ніж потім довго гарувати на проєкті, який не приносить задоволення ні у професійному, ні у фінансовому плані.
Data Engineer — затребувана професія на ІТ-ринку України та світу. Я вважаю, що в найближчому майбутньому ця ніша має гарні перспективи. Як зазначив Ігор Тимчук, VP, Head of Delivery Department в компанії N-ix — усі проєкти з часом стають Data-проєктами. Тому навчайтеся, не бійтеся роботи з даними, і ваші зусилля будуть винагороджені.
Успішної підготовки і насиченої кар’єри у світі даних!
13 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів