data будни – Telegram
data будни
1.47K subscribers
120 photos
1 video
2 files
237 links
работаю инженером данных и пишу в основном про это.

Профильные ссылки с коротким резюме (статьи, доклады, подкасты), иногда «софтовое» — например, про поиск работы.
Download Telegram
реальный мирединственный источник практических знаний

«Как стать X?» или «Что качать, чтобы прокачаться в Y?»

можно взять гигантский роадмап и пойти по порядку — через год будет результат (если дойдёшь и не умрёшь с голоду).

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

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

Хоп! и уже первое открытие — везде требуются разные наборы навыков, потому что (сюрприз!) во всех компаниях свой стэк инструментов и свои обычаи. И это всё со временем меняется (быстрее, чем программы курсов).

Следующий шаг — пройти дцать собеседований:
⁃ во-первых, придётся выбрать в какие компании идти: уже надо подумать куда хочется.
⁃ во-вторых, может придётся поделать тестовые — тоже отличный опыт; лучше синтетических задач из интернетов.
⁃ в-третьих, на собеседовании будет технический специалист не ниже миддла, который уже работает по этой специальности — вот он-то и расскажет ЧТО ИМЕННО НУЖНО на эту конкретную должность в этой конкретной компании.
⁃ PROFIT!

Если доводить идею до крайности, то в принципе можно вместо курсов ходить на собеседования: сначала будет жутко страшно, но на сотом собеседовании уже будешь в теме (и как раз пройдёт уже полгода-год).
когда пишу в SQL запросах GROUP BY 1, 2 вместо полного наименования колонок, меня всегда тревожила мысль, что я халавлю и недоделываю НОРМАЛЬНЫЙ КОД.

Прочитал, что в dbt делают так же и успокоился: писать через «1» проще и понятнее (заскринил пример ^). Если что, буду показывать эту заметку 🌚


So why do I still group by 1? Well, there's a few reasons:

