Skip to content

Latest commit

 

History

History
413 lines (313 loc) · 39.5 KB

ds-skills.md

File metadata and controls

413 lines (313 loc) · 39.5 KB

Компетенции DS-инженеров

DS1 (Junior 1 — Intern)

Автономность и менеджмент

  • Решает задачи по алгоритму, который даёт руководитель.
  • Выполняет задачи сроком на 1–2 дня.
  • Ему дают способ оценки результата (руководитель приносит метрики, их интерпретацию и ожидания, как они изменятся в результате решения задачи).
  • Вместе с руководителем анализирует результат выполнения задач.
  • Выполняет задачи, результат которых достижим.
  • Может назвать бизнес-цели и задачи проекта, которым занимается.
  • Выполняет уже декомпозированные руководителем или более опытными коллегами задачи.
  • Не оценивает риски или сроки проекта, но всегда сам может заметить, если не успевает.

DS-экспертиза

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

Культура исследований и разработки

  • Пишет код и юнит-тесты на свой код только под присмотром руководителя или наставника.
  • Его программа запускается и работает корректно, выдаёт результат.
  • Работает с готовыми данными и может написать простой запрос в хранилище, узнав у коллег структуру хранения.
  • Под присмотром руководителя или наставника добавляет метрики в свой код.

Коммуникация

  • Уважает коллег, понимает, что они приходят к нему с добрыми намерениями, общается аргументированно и вежливо.

Развитие себя и обучение других

  • Прислушивается к рекомендациям и советам наставника и коллег.
  • Придерживается составленного руководителем плана развития.
  • Самостоятельно занимается развитием своих инженерных навыков.

DS2 (Junior 2)

Автономность и менеджмент

  • Самостоятельно изучает и предлагает руководителю способ выполнения задачи.
  • Выполняет задачи сроком 1-2 недели.
  • Декомпозирует свои задачи на подзадачи/майлостоуны (сбор данных, чистка данных, генерация фичей, обучение модельки, приёмка оффлайн/онлайн).

DS-экспертиза

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

Культура исследований и разработки

  • Пишет код и тесты на свой код самостоятельно с активным ревью руководителя.
  • Его исследования воспроизводится без его участия.
  • Понимает структуру данных своей команды в DWH и может сделать простые запросы.
  • Делает стандартные метрики для сервиса и модели (тайминги, rps).
  • Участвует в код-ревью и учится лучшим практикам.
  • Фиксирует удобным для себя способом часть проведённых экспериментов.
  • Сохраняет код и данные по выводам и экспериментам так, чтобы их можно было перепроверить.
  • Пишет production-ready код, который не требует переписывания.
  • Не повторяет ошибок в коде, ранее разобранных с руководителем.

Ориентация на бизнес

  • Запускает A/B тесты и оценивает свои эксперименты под присмотром руководителя.
  • Знает и может назвать целевые метрики для моих экспериментов.
  • Разбирает результаты экспериментов с более опытными коллегами.

Коммуникация

  • Если возникает идея, заносит её в команду, отвечающую за эту область.
  • Участвует во встречах с коллегами из смежных отделов с более опытными коллегами.
  • Принимает конструктивную обратную связь от коллег.
  • Не доводит разногласия до деструктивных конфликтов.
  • Учитывает интересы и потребности команды, даже если они противоречат его собственным.

Развитие себя и обучение других

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

DS3 (Middle 1)

Автономность и менеджмент

  • Ясный целевой результат проекта, за который отвечает (без высокой степени неопределённости).
  • Выполняет задачи сроком 1–2 спринта.
  • Самостоятельно собирает данные для обучения моделей.
  • Самостоятельно выбирает алгоритм реализации проекта.
  • Самостоятельно формулирует критерии успешно выполненного проекта.
  • Самостоятельно проверяет результаты выполнения задач (проверка метрик, работы сервисов, посмотреть глазами) и сообщает о них публично.
  • Декомпозирует проекты в своей зоне ответственности под присмотром руководителя.
  • Приносит запрос на простую доработку во внешнюю команду.
  • Проактивно говорит о проблемах и обращается за помощью, если не может справиться с трудностями.

