Как добиться успеха в инженерии данных без маршрута из учебника

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

Сделайте шаг назад и представьте себе это — четыре компании, три года и куча данных. Это была неплохая поездка, и не просто линейная, изображенная на графике.

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

Тогда есть цель. Это критично, но о боже, как это неуловимо… Я много раз думал, что принял правильное решение, следуя за деньгами или бывшими коллегами, но если работа вас не мотивирует, лучше найти новую среду, которая действительно мотивирует. вы чувствуете, что оказываете влияние.

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

У нас есть много возможностей для изучения, так что давайте начнем!

Образование

Когда мне было 15 лет, я выбрал разработку программного обеспечения в качестве направления обучения в Junior College (MBO4) в Нидерландах. Оглядываясь назад, я могу сказать, что мне не нравилось создавать веб-сайты или приложения на C#, и я немного интересовался программированием на Java. Моя стажировка в то время была связана с веб-сайтами, в основном с использованием PHP и Jquery. Это просто не моя чашка чая.

После выпуска в возрасте 19 лет у меня была возможность продолжить работу на той стажировке, но у меня не было амбиций начать жизнь с 9 до 5. Вместо этого я взял годичный перерыв и переехал в столицу Южной Кореи, Сеул, где провел первые годы своего 20-летнего возраста, пытаясь понять, чем я действительно хочу заниматься в жизни.

Путешествие

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

Для меня это был первый раз, когда я был по-настоящему один. Жизнь в новой стране с совершенно другой культурой, языком, едой и людьми.

Было много вещей, которые я смог узнать, что в конечном итоге заложило мой фундамент.

Упорство

Оставить свою семью с 8-часовой разницей во времени, оказаться в стране, которая не говорит на моем языке, а также полностью полагаться на себя, было довольно сложной задачей. Тем более, что раньше я никогда не жил один.

Процветание вне зоны комфорта

Есть много причин чувствовать, что вы покидаете свою зону комфорта, когда переезжаете в другую страну;

  • Изо всех сил стараться общаться с незнакомцами, чтобы завести новых друзей
  • Не бояться общаться на их языке — каким бы ломаным он ни звучал из ваших уст
  • Работа неполный рабочий день в другой культуре

Пробовать что-то новое

Когда дело доходит до новой страны, все, что вы там испытываете, является чем-то новым. Если ты не собираешься ничего пробовать, лучше не ходи…

От еды до культуры, до взаимодействия с другими, даже климат может быть чем-то новым. Если вы приехали из теплой страны и переезжаете в заснеженную страну, то это тоже считается попыткой чего-то нового.

Начало моей новой карьеры

Я вернулся на родину в конце 2018 года, не имея возможности искать работу из-за приближающихся праздников. Смахнул пыль с моего резюме и начал подавать заявку в январе 2019 года. В том же месяце я получил два предложения: одно в качестве разработчика PHP и одно в качестве разработчика SQL.

Теперь, зная мое знакомство, вы знаете, что я не очень любил PHP, и эта компания не хотела нанимать другого разработчика, поэтому у меня не было рекомендаций в качестве младшего PHP-разработчика.

Что касается роли разработчика SQL, то она находилась в индустрии почтового маркетинга, у меня была хорошая команда, Senior и Medior, которые могли направлять меня, а также играть с (большими) данными, чем я когда-либо раньше.

В конце концов я согласился на эту роль, и мне пришлось изучить Selligent, поскольку это был наш инструмент автоматизации почтового маркетинга, а также освоиться с (T-)SQL.

Чувствовать себя потерянным

Одной из самых больших проблем для меня было завоевать доверие менеджеров проектов, чтобы я мог работать над проектами. Проблема заключалась в том, что мы работали с крупными клиентами, а Selligent на самом деле не поддерживает CI/CD, проверку кода и т. д. Это означало, что все, что я делал, было трудно проверить другим до того, как оно было выпущено.

Вдобавок ко всему, мои непосредственные Senior и Medior были сильно перегружены, и у них было слишком мало времени, чтобы принять меня на борт, а это означало, что я чувствовал себя обделенным, не в состоянии внести свой вклад. Прошло почти полгода, прежде чем один из менеджеров проектов, наконец, последовательно начал давать мне проекты.

