'Без data engineer-а цінність моделі аналітика прагне до нуля' - інтерв'ю з дата інженером Миколою Марковим

Привіт, сайт! Data Engineering стає все більш популярним, багато компаній поступово відкривають відповідні вакансії. У зв’язку з цим ми взяли інтерв’ю у Senior Data Science Engineer, Aligned Research Group LLC і викладача на програмах “Спеціаліст по великим даними” і “Data Engineer” Миколи Маркова про те, що повинні вміти data scientist-и і data engineer-и, чого їм найчастіше не вистачає і як знайти своє місце в аналізі даних.

- Розкажи про свій шлях в дата інженера. Чим тебе спочатку привернула область роботи з даними і чому замість такого популярного і привабливого Data Scientist ти став Data Engineer, про який тільки зараз починають говорити і розуміти його цінність, а також робити освітні програми?

Я починав працювати інженером-програмістом, писав код на Python досить давно, ще з університету.Правда, відверто кажучи, спочатку з математикою у мене в школі було не дуже. І коли Data Science почав формуватися, як окремий напрямок, я зрозумів, що це одна з тих областей, де люди реально змушують комп’ютери робити те, для чого вони призначені. Тобто не перекладати байтікі з одного місця в інше або не малювати красиві інтерфейси (я якось працював в веб-студії, корисний і цікавий досвід, але там далеко не від усіх проектів є хоч якась користь).

У цій сфері дійсно є глобальний загальнолюдський зміст, але хитрість в тому, що в ній потрібно непогано знати математику. Це було однією з важливих причин для мене не йти безпосередньо в data scientist-и, так як мені довелося б капітально змінити курс розвитку. Для аналітиків даних що Python, що Spark - це всього лише інструменти, а основа - математичний апарат, підбір параметрів, настройка моделей. Мені дуже подобалося програмування, щоб пірнути з головою в інший вир.

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

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

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

- З якими труднощами ти стикався в професійному плані, які виклики були на початку кар’єри і в подальшому?

Труднощі як у всіх - недосвідченість спочатку, доводилося дуже багато розбиратися з різними технологіями. Приходиш в нову компанію, у тебе зовсім змінюється стек. Пам’ятаю, кілька років тому, коли прийшов працювати в Mail.ru Group писати на Python, мене посадили 247 підтримувати скрипт, написаний на Perl (причому прикладом якісного коду я б його не назвав), який до цього я взагалі не знав, довелося вчити його з нуля.Такі речі трапляються нерідко, з іншого боку це дозволяє отримати досвід в різних сферах і по-різному поглянути на задачу.

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

- У чому ти бачиш переваги і недоліки роботи data engineer-му в порівнянні з data scientist-му?

Тут як в тій історії: будучи data engineer-му, ти розумієш програмування краще будь-якого data scientist-а, а статистику - навпаки.Виходить трохи сумно від того, що дослідженнями, математикою, підбором хитрих фич займаються інші люди. Але тут перевага data engineer-а в тому, що без нього цінність ось цієї моделі-прототипу, найчастіше складається зі шматочка коду у файлі на Python (і добре якщо на ньому, а не на якомусь R!) Жахливої ​​якості, який прийшов від data scientist-а і худо-бідно дає якийсь вихлоп, прагне до нуля. Без роботи data engineer-а цей код ніколи не стане проектом, ніяка бізнес-завдання не буде вирішена.Поки що це просто експеримент на коліні. Data engineer ж намагається це перетворити в продукт.

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

Тут рецепти, що і скрізь: конкурентоспроможна зарплата, соціальні “плюшки”, все як завжди.Зараз з кризою вийшло так, що дуже великій кількості людей стало вигідніше працювати віддалено на якусь зарубіжну контору: зарплата вище, можливостей побільше. Наші компанії опинилися в скрутному становищі, і, на мій погляд, єдине, що можна зробити - дуже ретельно підходити до відбору кандидатів і не боятися вкладати в тямущих хлопців. Може і не варто наймати купу студентів, які ще вчора вивчали лінійну алгебру, а краще витратити більше бюджету і найняти пару хороших фахівців, які можуть вирішувати конкретні бізнес-завдання. Приклад: припустимо, у нас є магазин, і ми хочемо побудувати рекомендаційну систему для сайту. Тоді розумно цілеспрямовано шукати фахівців з цієї серії. Замість того, щоб розмінюватися на людей, які почули десь, що Data Science зараз в тренді і хочуть піти туди працювати, а на ділі не завжди тягнуть навіть на junior’а.

- Чому ти вирішив зайнятися викладацькою діяльністю?

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

Співпраця з хлопцями з Newprolab в рамках викладання почалося з того, що я був на першому наборі курсу “Спеціаліст по великим даними”, і мені тоді не дуже сподобалося, як викладали програмування, сильно не вистачало інженерних подробиць. Я підійшов до хлопців, запропонував свою допомогу, ну і понеслося.Тепер ось викладаю Python.