DS-экспертиза

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

Культура исследований и разработки

  • Самостоятельно пишет код и обращается за помощью при необходимости; понимает, когда нужно писать тесты и пишет их самостоятельно.
  • Делится с командой важными результатами своих исследований.
  • Его исследование можно запустить на любой машине (есть requirements.txt, readme, код сбора данных), и есть промежуточные результаты и выводы.
  • Следит за производительностью своего кода, оптимизирует узкие места с помощью коллег.
  • Автоматизирует сбор данных и их обновления для расчёта production-модели.
  • Самостоятельно продумывает архитектуру небольших частей сервисов, либо может сделать сервис уровня «обернуть модель».
  • Оценивает объём данных, которые нужно разметить для решения задачи, и объём нагрузки на свой сервис.
  • Настраивает элементы мониторинга в своей зоне ответственности и следит за ними (метрики, алерты, nfr, логи).
  • Анализирует свой функционал и ищет в нём уязвимости/недостатки, планирует их исправления.
  • Делает задачи техдолга, которые даёт руководитель.
  • Участвует в code review (только в своих сервисах) и оставляет конструктивные комментарии.
  • Проактивно предлагает улучшения в рамках своего проекта.

Ориентация на бизнес

  • Следит за графиками метрик после выкатки.
  • Заводит новые продуктовые метрики в рамках готовой инфраструктуры, если это необходимо.
  • Самостоятельно откатывает эксперимент, если видит, что что-то пошло не так.
  • Использует специфику продукта при решении своих задач и выясняет, как продукт будет влиять на задачу.
  • Самостоятельно запускает A/B-тесты (катит сервис/модель), согласует метрики и анализирует результаты с руководителем.

Коммуникация

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

Как заказчик:

  • Добивается от смежников и «близких»/платформенных команд выполнения простых тасков.
  • Контролирует качество исполнения тасков, при необходимости просит о доработке.

Как исполнитель:

  • Регулярно и публично отчитывается о прогрессе по таскам перед заказчиком (при наличии такого процесса и потребности от заказчика).
  • Проактивно предупреждает заказчиков и заинтересованных лиц, если сдвигаются сроки или что-то идёт не по плану.

Развитие себя и обучение других

  • Проявляет терпимость к тем, кто обладает меньшими знаниями и навыками, оказывает им поддержку.

DS4 (Middle 2)

Автономность и менеджмент

  • Учитывает в планировании возможные риски в своей зоне ответственности (внешние интеграции, логгирование, чистка данных).
  • Выполняет задачи сроком в 2–4 спринта.
  • Формулирует критерий успешно выполненного проекта.
  • Самостоятельно выбирает алгоритм решения задачи из нескольких альтернатив или придумывает свою.
  • Декомпозирует и оценивает сроки реализации проекта.
  • Формализует ресёрч по определённому запросу и оценивает примерное время его выполнения.
  • Критически подходит к предлагаемым руководителем решениям. Если считает нужным, аргументированно оспаривает предложение и предлагает альтернативу.

DS-экспертиза

  • Строит модели с нуля.
  • В случае несовпадения оценки эксперимента с действительностью — разбирается, почему произошло несовпадение.

Культура исследований и разработки

  • При необходимости делает изменения в сервисах коллег по команде (к примеру, сделать новую ручку).
  • При необходимости выходит за рамки своих инструментов (писать на go, front, udf, базы, сделать витрины)
  • В своих проектах следит за покрытием кода тестами, чтобы непротестированный код не шёл в прод.
  • Проактивно делится результатами исследований с коллегами по команде и стейкхолдерами.
  • Проводит нагрузочное тестирование нового функционала, заранее оценивает количество ресурсов, которое потребуется для его работы.
  • Самостоятельно работает с данными, находит в них проблемы, следит за изменениями в данных со временем.
  • Самостоятельно продумывает архитектуру более сложного сервиса (появляются внешние походы, базы, кэши), полученную архитектуру согласует с руководителем.
  • Выносит часто используемые куски кода в общие библиотеки.
  • Контролирует основные факторы, которые влияют на потребление ресурсов его сервиса.
  • Если создаёт техдолг, то самостоятельно фиксирует его задачей в jira.
  • Активный участник код-ревью не только в своих сервисах, помогает младшим коллегам, участвует в парном программировании.
  • Погружается в задачи команды вне своей зоны ответственности.
  • Самостоятельно анализирует результаты эксперимента и обсуждает их с руководителем при принятии решения о раскатке.
  • Делает MVP для конкретных задач, прежде чем начинать долгую разработку.
  • Оценивает baseline и потолок качества для датасета и подхода.
  • Оценивает зависимость между качеством модели и её перфомансом.