Почему это заняло так много времени? Компания просто не предоставила моим коллегам достаточно места, чтобы должным образом оценить работу, которую я мог бы выполнять. И даже несмотря на то, что я еженедельно просила получить работу, которую могла бы сделать, мне ничего не приходило в голову.

Оглядываясь назад, я думаю, что мог бы попросить следить за проектами, которые делал Медиор, без необходимости запуска моего кода в производство, тогда я, по крайней мере, мог бы учиться на том, что я сделал, + проверить это на том, что он сделал.

Получение уверенности и доверия окружающих

После того, как я смог проявить себя, я начал расти гораздо быстрее. Наслаждаюсь работой, которую мне поручили, и рад узнавать что-то новое.

Большая часть моих знаний SQL пришла из тех дней, нам приходилось писать оптимизированные запросы, так как платформа, которую мы использовали, давала только 2-минутные слоты перед тем, как убить запросы. Часто требуются временные таблицы для обработки длинных сложных запросов.

По сей день я все еще форматирую свой код SQL, как меня там учили, просто мне это кажется более естественным. Начальные запятые, 1=1 в предложении where, обе оптимизации для отладки, поскольку (не)комментирующие строки становятся намного более гладкими.

Крайне важно иметь за собой команду, которая готова поверить в вас, поскольку это коренным образом изменило ход моего роста, когда я получал проекты и освобождал место в повестке дня моих коллег, взяв на себя часть их задач.

За 12 месяцев я смог вырасти от младшего до среднего разработчика SQL, хотя я пропустил 4–6 месяцев роста.

Влияние COVID-19

Когда разразился COVID-19, я осматривался на рынке, и у разработчиков SQL было не так много вакансий в Нидерландах, особенно если вы ищете за пределами индустрии электронного маркетинга.

Большинство вещей, которые прошли мимо меня, были Backend Developer, что здесь означало PHP, Java, .NET, C# или C++. Языки, которые меня не слишком интересовали.

Просматривая Reddit, я часто натыкался на красивые информационные панели, созданные аналитиками данных или специалистами по данным. Это зажгло во мне свет, который побудил меня изучить Python.

Я начал экспериментировать с некоторыми данными компании, визуализировать их и показывать менеджерам проектов в надежде, что это принесет им что-то ценное. Мне часто возвращали вопрос: «Как вы думаете, почему именно эти данные полезны?» Простое построение диаграммы отличается от предоставления отличной информации. У меня 0 бизнес-знаний, и, честно говоря, я понятия не имел, какие действия можно предпринять на основе определенных типов знаний, генерируемых данными.

Начав общаться в моей компании с командой данных, спрашивая, «как» развивать этот навык, я понял, что этому либо учат в школе, либо вы изучаете его на своей работе в качестве аналитика данных.

После изучения Python в течение примерно 2 месяцев мой коллега, инженер данных, покинул компанию, и, поскольку я уже проявил интерес к данным, команда спросила меня, заинтересован ли я в том, чтобы присоединиться к официальному заявлению о приеме на работу вместе с внешним заявители.

Я был в восторге, так как уже пытался найти более безопасную карьеру, чем моя нынешняя, и хотя меня только что повысили до Medior SQL Developer, я не возражал вернуться к младшему титулу, чтобы узнать что-то новое.

Была проведена домашняя оценка, и, поскольку я все еще был новичком в Python, мне потребовалось некоторое время, чтобы завершить около 10 часов кодирования + развертывание в GCP (получил учетную запись песочницы от компании для развертывания) и еще 6 часов на подготовку презентация, которую вы могли бы дать клиенту, объясняющая, какие решения могут быть приняты на основе (местных) данных о погоде.

Излишне говорить, что после нескольких тяжелых вечеров я смог получить работу. Очень рад присоединиться к команде моего коллеги, которая помогала мне с вопросами, связанными с данными для самостоятельного изучения.

Когда впереди вас ждут тяжелые времена, убедитесь, что у вас есть план побега. Моим было продвижение по лучшей, более интересной карьере, чем у меня в тот момент. Я и не подозревал, сколько позитива это принесло мне, когда я нашел свое увлечение, а также в финансовом отношении. Рост был велик.

Погружение в инженерию данных

Я понятия не имел, во что я ввязался, когда пришел в команду данных, но я был очень взволнован тем, что могу делать больше, чем просто SQL, возможность делать Python + SQL дала мне много разнообразия в моей повседневной жизни. дневной работы, а также в состоянии расти в новых областях.