- 1 is a single character (and I'm lazy, OK?!).


https://blog.getdbt.com/write-better-sql-a-defense-of-group-by-1/
эмпирически-оптимальное соотноешение: 2-3 дата инженеров на одного мл-инженера. Если дата инженеров меньше, то, получается, их работу делают мл-инженеры [а могли бы модели делать что-нибудь своё МЛ-ное].

https://twitter.com/dsunderhood/status/1420769858053103617
Уровни аналитиков

Женя Козлов описал опыт Яндекса по формализации грейдов для аналитиков. Написано очень чётко, можно использовать как шпаргалку для команд или личного развития.

Понравилось чёткое разделение каждого грейда в разрезе подхода к задачам (мелко разжованные а в конце просто глобальное направление).

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

Ниже надёргал абзацев из каждого раздела, рекомендую почитать целиком:

----

Аналитик данных – это человек, который помогает команде:
Принимать решения более объективно, основываясь на фактах и данных (в противовес мнению, интуиции и опыту).
Искать точки роста продукта и бизнеса.


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


1. Аналитик-стажер (trainee data analyst)

Аналитик-стажер работает на уровне четко сформулированных и хорошо формализованных задач. Задачи стажеру ставит исключительно старший товарищ-аналитик (наставник или руководитель). Он же проверяет результаты выполнения этих задач перед тем, как отдать эти данные куда-либо еще.


2. Младший аналитик (junior data analyst)

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

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


3. Аналитик 1 (Middle data analyst 1 step)

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

Аналитик 1 всё чаще и чаще докапывается до сути идей и вопросов, с которыми к нему пришли. Думает про задачи в терминах решений, которые будут приняты, а не в терминах работы с данными.


4. Аналитик 2 (Middle data analyst – 2 step)

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

Аналитик 2 должен уметь за рутинными операционными задачами видеть какие-то системные направления развития доверенной ему части бизнеса и понимать, как задачи связаны с целями, куда и зачем глобально движется продукт/компания.

Аналитик 2 решает задачи в бизнесовой постановке и результат его работы сформулирован обычно в таком же виде. Если это аналитический отчет — в нём есть рекомендация, как поступать и на что обратить внимание (точки роста и потенциальные проблемы). Если это дешборд или график — они помогают принимать решения.


5. Старший аналитик (Senior data analyst)

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


6. Ведущий аналитик (Lead data analyst)

Аналитик-легенда. Таких единицы. Ведущий аналитик – это супер-эксперт в своей предметной наукоемкой области (как пример, алгоритмы диспетчеризации или поведенческая экономика).


https://gopractice.ru/data_analysts_levels/
Два подкаста про игры с точки зрения машинного обучения

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

Особенно понравилась вставка про Доту с интернешнала с живыми криками комментатора. Фанфакт: перед матчем с Денди машина тренировалась 2500 лет игрового времени.

Слушать в iTunes и Overcast


Второй подкаст — уже серьёзный разговор с инженером из Google Deepmind о том что там под капотом у этого процесса и где эти навыки можно применить в реальном мире.

Ссылки на подкаст в посте автора
👍1
Не Спарком единым

за последние полгода в Эпохе поучаствовал в проектах по построению четырёх DWH для наших клиентов: 3 на BigQuery и ещё один на AWS Athena. Всё как надо — изучили источники, настроили пайплайны, собрали данные в одном месте, нарезали на слои, вывели на дашборды. Клиенты довольны.

При этом задействовано Спарка в проектах: ноль. Обошлись как-то и без Кафки с Хадупом.

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

Со всеми тезисами согласен — мы делаем так же: облачные DWH, инжест через пайплайны на питоне с использованием готовых библиотек, широкие таблицы в аналитическом слое.

Строим аналитическое хранилище данных с готовыми модулями ML на Google BigQuery: просто, быстро, доступно
Ищем дата инженеров в агентсво Epoch8

Эпоха — агенство заказной разработки, мы помогаем клиентам работать с их данными: понимать что было (аналитика) и что будет (ML). Сейчас в штате 20 человек — до бюрократии ещё не доросли, фаундеры в прямой доступности, каждый может влиять на курс и политику компании.

В клиентах как большие е-коммерсы типа Leroy Merlin и Пятёрочки, так и стартапы: например, BelkaCar или Brickit.

Ищем дата инженеров в отдел аналитики. Обычно инженер сопровождает проект от начала и до конца:
⁃ приходиться разбираться с источниками данных у клиентов;
⁃ поднимать и поддерживать хранилища данных (DWH);
⁃ проектировать автономные пайплайны;
⁃ придумывать архитектуру аналитических сущностей и слоёв данных;
⁃ делать actionable дашборды, чтобы бизнес-пользователи клиентов могли принимать чёткие и взвешенные решения.

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

Порог входа относительно низкий: работать надо будет в команде с опытными товарищами. В любом случае ожидаем определённого уровня автономности — нужен какой-то опыт работы с данными (SQL, Python).

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

Стэк технологий на каждом проекте свой, зависит от ограничений клиента; но есть наиболее частые решения:
⁃ DWH на BigQuery;
⁃ оркестрация на Prefect (на старых проектах — Airflow);
⁃ модели данных в dbt;
⁃ дашборды на Metabase.


Почему мне нравится работа в агентстве:
⁃ быстрый технический рост: до Эпохи я собирал один DWH три-четыре месяца, в Эпохе — 4 за полдгода;
⁃ большая насмотренность на проектах: приходят разные большие е-коммерсы и видишь что там под капотом;
⁃ вокруг коллеги той же профессии — а не единственный аналитик в отделе маркетинга;
⁃ на каждом следующем проекте замечаешь всё больше общих закономерностей — «набиваешь руку» поднимать DWH с нуля;
⁃ доступны все проекты агентства — всегда есть где подсмотреть оптимальное решение или спросить совета.
⁃ не зря год работы в заказной разработки считается за два в продуктовой;
⁃ рядом отдел МЛ: можно подглядывать, смотреть на насущные проблемы или спросить совета.

Условия:
⁃ вилки: 80-100К для джунов, 100-150К для миддлов. Зависит от опыта и навыков.
⁃ полная удалёнка. Если в Москве, то можно приходить на ежемесячные встречи и прочие офлайн-сборища.
⁃ раз в полгода общие вылазки (уже были Сочи, Алтай, Байкал) — надо же куда-то тратить освободившийся бюджет на офис :-)


Если есть вопросы и предложения — всегда рад пообщаться @sashamikhailov

Если вакансия заинтересовала, надо заполнить анкету в Airtable. В ответ вышлем небольшое тестовое на SQL. После тестового приглашаем на собеседование (возможно, даже там буду я).