Ориентация на бизнес

  • Интерпретирует неожиданные изменения в онлайн-метриках, ищет, что мог задеть (в рамках своего юнита).
  • Предсказывает степень эффекта на онлайн-метрики для своего эксперимента.
  • Самостоятельно придумывает схему приёмки эксперимента в своей области ответственности, используя стандартные инструменты (оффлайн, онлайн, AB, yoy, региональные эксперименты, ступеньки, user voice).
  • До запуска проекта продумывает набор метрик, по которым его принимать (технические, положительные, отрицательные).

Коммуникация

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

Как заказчик:

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

Как исполнитель:

  • При запросе объясняет, как работает функционал, который сделал раньше; убеждается, что коллега понял объяснения.

Развитие себя и обучение других

  • Проактивно делится своей экспертизой внутри команды.
  • Активно проводит технические интервью, прокачивает свои навыки интервьюера.
  • Занимается онбордингом новичков.
  • Менторит младших коллег уровнем до DS2 и выдаёт им задачи в 1–2 спринта.
  • Отвечает за развитие и рост коллег уровня стажёра.

DS5 (Senior 1)

Автономность и менеджмент

  • Выполняет задачи со средним уровнем неопределённости (понятно, что болит, непонятно, как решить проблему).
  • Выполняет сложные задачи с большим количеством участников, компонентов и взаимозависимостей сроком до квартала.
  • Учитывает в планировании возможные риски вне своей зоны ответственности (внешние факторы, работа внешних команд).
  • В своём направлении ведёт бэклог с инициативами и техдолгом (в письменном общеступном виде).
  • Отвечает за DS-составляющую важного направления (например, метрика, стратегическая инициатива) совместно с руководителем.
  • Активно управляет ожиданиями заказчиков и текущей работой по проекту.
  • В рамках своего проекта организует работу DS-инженеров из своего юнита.
  • При общении с внешними командами декомпозирует и оценивает сроки реализации проекта, согласует с заинтересованными лицами и исполнителями; ставит задачи с понятными критериями приёмки; контролирует сроки выполнения задач.

DS-экспертиза

  • Добывает данные за рамками текущей инфраструктуры, добавляет новые источники.
  • Интересуется, что делают другие DS-команды и переиспользует их опыт/решения.
  • Берёт на себя ML-проекты и формирует план работ (гипотезы, метрики).
  • Находит пути улучшения существующего решения там, где младшие коллеги не справились.
  • Систематически предлагает проработанные улучшения для существующих решений или частей продукта.
  • Самостоятельно внедряет статью или алгоритм.
  • Самостоятельно проводит нестандартные операции во фреймворке (кастомный лосс, слой, хак) или меняет что-то поверх библиотеки.

Культура исследований и разработки

  • При необходимости согласует и делает изменения в сервисах другой команды.
  • Его исследования можно воспроизвести от и до, запустив код по инструкции, результаты исследования задокументированы.
  • Оценивает требования для поступающей задачи с точки зрения ресурсов, формулирует SLA для своих внутренних сервисов и всевозможных ограничений (железо и SLA).
  • При необходимости работает с внешними источниками данных.
  • Проектирует архитектуру сложных сервисов, согласует требования с другими командами.
  • Продумывает и предлагает общие решения, полезные всей команде (библиотеки, утилиты).
  • Следит за количеством техдолга на своем проекте и не даёт ему выходить за уровень, мешающий быстро развивать функционал.
  • Легко ориентируется в том, как устроено большинство сервисов команды (фича-тимы) и может в них при необходимости что-то изменить.
  • Ведёт логи экспериментов, включая неудачные.
  • Документирует разработанный функционал.
  • Самостоятельно проектирует и реализует архитектуру сервиса с моделью.

