Упс! Не вдала спроба:(
Будь ласка, спробуйте ще раз.

Як стати Machine Learning Engineer: власний досвід

Олександр Тартачний
Олександр Тартачний журналіст
27 березня 2024 14 хвилин читання

Назарій Високінський — інженер машинного навчання в Intelliarts. До того працював над iOS-розробкою, але освоїв концепти Data science. Ми поговорили про зарплати та перспективи галузі, створення власних застосунків, світчинг в IT та навички, необхідні ML-інженеру

Кар'єрний шлях у Machine Learning: особистий досвід та поради Кар'єрний шлях у Machine Learning: особистий досвід та поради

Про перші кроки у програмуванні

Програмуванням я почав цікавитись ще у студентські роки. Я навчався у медичному університеті. Спершу це була загальна цікавість. Я пробував те, з чого часто починають новачки — HTML, CSS, JavaScript, згодом Python, але кидав за кілька тижнів. 

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

Серйозно за вивчення програмування я взявся у 2020-му, коли був на інтернатурі з психіатрії. Я хотів стати психотерапевтом, але через карантин неможливо було записатися на курси, які я хотів проходити.

Тоді у мене з'явилася потреба і бажання щось зробити зі своїм життям, взяти все під контроль і я повернувся до давньої ідеї. На той момент у мене був старенький MacBook і я дуже завжди любив техніку Apple. Тому подумав, що ідеальним варіантом буде навчитися робити програми на iPhone. 

Про програмування на Swift та власний застосунок

Я вивчив мову Swift самостійно, я не ходив ні на які курси, просто вивчав посібник від Apple з програмування на Swift. Ще проходив безкоштовний стенфордський курс на YouTube. 

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

Тому знайшов один такий сайт, який називається Teach Yourself Computer Science, де вивчав computer science та проходився по кожній книжці, по кожному курсу, який вони пропонували вивчити. Намагався засвоювати ці дисципліни паралельно до того, як вчився робити програми під iOS.

За чотири місяці свого вивчення програмування я створив свою першу програму під iPhone. Це був трекер особистих видатків і доходів.

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

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

Я хотів мати вафельну діаграму, на якій кількість певних емодзі представляє відсоток грошей витрачених на цю категорію. Наприклад сім емодзі таксі означало 7% бюджету на транспорт тощо. 

Після написання я виклав її у AppStore. Її ціна була $2. Я отримав кілька завантажень, переважно від знайомих людей, які хотіли мене підтримати. З оновленням iOS мені потрібно було внести у неї якісь зміни, але на той момент я вже мав стабільну роботу і не хотів до неї повертатися.

Тим паче з досвідом я зрозумів, наскільки трешовий код я написав. Мені було соромно просто на це дивитися.

Про пошук першої роботи 

У березні 2021-го я запустив свою програмку в AppStore. Під час розроблення програми, яке тривало десь три місяці, я вивчив ті концепції, які має знати програміст-початківець. До моменту, поки я остаточно не засвоїв їх на базовому рівні, я навіть не відчував спроможності відгукуватись на вакансії.

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

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

Тому я вирішив довчати те, що зустрічав у описах вакансій, а вже тоді почати пошук роботи. Це, мабуть, не найкраща стратегія. Наступні два з половиною місяці я дивився відеокурси на YouTube та читав статті. Моя мотивація поступово почала падати. Ймовірно в цей момент я міг покинути програмування, оскільки не писав своїх програм, а лише читав теорію. 

Далі мені пощастило. Першу свою співбесіду я завалив, оскільки компанія шукала Strong Junior, що на той час було вище моїх вмінь. Першу половину співбесіди я непогано відповідав на запитання, але в другій половині, коли почалось запитання по шаблонах проєктування та загальних концепціях, я знав їх, в певному сенсі, завчено, а не з досвіду. Зараз я відповідав би не так, як про це пише в статтях, а як я це використовував в роботі. 

В той же день мені скинули пропозицію на стажування. яке було моїм стартом в ІТ. Було 31 травня, 7 вечора. У цій вакансії потрібно було зробити тестове завдання до півночі 31 травня. Тобто в мене залишилось 5 годин. Я не вірив у свої сили, що я можу щось зробити за такий час. Однак мій брат, сказав мені «Назаре, ти все зможеш, роби собі каву і пиши код». 

Дійсно за 5 годин я скинув посилання на GitHub з розробленим тестовим завданням.

Через тиждень мене запросили на інтерв'ю. І так і почалась моя кар'єра. З того, що я не вірив у свої сили, але мені дали легке запевнення, що, я зможу. 

Згодом у компанії я виріс з iOS Engineering Intern до продуктового інженера.

Про перехід в Machine Learning та магістратуру в УКУ

Я вже згадував, що пробував вивчати Python. Моєю ідеєю було працювати в Data Scientist. В УКУ була програма, магістерка з наук про дані. 

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

Тому я пішов іншим шляхом, iOS-інженерію, але десь за рік оця давня мрія про Data Science почала відновлюватися. 

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

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

Мені відгукується Data Science через любов до організованості інформації. Мені подобається, коли все там у своїх чітких категоріях.

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

Про навчання в УКУ

Навчання в УКУ дуже близьке до реальних проєктів. Забігаючи наперед, мій перший досвід вже на посаді ML-інженера в теперішній компанії був подібний до того, що я робив в УКУ на домашніх завданнях.

Навчання, окрім знань, тобі достатній фундамент.

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

Вони додають впевненості в собі. В тому, що я знаю, що я роблю і що дані потребують використання такого алгоритму.

Про типовий день ML-інженера

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

Уявімо, компанію зі Сполучених Штатів, яка має величезний набір даних на сотні гігабайтів і з мільйонами рядків даних. В неї є якісь дані про індустрію, про ринок, чи про населення країни. На їх основі. вони хочуть побудувати припущення, наприклад,  хто з цих людей більш схильний полетіти на відпустку на Гаваї. Це допомагає їм налаштовувати рекламу на правильну аудиторію. 

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

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

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

Переваги та недоліки роботи з Machine Learning 

Переваги: 

  • 1
    Часто є можливість повністю самостійно побудувати ціле рішення. Якщо в багатьох інших галузях, як backend-розробка чи mobile, існують великі команди, які розробляють певне рішення, то в Data Science дуже часто команди малі і для багатьох проєктів достатньо одного ML-інженера або Data Scientist’а, щоб його втілити. Це те, чого мені не вистачало в роботі iOS-розробником. Я працював вже з великою кодовою базою на сотні тисяч рядків коду і немає можливості осягнути своїм розумом те, що там дійсно відбувається. В машинному навчанні до тебе приходить клієнт і ти починаєш писати весь код з нуля й ти маєш можливість отримати це задоволення від того, що ти побудував повне рішення. 
  • 2
    Ідеальна робота, для тих, хто любить все впорядковувати. Якщо вам цікаво працювати з даними, то цей напрям буде приносити задоволення.
  • 3
    Усі проєкти різні. Якщо ти працюєш в традиційній веб- або мобільній розробці. то ти часто будуєш так звані CRUD-програми. у кожному проєкті вони доволі схожі. В ML кожен проєкт чимось інший. Перед тобою ще на найпершому етапі стоїть виклик: зрозуміти як працює цей бізнес і чому цей датасет є саме таким, яким він є. Дані можуть бути дуже неочевидними. 

Недоліки:

  • 1
    Через те, що кожен проєкт це невизначеність. Це може приносити певний дистрес. В традиційній розробці ти можеш напланувати собі завдань на два тижні наперед. В ML я можу не знати, яку гіпотезу я валідуватиму за годину через те, що те, що я роблю зараз може дати мені якийсь інсайт, який повністю змінить завдання на наступні дні. Ця невизначеність може бути неприємною. 

Про перспективи в Data Science та зарплати 

В Україні є проблема з вакансіями в цій галузі. Допоки я не потрапив на свою теперішню роботу, я певний час шукав вакансії. Пригадую, я подавався на якесь стажування у якому був конкурс 300 людей на місце. 

Єдине, що я можу рекомендувати — якнайбільше соціалізуватися. Їздити на літні школи, ходити на хакатони, подаватись на стажування. Дуже теж рекомендую магістратуру науки про дані.

Дійсно, великі рішення переважно зосереджені в Кремнієвій долині. Але вони пов'язані переважно з генеративним штучним інтелектом. Це достатньо новий напрямок. 

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

З зарплатами в галузі все дуже добре. Вони не є вищими вдвічі, проте, з того що я бачу часто на 10-30% вищі, ніж середні по software engineering індустрії.

Що читати та вивчати тим, хто хоче займатись машинним навчанням 

Hard-skills 

Я дуже рекомендую сайт Codecademy. Вся ML-індустрія дійшла до консенсусу, що потрібно користуватись Python і весь Data Science пишеться Python. Тому вам потрібні сильні навички програмування цією мовою

Також я б рекомендував подивитися короткі курси на YouTube від 3Blue1Brown. Там є курси з математики. Це есенція лінійної алгебри, математичного аналізу та кілька відео по нейронних мережах.

Що таке нейронна мережа? 

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

Ці знання можуть не бути напряму залучені в роботі, але вони дуже-дуже допомагають в тому, щоб розуміти взагалі, що ти робиш. 

Ще раджу сайт Teach yourself computer science, пройтися по курсах і зрозуміти загальний принцип роботи баз даних та мереж.

Soft-skills

Я вважаю, що найважливіший софт-скіл — англійська мова. Існує багато індустрій і ІТ серед них, в яких можна отримати роботу лише через відмінне знання англійської.

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

Комунікаційні навички. Їх не так просто прокачувати — недостатньо пройти якийсь курс, подивитися відео в інтернеті, як комунікувати.  Але варто вчитись вміти передавати свої думки чітко. 

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

0
Прокоментувати
Інші матеріали

Ukrainian TechComms Days 2024 — унікальна конференція про комунікації в tech-індустрії

Ольга Топольська 15 годин тому

Призовий фонд $100 тисяч: в Україні відбувся перший ETHKyiv хакатон

Ростислав Бортман 17 годин тому

Як збільшити продуктивність команди розробників. Якісна мотивація в 2024 році

Даніелла Шихабутдінова 17 годин тому

Як підготувати IT-бізнес до виходу на міжнародний ринок

Максим Олійник 28 червня 2024 11:34

Чи може сервісна економіка зробити світ багатим?

Олександр Тартачний 27 червня 2024 14:40