====

Планирую вакансию пошерить дальше, если знаете что можно было добавить, уточнить или исправить — пишите. Очень поможете :)
1
у ребят из dbt появился свой подкаст, назвали актуальненько — Analtycs Engineering.

В первом эпизоде с Robert Chang из Airbnb, обсудили проблему управления метриками в компании. В Aribnb таких 12000 и чтобы как-то управляться они сделали систему Minerva как единый источник правды для всех метрик.

https://podcasts.apple.com/us/podcast/the-analytics-engineering-podcast/id1574755368
Data Engineering на Яндекс.Практикуме

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

Теперь можно получить профильный курс и выпускников с релевантными навыками (я не как я — учился на аналитика, чтобы потом изучать инжиниринг данных уже на реальном проекте ¯\_(ツ)_/¯ )

Сразу о главном: 80 000₽ и полгода обучения.

Программа прям по-максимуму: концепции и архитектура данных, пайплайны, оркестрация, инфраструктура. Вот скопипастил полный список (хоть иди и учись заново, черт побери):

1. Знакомство с ETL / ELT, DWH / Data Lake, REST API → PostgreSQL
2. Продвинутый SQL: хранимые, тригеры, шардирование (!) и партиционирование
3. Разные базы данных: колоночные, No-SQL, графовые и key-value
4. Прочие источники данных: СУБД, файлики (Excel, хе-хе), API
5. Оркестрация: от крона до Airflow
6. Продвинутые пайплайны: параллельная обработка, Kafka / RabbitMQ / Celery.
7. Инфраструктура: Docker и Ansible.
8. Деплой на кластер: Kubernetes, Helm
9. Архитектура DWH: звезда, снежинка, Data Vault и Anchor Modeling.
10. BIG DATA: CAP теорема, Hadoop, MapReduce
11. BIG DATA часть 2: Spark, RDD (погуглил, спасибо!), Spark SQL
12. Облака: AWS, Яндекс, GCP, Azure, DigitalOcean
13. Безопасность: персданнные, аутентификация и авторизация, секреты
14. Логи и мониторинг: ELK, Grafana
15. Дипломный проект: всё серьёзно с CI/CD и data quality
в продолжение темы Data Engineer VS Data Scientist

на мега-крутом дашборде Ромы Бунина и Николая Валиотти можно посмотреть динамику спроса на дата-профессии. Мне интересно сравнить нашего брата дата инженера с хайповым дата саентистом.

Первое, что хочется отметить — зарплаты дата инженеров на втором месте.

Второе — количество вакансий больше на треть. Я бы здесь ожидал разницу побольше¹, но скидываю это на то, что дата саентистами называют всех подряд (т.н. термин-одеяло²).

(зачёркнуто) Было бы правильнее искать что-то типа ML Engineer, но таких было бы ещё меньше (и большая часть без зарплат, да).

УПД: в комментариях Рома отметил, что они учли это и «в выборку про DS попадали все вакансии, где есть слова ML, AI, DS и т.п.»


Весь проект и пост в канале Ромы Бунина (зацените ещё бизнес аналитиков ;-)
https://news.1rj.ru/str/revealthedata/498


¹ ощущения про «правильное» соотношение DE и MLE на проектах https://news.1rj.ru/str/data_days/158

² про термин-одеялко https://news.1rj.ru/str/rockyourdata/2816
Анализ вакансий из сообщества ODS

ребята спарсили вакансии из своего Слака и «повертели» данные с разных сторон:

⁃ количество вакансий
⁃ распределение по профессиям и уровням
⁃ динамика роста удалёнки
⁃ ну и зарплаты, конечно же (зачем же это всё затевалось!)

плюс всё в динамике: в каждом срезе сравнивают показатели с прошлыми годами.

радует, что становится больше вакансий дата аналитиков — кажется рынок начал понимать зачем нанимать кого-то ещё кроме «дата саентистов»

статья с графиками:
https://habr.com/ru/company/ods/blog/572264/

исходные данные для исследования:
https://github.com/egorborisov/jobs_article/blob/main/jobs_research.ipynb
Как устроена структура данных в Notion

… и как обеспечить ту самую гибкость, благодаря которой Notion стал таким популярным)

https://www.notion.so/blog/data-model-behind-notion