- Розкажи про свій підхід до викладацької діяльності.Що, на твій погляд, найважливіше в процесі навчання програмуванню й аналізу даних?

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

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

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

Хитрий питання. Зараз я працюю з дуже різношерстої аудиторією: на курс з аналізу даних приходять як люди з топ (і не дуже) менеджменту, які намагаються зрозуміти, що це за машинне навчання і як його застосувати в бізнесі, так і інженери з досвідом, які вже вміють кодіть, але ще не знають, як ці навички на 100% застосувати в аналізі даних. У підсумку виходить, що першим дуже складно програмувати, тому що вони це ніколи в житті не робили, а другим потрібно згадати математику, буквально починаючи з першого курсу університету. Та й набір інструментів для аналізу даних часто досить сильно відрізняється від стандартного набору типової ІТ компанії на ринку, для слухачів курсу це теж челлендж.

- Як тобі вдається дотримуватися балансу в викладанні між цими групами з різними бекграунд?

Треба віддати належне організаторам в тому, що коли люди починають працювати в команді, одні допомагають іншим, і найчастіше саме такі різношерсті команди добре спрацьовуються: люди вирішують завдання з різних сфер і підтягують один одного на більш-менш середній рівень. Потім, після того, як вони написали якісь базові речі на Python, вирішили кілька лабораторних разом, люди гуртуються, відчувають себе впевненіше. Також свою роль відіграє те, що, на відміну від універу, тут люди зібралися наживо вивчати конкретну проблему і витрачають великий шматок свого часу на неї. А коли ти витрачаєш на щось багато часу і сил, воно стає важливим, і ти щиро хочеш вникнути в це і “дотиснути”.І так, я теж вважаю, що плата за курс - це додатковий стимул при навчанні. Хоча безкоштовні хороші курси теж є, взяти хоч той же курс від ODS (я про нього трохи пізніше ще розповім).

- З твоїх спостережень: будь soft і hard skills часто не вистачає як початківцям, так і досвідченим data scientist-ам і data engineer-ам, щоб стати дійсно висококласними фахівцями?

Мені здається, я вже змирився з тим, що data scientist-и не повинні вміти дуже добре програмувати, це не їх робота. Хоча до сих пір є деякі люди і курси, які вважають, що ось data scientist повинен вміти не тільки моделі навчати, але і код ідеально писати, візуалізації малювати, Пайплайн будувати, презентації робити. На ділі ж є різні завдання під різні скіли. Хоча, зрозуміло, від моделі, написаної на дошці маркером або в зошиті великого толку не буде, це все-таки повинен бути якийсь код, щось краще, ніж табличка з макросами в Excel.

З інженерами ситуація така, що від них не потрібно глибокого розуміння математики і того, як ці моделі працюють. Але щоб data engineer-и могли ефективно ці моделі перетворювати в продукти, на мій погляд, їм потрібен досвід роботи в технологічних компаніях.Для мене одна з найбільш базових проблем з scientist-ами і джуніор-інженерами в тому, що вони взагалі не знають, як зазвичай вибудовується робочий процес. По-хорошому, повинен бути code review, код повинен зберігатися в системі контролю версій, continuous integration і т.д.Звичайно, як я вище сказав, очікувати, що data scientist-и будуть все це добре знати, не варто. Але інженерам от не завадить. Хоча ситуація така, що навіть у тямущих інженерів, що працюють в технологічних компаніях, не завжди ці навички є, або через те, що вони вибудовували цю інфраструктуру з нуля, ні на кого не орієнтуючись, або тому що поруч не виявилося потрібних людей, хто б пояснив, чому варто робити саме так, а не інакше.

- Якими Лайфхак ти можеш поділитися з початківцями в роботі з даними як в плані вивчення області, так і в плані побудови кар’єри?Розкажи про твоє бачення оптимального шляху в аналіз даних.

Щодо вивчення області, я можу вкинути трохи нахабного піару: в Росії є дуже гарне Data Science ком’юніті - Open Data Science, там є ресурс в Slack з 6500 людьми, багато з яких завжди готові допомогти, так що треба цим користуватися, особливо на старті.Звичайно, обов’язковий скилл - англійська мова, якщо він кульгає, то потрібно насамперед підтягувати його, тому що, незважаючи на старання видавництв, кращі книги з аналізу даних все ще англійською.

У плані побудови кар’єри, причому не тільки в Data Science, а в будь-якій сфері зараз дуже важливий навик - вміння людям пояснювати, як працює той, що ти зробив.Уміння представити свою роботу надзвичайно важливо, особливо для data scientist-a. Як я вже говорив, модель написану на аркуші паперу ніхто не зрозуміє, інша справа, коли є намальований графік, наочна презентація. Я розумію, що є інтроверти, які хочуть сидіти в кутку, щось кодіть або обчислювати, але краще навчитися себе пересилювати хоч іноді.

