From 00c8d2b74d95983130ec9d2e5fd4f1027738d8d5 Mon Sep 17 00:00:00 2001 From: Mike Klyuev Date: Thu, 21 May 2020 15:56:09 +0300 Subject: [PATCH] Create developer-profile.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил в плейбук описания профилей инженеров --- developer-profile.md | 291 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 developer-profile.md diff --git a/developer-profile.md b/developer-profile.md new file mode 100644 index 0000000..32e8f68 --- /dev/null +++ b/developer-profile.md @@ -0,0 +1,291 @@ +# Профили инженеров + +Профили инженеров нужны для того, чтобы оценивать коллег в соответствии с их уровнем на [performance review](https://github.com/avito-tech/playbook/blob/master/goal-setting.md#performance-review) и сделать продвижение по карьерной лестнице понятным и прозрачным. + +## Карьерная лестница +Карьерная лестница - это возможный путь развития инженера в Авито в зависимости от того, какие задачи он решает, и какие основные скиллы при этом использует. + +Развиваться можно 2-мя путями: +- как инженер (IC, individual contributor), который делает работу преимущественно своими руками +- как менеджер, который достигает результата через управление людьми или командами + +В настоящий момент у нас в Авито существуют такие уровни: +- Intern (стажёр) +- junior +- Middle +- Senior +- Lead +- Principal + +Все профили описаны по блокам: +- Экспертность +- Инженерная культура +- Ответственность за результат +- Ориентация на бизнес +- Agile Mindset +- Коммуникация +- Развитие себя и обучение других + +Карьерное движение не происходит автоматически. Двигаться или нет по карьерной лестнице – это решение и ответственность самого сотрудника. Многое зависит от его проактивности, желания учиться, приобретать новые знания и навыки и (самое главное) брать на себя большую ответственность. Задача менеджера – помочь сотруднику в развитии, например, подключать к новым задачам, давать возможность для участия в кросс-функциональных проектах. + +## Как работают профили инженеров +- Ожидания каждого следующего уровня добавляются к ожиданиям предыдущих. Например senior должны уметь делать всё тоже самое что и intern, junior и middle. +- Сотрудник обязательно должен проявить навыки и компетенции своего или следующего профиля на деле. Просто уметь или хотеть делать не достаточно. +- Если менеджер считает, что в команде нет и не будет бизнес необходимости делать что-то, что описано в профиле, например выступать на конференции или обучать новичков, то эти критерии можно не учитывать. + +## Intern + +### Экспертность +- Решает небольшие задачи из бэклога под руководством наставника +- Привлекает наставника для оценки потенциальных рисков + +### Инженерная культура +- Изучает с наставником лучшие практики Авито, учится писать качественный код или тестировать используя существующие тестовые модели + +### Ответственность за результат +- При планировании работы синхронизирует конечную цель и ожидаемый результат с наставником +- Выполняет обещанное. Например, выполняет взятую задачу в срок или своевременно оповещает о проблеме, просит о помощи. +- Признает ошибки и берет ответственность за их исправление + +### Ориентация на бизнес +- Выясняет цель и ценность выполнения задачи над которой он работает + +### Agile Mindset +- Вовлеченный участник всех процессов команды +- Адаптируется к изменениям процессов в команде/компании +- Адаптируется к изменениям приоритетов/целей. +- Говорит о вещах, которые требуют улучшения и не «замалчивает» проблемы +- Руководствуется принципом just talk. Понимает, что общение наиболее эффективный и практичный способ обмена информацией. + +### Коммуникация +- Уважает коллег. +- Гибок в общении - слышит коллег, учитывает их мнение. +- Аргументирует свою точку зрения +- Принимает решения учитывая интересы и потребности других людей даже когда они противоречат его собственным. + +### Развитие себя и обучение других +- Делает выводы для себя на основе обратной связи. +- Совместно с руководителем ставит себе четкие цели на обучение. +- Быстро обучается. Активно задает вопросы, чтобы учиться. +- Берет задачи в работу, которые раньше не делал, чтобы научиться. + +## Junior + +### Экспертность +- Решает такие же задачи из бэклога как и middle инженеры. +- Оценивает потенциальные риски +- Привлекает наставника при необходимости + +### Инженерная культура +- Улучшает свой код по замечаниям на code review. Не повторяет одинаковых ошибок. +- Вручную проверяет "зелёные сценарии", обработку ошибок. +- Пишет авто-тесты на свой код, консультируется с наставником насчёт выбора оптимального способа проверки качества и безопасности задач. + +### Ответственность за результат +- При планировании работы согласует с автором/командой: +- как поймём, что задача успешно выполнена? (acceptance criteria) +- как будет проверена работоспособность? +- как результат будет продемонстрирован? +- когда задача будет выполнена? + +### Ориентация на бизнес +- Формирует с командой цель на спринт. Связывает её с целями юнита и компании на текущий квартал. +- Проводит обзор результатов работы фича-команды + +### Agile Mindset +- Вовлеченный участник всех процессов команды +- Адаптируется к изменениям процессов в команде/компании +- Адаптируется к изменениям приоритетов/целей. +- Говорит о вещах, которые требуют улучшения и не «замалчивает» проблемы +- Руководствуется принципом just talk. Понимает, что общение наиболее эффективный и практичный способ обмена информацией. + +### Коммуникация +- Уважает коллег. +- Гибок в общении - слышит коллег, учитывает их мнение. +- Аргументирует свою точку зрения +- Принимает решения учитывая интересы и потребности других людей даже когда они противоречат его собственным. + +### Развитие себя и обучение других +- Делает выводы для себя на основе обратной связи. +- Совместно с руководителем ставит себе четкие цели на обучение. +- Быстро обучается. Активно задает вопросы, чтобы учиться. +- Берет задачи в работу, которые раньше не делал, чтобы научиться. + +## Middle + +### Экспертность +- Самостоятельно решает задачи из бэклога +- Степень неопределённости невысокая (понятно что нужно сделать, может быть непонятно как). Работает с неопределённостью - проводит ресерчи, собирает информацию. +- Самостоятельно оценивает риски в знакомом функционале. В незнакомом функционале привлекает эксперта для оценки рисков. +- Анализирует возникающие проблемы, старается докопаться до сути и решить корневую проблему. Предлагает и продвигает превентивные решения для предотвращения рецидивов. +- Тестирует нефункциональные требования или привлекает для этого экспертов. + +### Инженерная культура +- Проводит Code Review коллег, способствуя тому, чтобы вливаемый код соответствовал лучшим практикам Авито, был тестопригодным, безопасным и поддерживаемым. +- Пишет автотесты на свой код учитывая "пирамиду тестирования" команды. Систематически увеличивает покрытие кодовой базы автотестами. +- Выбирает оптимальный способ проверки качества задач. Использует подходящие виды тестирования. +- Находит баланс между скоростью разработки/тестирования и качеством. +- При реализации или внедрении новых технических решений или подходов валидирует их с ответственными. +- При решении своей задачи, улучшает общие инженерные инструменты компании или даёт конструктивный фидбек их владельцам. +- При разработке придерживается подходов KISS и DRY +- Устраняет/избегает распространенных уязвимостей безопасности (OWASP) при решении своих задач. +- Проактивно консультируется с коллегами для выбора безопасных подходов к реализации разрабатываемой функциональности. +- При реализации задач добаляет необходимые метрики и мониторит их после релиза +- Самостоятельно находит ответы на вопросы по техническим метрикам (например: какая нагрузка на мой сервис? какой 99й перцентиль времени ответа?) +- Вместо долгой разработки создает или предлагает владельцу продукта MVP для проверки гипотезы или нового технического решения. + +### Ответственность за результат +- Берет ответственность за доставку задачи до пользователей. Выходит за рамки просто разработки/тестирования. На всех этапах следит за задачей и помогает её продвижению. Не использует оправдание «На моей машине работает и ОК». Сразу подсвечивает возникающие блокеры и предлагает варианты решения. + +### Ориентация на бизнес +- При планировании работы знает на какие команды может повлиять задача и говорит об этом +- Регулярно интересуется фидбэком пользователей (читает user voice, отчёты поддержки, результаты пользовательских исследований, спрашивает у руководителя или продукт менеджера) и обсуждает с командой полученные инсайты +- Отслеживает прогресс по целям юнита/команды в течение квартала (вместе с командой) +- Декомпозирует крупные фичи на набор полезных инкрементов, которые можно релизить независимо (например user story) +- Самостоятельно находит ответы на простые вопросы по метрикам (Сколько подач в категории Запчасти совершают в среднем за день пользователи с Андроид?) + +### Agile Mindset +- Ставит успех команды выше личных целей. Например: +- Берёт на себя роль scrum-мастера или проводит scrum-встречи в его отсутствие +- При выборе задачи над которой будет работать выбирает ту которая приближает команду к результату, а не ту которая нравится +- T-shaping в соседние функции, которые нужны команде/компании +- Не говорит, что это работа менеджера, а моя только кодить. +- Предлагает свою помощь коллегам, если видит что она нужна. +- Анализирует как улучшить эффективность своей работы. Проводит разборы что было хорошо и что улучшить, выходит в действия. +- Улучшает процессы в фича команде. Например: +- Систематизирует результаты ретроспектив и трекает выполнение договорённостей +- Проводит регулярные (например каждый спринт) или тематические (например по проекту или конкретной проблеме) ретроспективы. Ретроспектвы приводят к значимому улучшению рабочего процесса + +### Коммуникация +- Не доводит разногласия до деструктивных конфликтов +- Если конфликт произошел-решает его, привлекая руководителя если нужно. +- Презентует свои идеи и предложения и результаты на группу или аудиторию (выступления на общих встречах). +- Дает конструктивную и развивающую обратную связь, подкрепленную фактами + +### Развитие себя и обучение других +- Планирует свое развитие с учетом планов развития продукта и ближайших целей команды. Например +- учит новые языки программирования (Go, Kotlin) на которые переходит компания +- изучает лучшие практики разработки и проектирования микросервисной архитектуры +- Следит за последними трендами в своей области технологий +- По итогам обучения отслеживает динамику развития по тем целям, которые поставил. +- Проявляет терпение к тем, кто обладает меньшими знаниями, умениями и навыками. +- Делится своей экспертизой внутри команды. +- Онбордит новичков + +## Senior + +### Экспертность +- Степень неопределённости высокая. Непонятно что нужно сделать (нет образа результата). Берёт проблему, проводит исследование, сравнивает альтернативы и предлагает решение. Спектр решений широкий и заранее неопределенный. Примеры проблем: +- Приложение должно работать быстрее конкурентов. +- Что нам нужно сделать для автоматического заполнения параметров объявления на основе технических характеристик? +- Как протестировать сервис прайсинга или item storage? +- При принятии решений анализирует и минимизирует возможные риски и негативные последствия. Например +- При проектировании тестовой модели учитывает как работает Авито в целом. +- При добавлении нового сервиса/метода в цепочку вызовов анализирует как это скажется на общем времени ответа. +- Cовместно с командой реализует проекты в максимально короткие сроки, заботится об уменьшении time to market +- Ведёт технический бэклог и/или дорожную карту (roadmap) команды/юнита/проекта +- Разрабатывает стандарты качества кода, тестирования, безопасности, отказоустойчивости и других NFR (Non-functional requirements), а также занимается внедрением/улучшением соответствующих процессов и инструментов. + +### Инженерная культура +- Проактивно ищет неэффективные места в коде/архитектуре/тестовых моделях. Пополняет технический бэклог команды и доносит до владельца бэклога ценность технических изменений. +- При примении новых технологий в рамках своей задачи критически оценивает их пользу и применимость в юните. +- При проектировании больших или высоконагруженных систем проводит защиту на Архитектурном Комитете +- Системно контролирует количество технического долга. Может его оценить. Не допускает ситуации, когда он начнёт тормозить процесс разработки и начнёт мешать вносить изменения. +- В рамках Code Review и в процессе выполнения своих задач выявляет небезопасные подходы и/или уязвимости +- Знает и выбирает изначально безопасные подходы к реализации разрабатываемой им и командой функциональности. + +### Ответственность за результат +- Берёт ответственность не только за себя, но и за работу других в рамках своей задачи/проекта (отвечает за проект). +- Работает над небольшими проектами размером до 1 квартала. +- Как технический владелец проекта планирует и согласовывает работу над ним других членов команды или внешних экспертов. + +### Ориентация на бизнес +- Ставит с командой цель (OKR) на квартал. Связывает её с целями юнита, кластера, компании. +- При проработке задач предлагает альтернативные способы проверки гипотез и технических решений, позволяющие получить данные быстрее/с меньшими затратами +- Делает базовые выводы по результатам проведенного исследования (например делает базовые выводы по а/б тестам: статистически значимый результат или нет; тест показывает плохие результаты на метриках, его нужно остановить). "Подсвечивает" найденные проблемы или успехи. +- Исследует проблемы пользователей и помогает заказчику найти бизнес решение (например: участвует в дискавери спринтах в роли продукт менеджера). + +### Agile Mindset +- Системно улучшает процессы в команде/юните +- Имеет видение целевой модели команды. Знает какой результат хочет получить. +- Формирует план развития команды. Ведёт бэклог для достижения целевой модели команды. +- При поиске и решении проблем выходит за рамки фича-команды, ищет системные проблемы на уровне юнита + +### Коммуникация +- Договаривается, используя стратегию "Win-Win" ("Сотрудничество"). +- Во время обсуждений стимулирует высказывание различных точек зрения и использует их при формировании окончательного решения. + +### Развитие себя и обучение других +- Наставничество Intern, Junior и Middle. Планирует их развитие с учётом профилей инженеров и целей команды. +- Помогает коллеге закрепить полученные знания на практике и перевести в навык. +- Участвует в TechPR. Выступает на внешних конференциях, пишет статьи в профильные блоги. + +## Lead + +### Экспертность +- Придумывает, исследует и планирует развитие большого технического проекта. +- Бэкэнд архитектура всего функционала BuyerX (serp, карточка, фильтры, рубрикатор, url builder) +- Архитектура мессенджера +- Привлечение краудсорсинга к тестированию +- Фрейморк для написания e2e & компонентных тестов, для снижения ручных проверок мобильных приложений и переводу запуска тестов ближе к разработчику. +- Визионерство. Следит за глобальными технологическими трендами и может сделать прогноз с определённой долей вероятности. + +### Инженерная культура +- Внедряет новые подходы и технологии в рамках компании. Оценивает их пользу и применимость. + +### Ответственность за результат +- Работает над средними проектами размером в 2-4 квартала. +- Как технический владелец проекта планирует и согласовывает работу над ним других команд/юнитов или внешних экспертов. + +### Ориентация на бизнес +- Находит технические проблемы, мешающие бизнесу развиваться сейчас или грозящие в ближайшем будущем. +- Планирует и проводит необходимые исследования (например: сплит-тесты, опросы, опыт других компаний) для проверки реальности проблем/пользовательских болей. +- Использует результаты проведённых исследований для аргументации важности предлагаемых решений. +- При работе над задачами учитывает цели юнита и компании на горизонте 1 года и больше. +- Вместе с техническим руководителями формирует техническую стратегию кластера. + +### Agile Mindset +- Системно улучшает процессы в кластере/компании +- Проводит большие ретроспективы состоящие из нескольких юнитов или всего кластера. +- При поиске и решении проблем выходит за рамки команды/юнита, ищет системные проблемы на уровне кластера/организации + +### Коммуникация +- Договаривается, используя стратегию "Win-Win" ("Сотрудничество"). +- Во время обсуждений стимулирует высказывание различных точек зрения и использует их при формировании окончательного решения. + +### Развитие себя и обучение других +- Наставничество Senior. +- Разрабатывает внутренние или внешние курсы и ведёт их как преподаватель. + +## Principal + +### Экспертность +- Создатель/мэйнтейнер систем/решений, которые влияют на уровне cообщества. Компания получает ощутимые конкурентные преимущества за счёт этого. +- Способен инициировать и реализовывать крупные инициативы уровня компании. Примеры: переход от монолитной архитектуры к микросервисной +- Анализирует возникающие проблемы, старается докопаться до сути и решить корневую проблему. Предлагает и продвигает превентивные решения для предотвращения рецидивов. Отличается от Lead и Senior масштабом. Principal думает про весь Авито целиком целиком, а не про какую-то отдельную область. + +### Инженерная культура +- Внедряет новые подходы и технологии в рамках компании. Оценивает их пользу и применимость. + +### Ответственность за результат +- Работает над большими проектами размером в 1 год или больше. +- Как технический владелец проекта планирует и согласовывает работу над ним других юнитов/кластеров или внешних экспертов. + +### Ориентация на бизнес +- Находит технические проблемы, мешающие бизнесу развиваться сейчас или грозящие в ближайшем будущем. +- Планирует и проводит необходимые исследования (например: сплит-тесты, опросы, опыт других компаний) для проверки реальности проблем/пользовательских болей. +- Использует результаты проведённых исследований для аргументации важности предлагаемых решений. +- При работе над задачами учитывает цели юнита и компании на горизонте 1 года и больше. +- Вместе с техническим руководителями формирует техническую стратегию кластера. + +### Agile Mindset +- Системно улучшает процессы в кластере/компании +- Проводит большие ретроспективы состоящие из нескольких юнитов или всего кластера. +- При поиске и решении проблем выходит за рамки команды/юнита, ищет системные проблемы на уровне кластера/организации + +### Коммуникация +- Договаривается, используя стратегию "Win-Win" ("Сотрудничество"). +- Во время обсуждений стимулирует высказывание различных точек зрения и использует их при формировании окончательного решения. + +### Развитие себя и обучение других +- Евангелист внутренних технических продуктов для разработчиков компании или наших open-source продуктов за пределами компании.