Ориентация на бизнес

  • Самостоятельно оценивает бизнес-инициативу и предлагает решение, MVP.
  • Понимает взаимосвязь между своими проектами и метриками других юнитов.
  • Если его проект затронул чужую зону ответственности, обсуждает это с коллегами, которые за неё отвечают.
  • В случае конфликта метрик ищет компромисс и взаимовыгодное решение.
  • Покрывает сервис не только техническими метриками, но и метриками, которые позволяют быстро ловить аномалию в продукте — процент забанов, процент исправленных опечаток; настраивает алерты.
  • Активно реагирует на аномалии в продуктовых метриках своих проектов, следит за ними longterm.
  • Заранее прикидывает масштаб проблемы в своей области ответственности, не начинает проектов, которые не окупят затраченных усилий.
  • Помогает коллегам из Customer Service или других юнитов, умеет приоритезировать их запросы и дать обратную связь, чтобы управлять их ожиданиями. Если не может помочь коллегам прямо сейчас, объясняет, почему и когда сможет.

Коммуникация

  • Признаёт свои ошибки, доносит это до вовлечённых сторон.
  • Поддерживает позитивную атмосферу внутри команды.
  • Корректно отзывается обо всех командах Авито, даже если в общении с какой-то из них есть недопонимания или проблемы.
  • Договаривается о взаимовыгодном решении (вырабатывает консенсус), когда стороны видят решение по-разному.
  • Фасилитирует дискуссии, не допускает неэффективных обсуждений.

Как заказчик:

  • Организует и ведёт долгие проекты длительностью от квартала с коллегами из смежных команд.

Как исполнитель:

  • Узнаёт истинную мотивацию заказчика, ищет оптимальное решение его болей и объясняет, как это сделать правильно.
  • Если кто-то приходит с пожеланиями и задачами, которые невозможно выполнить, конструктивно объясняет, почему это невозможно.
  • Рассказывает внешним заказчикам про устройство систем, за которые отвечает его юнит; убеждается, что коллеги поняли объяснения.

Развитие себя и обучение других

  • Выступает на внутренних митапах и делится ценными знаниями с коллегами.
  • Следит за трендами в индустрии, прикладывает их на свои задачи, думает о развитии проектов в своей зоне ответственности, предлагает конструктивные идеи.
  • Обучает тех, кто учится проводить технические собеседования.
  • Менторит младших коллег уровнем до DS4.
  • Отвечает за развитие и рост коллег уровня Junior.
  • Консультирует членов команды по запуску и анализу результатов экспериментов. ​​

DS6 (Senior 2)

Автономность и менеджмент

  • Решает задачи с высоким уровнем неопределённости.
  • Выполняет задачи сроком до полугода.
  • Активно выявляет точки роста в рамках своего кластера, составляет план улучшений.
  • Отвечает за DS-составляющую большого направления (метрика, стратегическая инициатива), занимается планированием, контролирует прогресс.
  • Проактивно управляет рисками проекта.
  • Участвует в приоритизации и формулировании OKR, оценивает проекты большой сложности по профиту, стоимости и целесообразности.
  • Добивается решения задач сторонними командами всеми способами.

DS-экспертиза

  • Сверх предыдущего грейда компетенции не требуются.

Культура исследований и разработки

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

Ориентация на бизнес

  • Формирует видение и цели по метрикам в рамках своего направления.
  • Создаёт инструменты для мониторинга; следит за тем, чтобы модель не стала работать хуже спустя какое-то время.
  • Точно оценивает масштаб проблемы и профит решения даже в незнакомой для себя области.
  • Приоритезирует задачи и проекты, исходя из предварительных оценок выгоды.
  • Если заказчик приходит без предварительной оценки, помогает ему оценить.
  • Для затратных и непонятных проектов делает MVP, чтобы оценить жизнеспособность решения.