Відносно data engineering-а все ще хитріше, тому що у компаній, які зараз починають вибудовувати у себе Data Science підрозділи вже є всередині якісь IT-процеси, які налаштовані в іншу сторону. У них вже давно є якийсь продукт, IT-департамент, який підтримує сайт / сервіс і періодично акуратно на нього закидає якісь нові фічі так, щоб нічого не впало. Причому чим старше компанія, тим закостенілі в ній IT-процеси, більше всякого legacy, весь код строго проходить 10 стадій code review, мерджітся не раніше, ніж через 10 днів після того, як він залитий і т.д. Це хороші практики для побудови стабільних продуктів, але погані для побудови Data Science інфраструктури. Аналіз даних змінюється активно, ця область вимагає експериментування: швидко зібрав на коліні модельку, запустив проект, дивишся як воно там реагує, щось підправив.

Виходить, що з точки зору інженерів крім уміння продавлювати потрібні ідеї, потрібно ще й уміння інтегруватися в існуючі інфраструктури. Наприклад, в компанії, на яку я працюю, до того, як у нас з’явилася нормальний data engineering, просто не було адекватного діалогу між Data Science і Operations. Більш того, там була дуже стара інфраструктура для аналізу даних і своя, написана за багато років, build-система. І коли ми почали намагатися вибудовувати Data Science навколо цього, то зрозуміли, що оточення нас дуже сильно стримує. У підсумку нам довелося силою досить маленької команди вибудовувати компанію всередині компанії, тобто невелику свою подінфраструктуру. І, мені здається, це не тільки наша локальна проблема, це те, що діється у всіх компаніях, які починають впроваджувати подібні речі.

Ну і для ефективності треба навчитися розмовляти з людьми. Звичайно, це навички трохи в сторону менеджменту, але цими речами так чи інакше доведеться займатися. Сфера досить нова, повсюдно відбувається перехід до нових практик, і люди, які можуть вибудувати цей перехід з legacy на data driven інсайти, пробити цю закостенілість, завжди будуть в ціні і пошані.

Корисні ресурси для data engineer десятків від Миколи Маркова

книги

  • Data Science from Scratch (Joel Gras) - по суті це введення в Data Science для тих, хто вже вміє писати на Python. Особлива хитрість книги в тому, що вона дає розуміння, в ній не використовується типовий набір інструментів (Pandas, Numpy, Tensorflow), там розжовуються математичні концепції з голим кодом на Python. Так, він працює повільно, але там найякісніший код з точки зору написання і логіки. Є російською, але краще читати англійською.
  • Programming Collective Intelligence (Toby Segaran) - дуже цікава, добре дає огляд базових речей, але на відміну від попередньої, в ній код на Python дуже поганої якості. Добре годиться для натхнення.
  • Big Data (Nathan Marz) - автор вибудовував аналітичні системи у великих компаніях типу Twitter, створив Apache Storm. По суті, в книзі описується багато з того, що зараз чекають від data engineer десятків і data архітекторів. Саме він придумав концепцію лямбда-архітектури, яка об'єднала в собі batch-обробку даних і real-time processing. У книзі пояснюється, як практично з нуля вибудовувати все. Код на Java, але все одно дуже корисно.
  • Python Machine Learning (Sebastian Raschka) - на відміну від першої книги в ній описується аналіз даних в стандартному інструментарії - Numpy, Pandas. Дуже хороша книга з точки зору того, як речі робляться на більш серйозному рівні.
  • Наочна математична статистика (Михайло Лагутін) - крім чистого написання коду інженерам доводиться робити і простенький статистичний аналіз, щоб не відволікати data scientist-ів. Відмінна книга для базового розуміння що основ математики, що статистики.

Курси

  • Andrew Ng`s Machine Learning - знаменитий курс на Coursera від Andrew Ng, який повинні закінчити всі.Правда, мені не дуже подобається пара речей в ньому, наприклад, те, що там використовується Matlab (який в реальному розробці майже не зустрічається), ну і ще там досить сильно розжовані домашні завдання.
  • Введення в машинне навчання від Костянтина Воронцова - непоганий курс з аналізу даних, оскільки там не настільки велике поглиблення в сферу, не про тонкий тюнінг якогось XGBoost, а деякі базові принципи машинного навчання, буде корисно і інженерам даних теж.
  • Відкритий курс машинного навчання від Open Data Science - курс від нашої спільноти на Хабре, цілком непоганий, додатковий плюс - всіх людей, що створюють цей курс і розбираються, можна легко знайти в Slack, їм можна написати, задавати питання, що істотно полегшує навчання.
  • Навчання Data Engineering'у від хлопців з Newprolab - я тут теж буду трохи викладати.Думаю, має вийти досить цікаво і корисно.

І ще, мало не забув - ми з хлопцями організуємо Data Science Breakfast - це посиденьки раз в тиждень з ранку компанією в кафе на Проспекті Миру, де часто різношерста публіка, але обговорюються цілком цікаві аналітичні питання і встановлюються контакти.Заходьте на ресурс #data_breakfast в ODS, там все є!



ЩЕ ПОЧИТАТИ