Команда в то время тоже была довольно молодой и все еще росла. Опираясь на лучшие практики, я вместе с коллегой изо всех сил старался создать руководство по встроенным функциям Python, таким как использование декораторов, группировка, лямбда-выражение и многое другое.

Первая работа — Мой Фонд

Мне очень понравилось играть и узнавать больше о Python, я провел бесчисленное количество вечеров из чистого честолюбия, играя в небольшие сторонние проекты или улучшая руководство по лучшим практикам.

Наш стек данных располагался на Google Cloud Platform (GCP)

  • хранилище данных; Bigquery, подключение к дашбордам
  • озеро данных; Сегменты облачного хранилища, в основном в качестве целевой зоны + резервные копии
  • Извлечение потоков; Облачные функции или Cloud Run, если нам требуется более длительное время вычислений.
  • Крон; Облачный планировщик

Преобразования, которые мы сделали полностью в Bigquery, в то время с запланированными запросами.

Это был отличный стек, в который можно было вникнуть, не слишком сложный, и в то же время он заложил отличную основу.

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

Вторая работа — AI вместо BI

По личным причинам я решил перейти в другую консалтинговую компанию, работающую над проектом для стартапа.

Их стек данных был в Azure и гораздо менее привязан к BI по сравнению с моей первой работой. Не было информационных панелей или аналитиков данных, вместо этого я работал вместе с инженерами по компьютерному зрению.

Создание потоковых конвейеров для обработки изображений, дедупликация на основе хэша изображения, размещение метаданных в Postgres и файла в хранилище BLOB-объектов, а также потоковая передача определенных изображений в другие модели ИИ, необходимые для работы нашей модели e2e.

Мы даже создали собственный инструмент для маркировки, чтобы обеспечить точность наших изображений, поскольку AmazonTurk не очень хорошо работал для нас. Поддержание качества данных имело первостепенное значение — если мы не были уверены в маркировке партии, мы просто не включали ее в набор данных.

Я многому научился, строя всю архитектуру данных в основном самостоятельно, имея старшего инженера по компьютерному зрению в качестве спарринг-партнера, а также помогая инженерам по компьютерному зрению сосредоточиться на моделях. Использование другого облачного решения, ежедневная работа с виртуальными машинами, работа с потоковыми данными, а не только с пакетными данными.

Наш вариант использования не требовал запуска дорогостоящего кластера Kafka, он просто работал на виртуальной машине с RabbitMQ + Celery для одновременной обработки всех изображений, обрабатывая от десятков до сотен тысяч изображений в день.

Мой старший инженер по компьютерному зрению научил меня тонкостям Docker + docker-compose, работе с виртуальными машинами, а не локально на моем собственном ноутбуке, и использованию удаленного подключения Vscode для подключения к виртуальной машине. Я также перешел с Flask на FastAPI, возможность протестировать API и увидеть результаты изображений в документах была чрезвычайно полезной!

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

Найти наставника сложно, это часто должно происходить само собой, но это часто недооценивают, и это было чрезвычайно важно для моего карьерного роста.

Размышление о моих мягких навыках

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

Упорство

Как и в случае с моими путешествиями, область инженерии данных не избавлена ​​от этих проблем. Возможно, вы работаете над очень большим проектом, требующим извлечения данных в реальном времени из нескольких источников. Неудачи может быть много, и прогресс может быть медленнее, чем ожидалось.

Настоящая проблема заключается в управлении ожиданиями и, что еще более важно, доверием. Речь идет о том, чтобы убедить заинтересованные стороны продолжать верить в важность проекта, даже если он требует больше времени и ресурсов, чем планировалось изначально. Потому что, в конце концов, успех любого проекта зависит не только от навыков или опыта, но и от непоколебимого стремления довести его до конца.

Настойчивость в этом смысле больше, чем просто умение; это основа любого успешного начинания, будь то адаптация к новой стране или управление сложным проектом по обработке данных.

Процветание вне зоны комфорта

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

Возможно, вы являетесь гуру SQL, но ваша команда требует от вас изучения Python для создания DAG, или вы усердно работали над интеграцией потока ETL в Mage, но теперь вам нужен конвейер CI/CD, который обрабатывает развертывание ваша кодовая база.