Коммуникация

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

Как заказчик:

  • Отвечает за сложные проекты с внешними контрагентами не из Авито, если это необходимо.

Как исполнитель:

  • Если заказчики часто приходят с одинаковыми вопросами, обеспечивает документацию проекта.

Развитие себя и обучение других

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

DS7 (Lead)

Автономность и менеджмент

  • Его проекты приносят существенную пользу бизнесу (ключевые метрики от уровня кластера, стратегические инициативы).
  • Выполняет задачи с неограниченным сроком (более полугода).
  • Отвечает за большое направление (метрика, стратегическая инициатива), занимается планированием, контролирует прогресс.
  • В его направлении составлен прозрачный роадмап на 1–2 квартала вперёд.
  • В рамках своего проекта и направления координирует работу как инженеров своего юнита, так и других команд.
  • Отвечает за нагрузку и мотивацию сотрудников, задействованных на его проекте.

DS-экспертиза

  • Формирует потребность в данных в любом проекте; знает, откуда можно добыть данные, применяет это знание.
  • Успешно вношу предложения и формирую потребность в том, что можно оптимизировать с точки зрения ML у смежных (не ML) команд.
  • Прикладывает потребность в ML на долгосрочные планы продукта.
  • Делает неинкрементальные изменения в проекте (например, добавить SOTA).
  • Отвечает за проект, которым пользуются по всей компании.

Культура исследований и разработки

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

Ориентация на бизнес

  • Может приземлить боль заказчика (нечётко высказанное мнение о том, что всё плохо) на измеряемые рельсы и оформить из неё проект.
  • Если требования заказчика не соотносятся с реальностью, убеждает его в отсутствии проблемы, избегая конфликта.
  • Доносит до владельца продукта наличие проблем в его области ответственности, добивается выделения ресурсов на их исправление.
  • Если видит аномалию в ключевых метриках компании, то привлекает внимание ответственных людей до устранения проблем.
  • Отстаивает метрики своей команды в публичном поле.

Коммуникация

  • Если видит конфликтную ситуацию у других коллег, помогает разрешить её конструктивно и взаимовыгодно.
  • Доносит как позитивный, так и негативный фидбек до коллег в конструктивной форме.

Развитие себя и обучение других

  • Выступает на международных конференциях.
  • Менторит младших коллег уровнем до DS4 и выдаёт им задачи.
  • Системно работает над развитием технического уровня всех членов своей команды в своём функциональном направлении.
  • Создаёт или активно участвует в сообществах, где все заинтересованные лица могут обмениваться знаниями и вырабатывать решения.

Пояснения

Автономность и менеджемент

Критерии сложности проектов:

  • Количество участников (≥ 3).
  • Зависимость от смежников.
  • Количество легаси.
  • Есть ли деньги.
  • Есть ли персданные.
  • Есть ли цели чужих команд.
  • Количество компонентов.
  • Уровень стратегичности.
  • Сложность коммуникаций.
  • Пробить потолок.
  • DS-составляющая.

Культура исследований и разработки

  • Как пишет код.
  • Как пишет тесты.
  • Воспроизводимость исследований:
    • код,
    • метрики,
    • выводы — почему такое решение.
  • Перфоманс моделей и нагрузочное тестирование.
  • Работа с данными.
  • Планирование архитектуры.
  • Создание общих инструментов (библиотек).
  • Планирование ресурсов (железа), деньги на толоку, объём модераторов.
  • Затащить технологию (FAISS, airflow) бонус.
  • Настраивает элементы мониторинга и следит за ними (метрики, алерты, nfr, логи).
  • Доменный ресерч (не пофиг, что происходит в продукте — что-то смотрит).
  • Работа с техдолгом.
  • Код-ревью.
  • Проактивно предлагает улучшения для текущих систем (инженерная вовлечённость).
  • Работа с AБ.
  • Организовать разметку данных + качество разметки.