- Решает задачи по алгоритму, который даёт руководитель.
- Выполняет задачи сроком на 1–2 дня.
- Ему дают способ оценки результата (руководитель приносит метрики, их интерпретацию и ожидания, как они изменятся в результате решения задачи).
- Вместе с руководителем анализирует результат выполнения задач.
- Выполняет задачи, результат которых достижим.
- Может назвать бизнес-цели и задачи проекта, которым занимается.
- Выполняет уже декомпозированные руководителем или более опытными коллегами задачи.
- Не оценивает риски или сроки проекта, но всегда сам может заметить, если не успевает.
- Собирает данные для моделей по уже готовому шаблону.
- Может проверять гипотезы (лосс, метрика, фичи, гиперпараметры в рамках одной задачи (конкретный кусок работающей системы).
- Пишет код и юнит-тесты на свой код только под присмотром руководителя или наставника.
- Его программа запускается и работает корректно, выдаёт результат.
- Работает с готовыми данными и может написать простой запрос в хранилище, узнав у коллег структуру хранения.
- Под присмотром руководителя или наставника добавляет метрики в свой код.
- Уважает коллег, понимает, что они приходят к нему с добрыми намерениями, общается аргументированно и вежливо.
- Прислушивается к рекомендациям и советам наставника и коллег.
- Придерживается составленного руководителем плана развития.
- Самостоятельно занимается развитием своих инженерных навыков.
- Самостоятельно изучает и предлагает руководителю способ выполнения задачи.
- Выполняет задачи сроком 1-2 недели.
- Декомпозирует свои задачи на подзадачи/майлостоуны (сбор данных, чистка данных, генерация фичей, обучение модельки, приёмка оффлайн/онлайн).
- Собирает данные для моделей по уже готовому шаблону.
- Может проверять гипотезы (лосс, метрика, фичи, гиперпараметры в рамках одной задачи (конкретный кусок работающей системы).
- Пишет код и тесты на свой код самостоятельно с активным ревью руководителя.
- Его исследования воспроизводится без его участия.
- Понимает структуру данных своей команды в DWH и может сделать простые запросы.
- Делает стандартные метрики для сервиса и модели (тайминги, rps).
- Участвует в код-ревью и учится лучшим практикам.
- Фиксирует удобным для себя способом часть проведённых экспериментов.
- Сохраняет код и данные по выводам и экспериментам так, чтобы их можно было перепроверить.
- Пишет production-ready код, который не требует переписывания.
- Не повторяет ошибок в коде, ранее разобранных с руководителем.
- Запускает A/B тесты и оценивает свои эксперименты под присмотром руководителя.
- Знает и может назвать целевые метрики для моих экспериментов.
- Разбирает результаты экспериментов с более опытными коллегами.
- Если возникает идея, заносит её в команду, отвечающую за эту область.
- Участвует во встречах с коллегами из смежных отделов с более опытными коллегами.
- Принимает конструктивную обратную связь от коллег.
- Не доводит разногласия до деструктивных конфликтов.
- Учитывает интересы и потребности команды, даже если они противоречат его собственным.
- Принимает участие в составлении его плана развития и придерживается его.
- Если сталкивается с чем-то непонятным, не отмалчивается и не копается, затягивая решение, а спрашивает коллег и пытается разобраться вместе с ними.
- Ясный целевой результат проекта, за который отвечает (без высокой степени неопределённости).
- Выполняет задачи сроком 1–2 спринта.
- Самостоятельно собирает данные для обучения моделей.
- Самостоятельно выбирает алгоритм реализации проекта.
- Самостоятельно формулирует критерии успешно выполненного проекта.
- Самостоятельно проверяет результаты выполнения задач (проверка метрик, работы сервисов, посмотреть глазами) и сообщает о них публично.
- Декомпозирует проекты в своей зоне ответственности под присмотром руководителя.
- Приносит запрос на простую доработку во внешнюю команду.
- Проактивно говорит о проблемах и обращается за помощью, если не может справиться с трудностями.
- Придумывает и оценивает задачи в рамках части уже готовой и работающей системы. Отвечает за выделенную часть (модель) этой системы.
- Проводит эксперименты в рамках своих задач; понимает, когда надо остановиться в исследовании.
- При необходимости внедряет статью/алгоритм с более опытным коллегой.
- При необходимости делает нестандартные операции в фреймфорке (кастомный лосс, слой, хак) или меняет что-то поверх библиотеки с более опытным товарищем.
- Самостоятельно пишет код и обращается за помощью при необходимости; понимает, когда нужно писать тесты и пишет их самостоятельно.
- Делится с командой важными результатами своих исследований.
- Его исследование можно запустить на любой машине (есть requirements.txt, readme, код сбора данных), и есть промежуточные результаты и выводы.
- Следит за производительностью своего кода, оптимизирует узкие места с помощью коллег.
- Автоматизирует сбор данных и их обновления для расчёта production-модели.
- Самостоятельно продумывает архитектуру небольших частей сервисов, либо может сделать сервис уровня «обернуть модель».
- Оценивает объём данных, которые нужно разметить для решения задачи, и объём нагрузки на свой сервис.
- Настраивает элементы мониторинга в своей зоне ответственности и следит за ними (метрики, алерты, nfr, логи).
- Анализирует свой функционал и ищет в нём уязвимости/недостатки, планирует их исправления.
- Делает задачи техдолга, которые даёт руководитель.
- Участвует в code review (только в своих сервисах) и оставляет конструктивные комментарии.
- Проактивно предлагает улучшения в рамках своего проекта.
- Следит за графиками метрик после выкатки.
- Заводит новые продуктовые метрики в рамках готовой инфраструктуры, если это необходимо.
- Самостоятельно откатывает эксперимент, если видит, что что-то пошло не так.
- Использует специфику продукта при решении своих задач и выясняет, как продукт будет влиять на задачу.
- Самостоятельно запускает A/B-тесты (катит сервис/модель), согласует метрики и анализирует результаты с руководителем.
- Принимает решения команды, даже если не до конца согласен с ними.
- В случае возникающих сложностей привлекает к коммуникации руководителя.
Как заказчик:
- Добивается от смежников и «близких»/платформенных команд выполнения простых тасков.
- Контролирует качество исполнения тасков, при необходимости просит о доработке.
Как исполнитель:
- Регулярно и публично отчитывается о прогрессе по таскам перед заказчиком (при наличии такого процесса и потребности от заказчика).
- Проактивно предупреждает заказчиков и заинтересованных лиц, если сдвигаются сроки или что-то идёт не по плану.
- Проявляет терпимость к тем, кто обладает меньшими знаниями и навыками, оказывает им поддержку.
- Учитывает в планировании возможные риски в своей зоне ответственности (внешние интеграции, логгирование, чистка данных).
- Выполняет задачи сроком в 2–4 спринта.
- Формулирует критерий успешно выполненного проекта.
- Самостоятельно выбирает алгоритм решения задачи из нескольких альтернатив или придумывает свою.
- Декомпозирует и оценивает сроки реализации проекта.
- Формализует ресёрч по определённому запросу и оценивает примерное время его выполнения.
- Критически подходит к предлагаемым руководителем решениям. Если считает нужным, аргументированно оспаривает предложение и предлагает альтернативу.
- Строит модели с нуля.
- В случае несовпадения оценки эксперимента с действительностью — разбирается, почему произошло несовпадение.
- При необходимости делает изменения в сервисах коллег по команде (к примеру, сделать новую ручку).
- При необходимости выходит за рамки своих инструментов (писать на go, front, udf, базы, сделать витрины)
- В своих проектах следит за покрытием кода тестами, чтобы непротестированный код не шёл в прод.
- Проактивно делится результатами исследований с коллегами по команде и стейкхолдерами.
- Проводит нагрузочное тестирование нового функционала, заранее оценивает количество ресурсов, которое потребуется для его работы.
- Самостоятельно работает с данными, находит в них проблемы, следит за изменениями в данных со временем.
- Самостоятельно продумывает архитектуру более сложного сервиса (появляются внешние походы, базы, кэши), полученную архитектуру согласует с руководителем.
- Выносит часто используемые куски кода в общие библиотеки.
- Контролирует основные факторы, которые влияют на потребление ресурсов его сервиса.
- Если создаёт техдолг, то самостоятельно фиксирует его задачей в jira.
- Активный участник код-ревью не только в своих сервисах, помогает младшим коллегам, участвует в парном программировании.
- Погружается в задачи команды вне своей зоны ответственности.
- Самостоятельно анализирует результаты эксперимента и обсуждает их с руководителем при принятии решения о раскатке.
- Делает MVP для конкретных задач, прежде чем начинать долгую разработку.
- Оценивает baseline и потолок качества для датасета и подхода.
- Оценивает зависимость между качеством модели и её перфомансом.
- Интерпретирует неожиданные изменения в онлайн-метриках, ищет, что мог задеть (в рамках своего юнита).
- Предсказывает степень эффекта на онлайн-метрики для своего эксперимента.
- Самостоятельно придумывает схему приёмки эксперимента в своей области ответственности, используя стандартные инструменты (оффлайн, онлайн, AB, yoy, региональные эксперименты, ступеньки, user voice).
- До запуска проекта продумывает набор метрик, по которым его принимать (технические, положительные, отрицательные).
- Если не согласен с чужим решением, обосновывает свою точку зрения и старается понять чужую.
- Фиксирует договорённости после обсуждения.
- В случае возникающих сложностей решает их самостоятельно.
Как заказчик:
- Поддерживает диалог и ставит задачи внешним исполнителям, в том числе не из Авито.
- Подключает коллег из других функций для выполнения сложных задач.
Как исполнитель:
- При запросе объясняет, как работает функционал, который сделал раньше; убеждается, что коллега понял объяснения.
- Проактивно делится своей экспертизой внутри команды.
- Активно проводит технические интервью, прокачивает свои навыки интервьюера.
- Занимается онбордингом новичков.
- Менторит младших коллег уровнем до DS2 и выдаёт им задачи в 1–2 спринта.
- Отвечает за развитие и рост коллег уровня стажёра.
- Выполняет задачи со средним уровнем неопределённости (понятно, что болит, непонятно, как решить проблему).
- Выполняет сложные задачи с большим количеством участников, компонентов и взаимозависимостей сроком до квартала.
- Учитывает в планировании возможные риски вне своей зоны ответственности (внешние факторы, работа внешних команд).
- В своём направлении ведёт бэклог с инициативами и техдолгом (в письменном общеступном виде).
- Отвечает за DS-составляющую важного направления (например, метрика, стратегическая инициатива) совместно с руководителем.
- Активно управляет ожиданиями заказчиков и текущей работой по проекту.
- В рамках своего проекта организует работу DS-инженеров из своего юнита.
- При общении с внешними командами декомпозирует и оценивает сроки реализации проекта, согласует с заинтересованными лицами и исполнителями; ставит задачи с понятными критериями приёмки; контролирует сроки выполнения задач.
- Добывает данные за рамками текущей инфраструктуры, добавляет новые источники.
- Интересуется, что делают другие DS-команды и переиспользует их опыт/решения.
- Берёт на себя ML-проекты и формирует план работ (гипотезы, метрики).
- Находит пути улучшения существующего решения там, где младшие коллеги не справились.
- Систематически предлагает проработанные улучшения для существующих решений или частей продукта.
- Самостоятельно внедряет статью или алгоритм.
- Самостоятельно проводит нестандартные операции во фреймворке (кастомный лосс, слой, хак) или меняет что-то поверх библиотеки.
- При необходимости согласует и делает изменения в сервисах другой команды.
- Его исследования можно воспроизвести от и до, запустив код по инструкции, результаты исследования задокументированы.
- Оценивает требования для поступающей задачи с точки зрения ресурсов, формулирует SLA для своих внутренних сервисов и всевозможных ограничений (железо и SLA).
- При необходимости работает с внешними источниками данных.
- Проектирует архитектуру сложных сервисов, согласует требования с другими командами.
- Продумывает и предлагает общие решения, полезные всей команде (библиотеки, утилиты).
- Следит за количеством техдолга на своем проекте и не даёт ему выходить за уровень, мешающий быстро развивать функционал.
- Легко ориентируется в том, как устроено большинство сервисов команды (фича-тимы) и может в них при необходимости что-то изменить.
- Ведёт логи экспериментов, включая неудачные.
- Документирует разработанный функционал.
- Самостоятельно проектирует и реализует архитектуру сервиса с моделью.
- Самостоятельно оценивает бизнес-инициативу и предлагает решение, MVP.
- Понимает взаимосвязь между своими проектами и метриками других юнитов.
- Если его проект затронул чужую зону ответственности, обсуждает это с коллегами, которые за неё отвечают.
- В случае конфликта метрик ищет компромисс и взаимовыгодное решение.
- Покрывает сервис не только техническими метриками, но и метриками, которые позволяют быстро ловить аномалию в продукте — процент забанов, процент исправленных опечаток; настраивает алерты.
- Активно реагирует на аномалии в продуктовых метриках своих проектов, следит за ними longterm.
- Заранее прикидывает масштаб проблемы в своей области ответственности, не начинает проектов, которые не окупят затраченных усилий.
- Помогает коллегам из Customer Service или других юнитов, умеет приоритезировать их запросы и дать обратную связь, чтобы управлять их ожиданиями. Если не может помочь коллегам прямо сейчас, объясняет, почему и когда сможет.
- Признаёт свои ошибки, доносит это до вовлечённых сторон.
- Поддерживает позитивную атмосферу внутри команды.
- Корректно отзывается обо всех командах Авито, даже если в общении с какой-то из них есть недопонимания или проблемы.
- Договаривается о взаимовыгодном решении (вырабатывает консенсус), когда стороны видят решение по-разному.
- Фасилитирует дискуссии, не допускает неэффективных обсуждений.
Как заказчик:
- Организует и ведёт долгие проекты длительностью от квартала с коллегами из смежных команд.
Как исполнитель:
- Узнаёт истинную мотивацию заказчика, ищет оптимальное решение его болей и объясняет, как это сделать правильно.
- Если кто-то приходит с пожеланиями и задачами, которые невозможно выполнить, конструктивно объясняет, почему это невозможно.
- Рассказывает внешним заказчикам про устройство систем, за которые отвечает его юнит; убеждается, что коллеги поняли объяснения.
- Выступает на внутренних митапах и делится ценными знаниями с коллегами.
- Следит за трендами в индустрии, прикладывает их на свои задачи, думает о развитии проектов в своей зоне ответственности, предлагает конструктивные идеи.
- Обучает тех, кто учится проводить технические собеседования.
- Менторит младших коллег уровнем до DS4.
- Отвечает за развитие и рост коллег уровня Junior.
- Консультирует членов команды по запуску и анализу результатов экспериментов.
- Решает задачи с высоким уровнем неопределённости.
- Выполняет задачи сроком до полугода.
- Активно выявляет точки роста в рамках своего кластера, составляет план улучшений.
- Отвечает за DS-составляющую большого направления (метрика, стратегическая инициатива), занимается планированием, контролирует прогресс.
- Проактивно управляет рисками проекта.
- Участвует в приоритизации и формулировании OKR, оценивает проекты большой сложности по профиту, стоимости и целесообразности.
- Добивается решения задач сторонними командами всеми способами.
- Сверх предыдущего грейда компетенции не требуются.
- Проактивно находит новые направления для исследований, основываясь на данных, разбирается с аномалиями в работе сервисов/метриках команды.
- Правильно рассчитывает, сколько ресурсов нужно на решение задачи на старте проекта.
- Проактивно добивается выделения ресурсов на свою задачу всеми способами.
- Приносит неиспользованные ранее в команде технологии с пользой для бизнеса.
- Формирует видение и цели по метрикам в рамках своего направления.
- Создаёт инструменты для мониторинга; следит за тем, чтобы модель не стала работать хуже спустя какое-то время.
- Точно оценивает масштаб проблемы и профит решения даже в незнакомой для себя области.
- Приоритезирует задачи и проекты, исходя из предварительных оценок выгоды.
- Если заказчик приходит без предварительной оценки, помогает ему оценить.
- Для затратных и непонятных проектов делает MVP, чтобы оценить жизнеспособность решения.
- Организует атмосферу доверия на встречах, стимулирует высказывание разных точек зрения.
- Консультирует коллег из других команд про зоны ответственности юнита, помогает разобраться в проблемах, не дожидаясь ответственного или дежурного, или если его нет.
Как заказчик:
- Отвечает за сложные проекты с внешними контрагентами не из Авито, если это необходимо.
Как исполнитель:
- Если заказчики часто приходят с одинаковыми вопросами, обеспечивает документацию проекта.
- Участвует в Tech PR, выступает на внешних конференциях, пишет статьи в профильные блоги.
- Проводит финальные собеседования и принимает решения о найме стажеров.
- Помогает с развитием коллегам уровня Middle.
- Принимает участие в калибровках, если коллеги были задействованы на его проекте; помогает руководителю подсветить сильные и слабые стороны младших коллег.
- Его проекты приносят существенную пользу бизнесу (ключевые метрики от уровня кластера, стратегические инициативы).
- Выполняет задачи с неограниченным сроком (более полугода).
- Отвечает за большое направление (метрика, стратегическая инициатива), занимается планированием, контролирует прогресс.
- В его направлении составлен прозрачный роадмап на 1–2 квартала вперёд.
- В рамках своего проекта и направления координирует работу как инженеров своего юнита, так и других команд.
- Отвечает за нагрузку и мотивацию сотрудников, задействованных на его проекте.
- Формирует потребность в данных в любом проекте; знает, откуда можно добыть данные, применяет это знание.
- Успешно вношу предложения и формирую потребность в том, что можно оптимизировать с точки зрения ML у смежных (не ML) команд.
- Прикладывает потребность в ML на долгосрочные планы продукта.
- Делает неинкрементальные изменения в проекте (например, добавить SOTA).
- Отвечает за проект, которым пользуются по всей компании.
- Долгосрочно планирует архитектуру сервисов команды с учётом роста и внешних требований.
- Отвечает за организацию инфраструктуры для работы коллег.
- Планирует железо для своей команды на год вперёд, учитывает рост и новые инициативы.
- Изучает новые технологии в своей сфере, подходы к задачам в других компаниях, понимает, как его команда влияет на бизнес и другие команды.
- Следит за тем, чтобы логика работы системы и продукта фиксировалась в письменном виде в рамках всего коллектива.
- Может приземлить боль заказчика (нечётко высказанное мнение о том, что всё плохо) на измеряемые рельсы и оформить из неё проект.
- Если требования заказчика не соотносятся с реальностью, убеждает его в отсутствии проблемы, избегая конфликта.
- Доносит до владельца продукта наличие проблем в его области ответственности, добивается выделения ресурсов на их исправление.
- Если видит аномалию в ключевых метриках компании, то привлекает внимание ответственных людей до устранения проблем.
- Отстаивает метрики своей команды в публичном поле.
- Если видит конфликтную ситуацию у других коллег, помогает разрешить её конструктивно и взаимовыгодно.
- Доносит как позитивный, так и негативный фидбек до коллег в конструктивной форме.
- Выступает на международных конференциях.
- Менторит младших коллег уровнем до DS4 и выдаёт им задачи.
- Системно работает над развитием технического уровня всех членов своей команды в своём функциональном направлении.
- Создаёт или активно участвует в сообществах, где все заинтересованные лица могут обмениваться знаниями и вырабатывать решения.
Критерии сложности проектов:
- Количество участников (≥ 3).
- Зависимость от смежников.
- Количество легаси.
- Есть ли деньги.
- Есть ли персданные.
- Есть ли цели чужих команд.
- Количество компонентов.
- Уровень стратегичности.
- Сложность коммуникаций.
- Пробить потолок.
- DS-составляющая.
- Как пишет код.
- Как пишет тесты.
- Воспроизводимость исследований:
- код,
- метрики,
- выводы — почему такое решение.
- Перфоманс моделей и нагрузочное тестирование.
- Работа с данными.
- Планирование архитектуры.
- Создание общих инструментов (библиотек).
- Планирование ресурсов (железа), деньги на толоку, объём модераторов.
- Затащить технологию (FAISS, airflow) бонус.
- Настраивает элементы мониторинга и следит за ними (метрики, алерты, nfr, логи).
- Доменный ресерч (не пофиг, что происходит в продукте — что-то смотрит).
- Работа с техдолгом.
- Код-ревью.
- Проактивно предлагает улучшения для текущих систем (инженерная вовлечённость).
- Работа с AБ.
- Организовать разметку данных + качество разметки.