Все это требует, чтобы вы вышли, чувствовали себя некомфортно и научились новому навыку. Мне нравится выходить из зоны комфорта, потому что это означает, что я узнаю или испытаю что-то новое.

«В динамичном мире данных реальный рост происходит на границе ваших схем, где неоднозначность встречается с творчеством. Процветание вне зоны комфорта — это не выбор, а необходимый шаг к инновациям».

Пробовать что-то новое

Пространство данных постоянно меняется, новые технологии появляются каждый день, и всего 5–10 лет назад люди думали, что Hadoop никуда не денется, но с тех пор Spark кардинально изменил пространство распределенных вычислений.

То же самое касается локальной и облачной среды, того, как ИИ ежедневно улучшается, и даже новых форматов файлов, таких как Delta, которая выпустила свою версию 1.0.0 еще 25 мая 2021 года. Он становится все более популярным с каждым днем, что также повлияло новые фреймворки, такие как Iceberg, использующие формат файла Delta.

Даже в крупных фреймворках, таких как Airflow, есть множество других инструментов оркестровки, таких как Prefect, Mage и Dagster.

Испытание новых технологий и создание доказательств концепций для проверки их полезности в ваших бизнес-кейсах — важнейший аспект Data Engineering.

Но не попадайтесь в ловушку постоянной погони за новой популярной технологией. Речь идет об улучшении стека данных. Он должен быть значимым, эффективным и информативным.

Поиск цели в моей карьере инженера данных

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

До моей нынешней компании я работал в 3 консалтинговых компаниях, 2 в области маркетинга и 1 в более широком смысле, имея проект в стартапе ИИ в индустрии моды. От всех этих компаний я многому научился, но, в конце концов, это было не для меня…

Разговаривая с женой и глядя на свои основные ценности, я понял, что на самом деле меня больше всего заботит использование моих навыков для «большего блага» в большей степени для общества, чем для прибыли компании.

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

Это было похоже на невероятную миссию с реальным положительным социальным воздействием. Потенциально спасая конечности пациента, если не их жизни.

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

Заключение

Приземлился в своем текущем пункте назначения — самое время подумать о своем путешествии.

Вещи, которые я хотел бы знать заранее;

  1. Профессиональные навыки › Образование. Создание правильных проектов дает вам правильные навыки, необходимые для первой работы.
  2. Навыки межличностного общения редки, важны, но редки, чем дальше вы продвигаетесь по карьерной лестнице, тем важнее они становятся. К счастью, мы можем разработать их заранее, задолго до начала нашей карьеры. Вы можете развивать их во время путешествий, как я, или обучая своих сверстников в колледже, быть в настоящем и время от времени размышлять над тем, какие мягкие навыки у вас уже есть.
  3. Нетворкинг важен. Если бы я никогда не говорил со своей командой по работе с внутренними данными и не показывал свою страсть к данным, они бы никогда не подумали обо мне, когда их коллега уйдет. (Забавный факт, когда я уходил из компании, вернулась та же самая коллега, так что не сжигайте мосты, она смогла вернуться, сохранив свои контакты)
  4. Будьте разборчивы в своей первой работе; да, вы должны войти в дверь, но вы также должны убедиться, что у вас есть сложные навыки, необходимые для будущих возможностей. Убедитесь, что ваш первый стек данных надежен. Облачное решение с переносимыми платформами, такими как Spark и Kafka. Компания, которая использует CI/CD, например GitHub Actions, и инструмент оркестровки, такой как Prefect, Mage или Airflow. Убедитесь, что вы не будете единственным DE; вам понадобятся коллеги, чтобы учиться у них!
  5. Инженеры по обработке данных нужны во всех отраслях. Будьте честны с собой, постарайтесь работать в отрасли, которая действительно захватывает ваше сердце. Не волнуйтесь, если вы еще не знаете, чего хотите; попробуйте разные компании и отрасли, которые помогут вам расти как инженеру данных и как личности.
  6. Наставники имеют решающее значение для того, насколько быстро вы растете, принимаете чье-то руководство и всегда сохраняете любопытство к обучению. Если кто-то чувствует, что вам нравится учиться, он более открыт, чтобы продолжать давать вам советы, постепенно в возможных отношениях наставник-наставник.

Непрерывное обучение способствует постоянному росту.

Продолжайте учиться и наслаждайтесь собственным путешествием!