кстати, они нанимают инженеров для работы с данными. Для тех, кому понравился пост выше.

https://www.notion.so/Software-Engineer-Data-Platform-San-Francisco-CA-79be6b036fb34fce88f663648ffdac62
Подброка подкастов про данные:


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


Петр Ермаков в Moscow Python
Петр — организартор курсов DataGym и один из первых участников сообщества ODS. Ещё одна общая хорошая беседа на тему зачем отрасли нужны сообщества.


Антон Карпов в Запуск Завтра
Антон — директор по безопасности Яндекса — рассказал про крупнейшую в мире (!) DDoS-атаку, которую успешно (!!) отразили внутренними инструментами без ковровых блокировок по IP (!!!). Интересно было послушать какие бывают атаки и как с ними работают. Оказывается, есть целая отрасль с организацией подобных атак и отдельных рынок для их заказа.
Послушать:


советы по ML Ops из Moscow Python

сами по себе МЛ-модели — это малая доля работы всего этого вашего машин-лёрнинга. До этого надо ещё собрать данные, их почистить и подготовить (ну вы знаете); обучить модель «на коленке», а потом переписать этот код НОРМАЛЬНО, чтобы можно было запустить в прод. Код в продакшене должен быть читаемым, повторяемы и поддерживаемым — именно в этой области работают специалисты по т.н. ML Ops.

Слушать в iTunes и Overcast



Дата-парень (ex-Spotify) в подкасте от dbt labs

Erik Bernhardsson — автор Luigi; оказывается, Luigiзапустился чуть раньше, чем Airflow (нынешний стандарт оркестрации)

понравилось мнение, что дата-отрасль сейчас как веб в 2000-х: есть по сути одна профессия (типа веб-мастер), которая занимается всем. Никто на самом деле (пока) не знает как правильно и все пытаются на ходу с этим разобраться. (Ух, прям как дикий запад — вместе строим новый мир с нуля!)

Слушать в iTunes и Overcast



Артур Хачуян про философию работы с данными

Артур работает с большими данными, основал Tezaros (это там где 60000 тысяч Селениумов круглые сутки парсят лайки из соцсетей). Артур шарит в данных и имеет здравый взгляд на мир, в подкасте рассказывает где в работе с данными серая зона (например, геопарсинг), а где полная а-та-та (слив персданных другим компаниям).

Полезно было вспомнить, что цифровая грамотность это не навык-по-умолчанию — этому реально надо учить (а некоторых прям принудительно).

Слушать в iTunes и Overcast

#подкаст
Истории об идемпотентности

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

Важная концепция из мира работы с данными — тут миры дата-инженеров и бэкенд-разработчиков пересекаются.

Денис Исаев из Яндекс.Такси на примере реальных историй показывает, как проектировать процессы идемпотентными (и когда не надо :-). Есть ссылки на реализации API в Amazon AWS и Google Cloud.

Кейсы кажутся очень похожими на реальные:
1. Приложение шлёт одинаковые запросы с разницей в секунды
2. Приложение шлёт запрос с плохим интернетом (или моргнула сеть в инфраструктуре)
3. Мультизаказы с ключом идемпотентности, который генерируется на клиенте.
4. Ключи идемпотентности хорошо бы хранить на сервере (и не удалять при отмене заказа)
5. Soft-delete — вместо удаление строки в базе, просто ставить флаг deleted_at=now()


https://habr.com/ru/company/yandex/blog/442762/
Обзор технологий хранения больших данныхМаксим Стаценко

https://youtu.be/xIQZ0v8ayD0

от «зачем нужно» до «с чем у меня ассоциируется каждая система». Вся информация основана на личном опыте Максима.


зачем нужна отдельная аналитическая база? можно проследить по типичным этапам в компании:
1. аналитика на той же базе, что и прод
2. п. 1 не справляется — делаем реплику базы
3. п. 2 не справляется — делаем отдельный аналитическую базу


варианты, где строить:
4. «сервер в подсобке»
5. аренда стойки в дата центре (под свой сервер)
6. аренда готового сервера
7. аренда виртуальной машины в облаке
8. managed services в облаке

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

В облачных решениях можно просто «накликать» любые ресурсы — удобно для MVP и Proof of Concept. В любом случае всегда лучше поднять решение со своими данными и «погонять» его, чем просто читать презентации и обзоры систем в интернете.