Подробнее про BI разработчиков в Авито на [лендинге Avito team](https://career.avito.com/directions/analytics/). А в этой статье знакомим с нашим виденьем профессии BI, ожиданиями от разных грейдов и условиями перехода между ними.
# Матрица компетенций BI IC
## Цели и задачи BI-разработчика
**BI-разработчик отвечает за загрузку, подготовку и обработку данных, обеспечение их качества, создание переиспользуемых источников и разработку отчетности для пользователей.**
BI-функция находится в стадии активного развития, поэтому фокус задач может варьироваться в зависимости от зрелости конкретной аналитической команды и домена, но есть общий для всех функционал:
### Разработка автоматизированной системы отчетности
- сбор и анализ требований пользователей;
- приоритезация запросов пользователей;
- автоматизация бизнес-логики метрик;
- создание дашбордов и их дальнейшее развитие и продвижение.
### Работа с ETL-процессами и витринами данных
- разработка, поддержка и оптимизация витрин данных;
- организация и улучшение потоков загрузки и трансформации данных.
### Обеспечение качества данных и отчетности
- контроль актуальности и корректности данных в отчетах;
- оптимизация скорости загрузки и обновления;
- устранение дублирования и несогласованностей.
- системная работа с качеством данным (сертификация, dq-контракты)
### Формирование продового слоя витрин и отчетов
- создание объектов, рекомендованных для переиспользования;
- обеспечение повышенных требований к качеству, стабильности, уровню сервиса и документации.
### Системное развитие BI-отчетности
- анализ потребностей бизнеса в отчетности;
- подбор оптимальных решений для их покрытия;
- мониторинг использования и ценности отчетов.
- продуктовый подход ко всему жизненному циклу отчетности
В разных командах возможно разное соотношение «инженерных» задач (ETL, витрины, код) и «репортинговых» задач (дашбординг, сбор требований, работа с заказчиком) в зависимости от домена. Это может влиять на ожидания от конкретной роли при найме и развитии, усиливая значимость отдельных навыков, но при этом дает пути развития для BI-разработчиков с разными наборами компетенций.
## Профессиональные качества BI-разработчика
### Базовые ожидания (для всех уровней)
- системное мышление — умение видеть целостную картину и анализировать детали;
- эффективная коммуникация — способность объяснять сложные вещи как техническим, так и бизнес-пользователям;
- ориентация на клиента — глубокое понимание бизнес-контекста и ценности решений.
### Лидерские качества
Ожидаются с уровня Senior, но приветствуются на всех уровнях.
### Ответственность за результат
BI-разработчик является главным ответственным за BI-проект. Он структурирует работу, оптимально использует ресурсы, ставит под сомнение неоптимальные требования и предлагает альтернативные решения.
Знает когда в разработке отчетности важны скорость и гибкость, а когда — осознанный продуктовый подхода, продуманный UX и продвижение. Он архивирует неиспользуемые отчеты, предварительно анализируя причины и возможности их восстановления.
В работе применяется подход Fail-Fast — гипотезы проверяются быстро и с минимальными затратами.
### Инициативность и проактивность
BI-разработчик оценивает ценность своей работы для бизнеса и инициирует улучшения, предлагает инновации, создает прототипы и презентует решения. Он заранее выявляет риски, устраняет блокеры и открыто обсуждает ограничения и проблемы с заказчиком.
Фраза «это не входит в мои обязанности» не является частью профессионального подхода BI-разработчика.
### Коммуникация результатов
BI-разработчик ясно формулирует мысли, выбирает подходящие каналы коммуникации, уверенно презентует результаты и вовлекает аудиторию в обсуждение. Умеет влиять на решения других специалистов — инженеров, аналитиков, руководителей бизнеса.
### Саморазвитие
BI-разработчик открыт к обучению и изменениям, применяет новые знания на практике и делится ими с командой. Он ищет новые вызовы, предлагает инициативы, ставит амбициозные цели и стремится к высоким стандартам качества.
## Краткое описание грейдов
В зависимости от грейда у нас разные ожидания от soft и hard компетенций, но в любом случае мы ожидаем, что BI разработчик любого грейда способен работать автономно и ответственно в рамках выделенного ему проекта того или иного масштаба.
### Junior BI-разработчик
Выполняет декомпозированные задачи под контролем тимлида, но управляет ожиданиями в рамках этих задач самостоятельно.
### Middle BI-разработчик
Самостоятельно выполняет задачи в рамках направления или юнита, приоритезирует и договаривается со стейкхолдерами. Свои сроки и приоритеты валидирует у тимлида, управляет своей нагрузкой на горизонте месяца.
### Senior BI-разработчик
Генерирует и самостоятельно выполняет задачи высокого уровня сложности и неопределенности в рамках своей доменной области, управляет ожиданиями стейкхолдеров и своей нагрузкой на горизонте квартала.
### Lead BI-разработчик (экспертный трек)
Дополнительно к уровню Senior демонстрирует лидерство в направлениях, значимых для BI-функции, нескольких вертикалей, горизонталей или всей компании. Может проявляться как в экспертном лидерстве, так и в проектном или кросс-функциональном. Штучный специалист, который решает проблемы экстра-сложности.
## Компетенции
На данный момент у нас 5 софт компетенций (с оценками по уровням J -> M -> S -> L) и 5 хард компетенций (с балльной оценкой 1-2-3).
Софт компетенции подтверждаются на каждом перформанс-ревью (2 раза в год). Мы ожидаем, что разработчик проявляет все софт компетенции на своем уровне, провал в софтах - весомый повод для менеджера задуматься о корректировках. Синьоры также каждое ревью защищают BI проект, который комплексно оценивается по уровню сложности и импакта.
Для оценки уровня проекта разработан “Калькулятор сложности”. Критерии в нем созданы так, чтобы оценивать уровень проектов разной направленности - как инженерный так и репортинговый. Оцененный проект используется для защиты компетенции "Формализация и решение задачи".
Хард скиллы подтверждаются только при переходе на новый уровень (1->2, 2->3), старые значения сохраняют свои уровни. Уровни 1 и 2 защищаются на калибровках, уровень 3 - через защиту в проекте и отзывы назначаемого жюри.
**Комплексно, матрица компетенций выглядит следующим образом:**
### Soft skills
| **Компетенция** | **Junior BI Developer** | **BI Developer** | **Senior BI Developer** | **Lead BI Developer** |
| --- | --- | --- | --- | --- |
| **Поиск и управление задачами** | Не ожидается. | Нахожу задачи не ниже junior level.
(или)
При получении запроса анализирую есть ли более оптимальные решения для реализации требований | 1. Нахожу задачи не ниже middle level.
(или)
Предотвращаю ненужное создание дашбордов и витрин, подбираю подходящие инструменты для реализации
2. Участвую в формировании реестра потребностей в отчетах и витринах и их покрытия существующими объектами. | 1. Нахожу задачи не ниже senior level.
2 Системно анализирую потребности доменной области: несу ответственность за реестр потребностей в отчетах и витринах с оценкой их ценности для бизнеса и покрытия существующими объектами.
3. Участвую в разработке стратегии развития BI доменной области. |
| **Формализация и решение задачи**
_Компетенция зависит от уровня проекта_ | Самостоятельная формализация, решение и интерпретация проекта уровня junior | Самостоятельная формализация, решение и интерпретация middle проекта | Самостоятельная формализация, решение и интерпретация senior проекта. | Самостоятельная формализация, решение и интерпретация lead проекта. |
| **Управление ожиданиями и планирование** | Управляю ожиданиями в рамках непосредственной реализации задачи:
1. Запрашиваю приоритет у руководителя
2. Уведомляю менеджера об изменениях сроков. | 1. Даю обоснованные оценки для своих задач.
2. Планирую свои задачи на уровне нескольких спринтов, согласую планы и приоритеты с менеджером и стейкхолдером.
3. Проактивно коммуницирую с заказчиком относительно сроков и рисков.
4. Уведомляю менеджера о конфликте задач или изменениях сроков, предлагаю варианты решения. | 1. Планирую задачи на уровне квартала, согласую планы со стейкхолдерами.
2. Определяю приоритеты, учитывая весь комплекс факторов
3. Даю заказчикам свои коммиты и отвечаю за достижение результата.
4. Формулирую свои / декомпозирую командные ОКРы и отвечаю за их исполнение. | 1. Планирую сложные и длительные (больше квартала) проекты
2. Строю роадмапы с участием других команд / функций и согласовываю их со всеми заинтересованными сторонами.
3. Оцениваю весь комплекс факторов и рисков, влияющих на сроки |
| **Продуктовый подход к отчетам и данным** | Анализирую причины, почему мои BI/дата-объекты не используются, предпринимаю действия по реанимации или архивирую. | По моим BI/дата объектам:
1. Провожу регулярный анализ использования объектов, собираю обратную связь и реализую меры для прокачки продуктовых метрик отчетности
2. Оптимизирую структуру отчетности, реанимирую или архивирую неиспользуемые объекты
3. Контролирую автосертификацию объектов.
4. Социализирую свои BI/дата объекты (демо, обучение, release-notes). | В дополнение к уровню Middle
- Курирую реализацию продуктового подхода в рамках моей доменной области.
- Поддерживаю высоким уровень сертификации отчетов и витрин в домене.
- Участвую в разметке и ревью ключевых отчетов, датасетов и витрин. | В дополнение к уровню Senior:
1. Лидирую функциональный проект, согласованный с Head of BI на уровне нескольких доменных областей первого уровня всей BI функции.
2. Анализирую потенциальную и фактическую ценность ключевых BI решений/проектов, возврат инвестиций. |
| **Обмен знаниями и развитие BI роли**
Два трека на выбор:
1) (О) Обмен знаниями
2) (Р) Развитие BI роли
Для senior+ необходимо на middle уровне проявлять второй трек. | Не ожидается. | О: Презентую результаты своей работы на аудиторию шире, чем непосредственные заказчики моей команды. Публикую гайды/инструкции для базы знаний, которыми воспользовались другие люди
Р: Вношу свой вклад в развитие найма, онбординга или обучения (пишу материалы для обучения/онбординга,
или создаю новые задачи/кейсы для технических секций,
или провожу технические секции) |
О: Социализирую использование сложных инструментов и подходов к разработке
(или) Презентую свою работу/ делюсь своими наработками и знаниями на общих для функции/компании мероприятиях
(или) Вношу весомый вклад в развитие функционального проекта BI
(или) Пишу внешние статьи / участвую в меропритиях
Р: Провожу интервью с кандидатами и вношу вклад в развитие найма
(или) являюсь наставником или ментором BI dev | О: Выступаю с докладами на внешних митапах и конференциях
(или) Курирую или организую внутренние или внешние мероприятия для обмена знаниями,
Р: Отвечаю за развитие одного из этапов найма
(или) курирую один из образовательных треков (онбординг, обучающие курсы, менторские программы) |
### Hard skills
В оценке хардов мы используем не уровни грейдов, а балльную систему. Каждая компетенция оценивается от 0 до 3 баллов, и итоговый грейд определяется по их сумме. Это сделано для того, чтобы обеспечить гибкость оценки биайщика: в одной команде требуется более инженерный склад компетенций, в другой более репортинговый. В некоторых командах отчетность делается в BI системе, в некоторых генерируется в питоне и рассылается внешним пользователям.
| **Компетенция** | **Описание** | **L1** | **L2** | **L3** |
| --- | --- | --- | --- | --- |
| **ETL** | Проектирование оптимальной модели данных и схемы хранения, преобразования, нормализации и обновления данных. Устранение ошибок в ETL-процессах, оптимизация модели данных и бизнес-логики для ускорения, внедрение проверок качества | 1. Знаю базовый синтаксис описания загрузок в DDS.
Могу построить витрину в DMA слое и датасет в Redash с учетом бизнес логики и потребностей использования.
2. Умею находить и исправлять ошибки в ETL-процессах.
Контролирую отсутствие избыточности хранения данных. | 1. Могу спроектировать и реализовать оптимальную модель данных
Схема хранения и преобразования данных оптимальна Построенная схема данных закрывает потребность в данных по выбранной сущности в рамках одного продукта.
2. Могу оптимизировать модель данных и предложить оптимизацию бизнес логики для ускорения получения результата.
Есть успешный пример оптимизации с улучшением скорости обработки данных. | 1. Могу спроектировать и реализовать оптимальную модель данных
2. Итоговый результат работы модели данных стабильно и контролируемо работает в проде, закрывает потребность в данных по выбранной сущности, переиспользуется в других командах и полезен для них, документирован, сами объекты покрыты тестами/алертами.
3. В модели используется большое количество объектов с значительной обработкой данных
В качестве подтверждения требуется отзыв DWH инженера. |
| **SQL/DWH** | Свободное владение SQL, написание оптимальных запросов для работы с большими данными, учет особенностей Vertica, ClickHouse и Trino, контроль перфоманса | 1. Свободно владею SQL: могу написать правильный и оптимальный запрос к известному источнику данных. Знаю OLAP специфику SQL, Оконные функции, CTE
2. Пишу оптимизированные SQL-запросы. Использую разные СУБД в зависимости от задач (vertica, trino, clickhouse) | Контролирую метрики перфоманса существующих обработок данных, используя особенности разных СУБД | 1. Пишу и оптимизирую SQL код высокой сложности: 3V (Volume, Velocity, Variety)
2. Использую в решении задач, связанных с хранилищем не SQL-решения там, где такие решения позволяют добиться значимой оптимизации.
3. Итоговый результат стабильно работает в проде, используется пользователями и полезен для них, логика работы и бизнес-смысл документированы.
В качестве подтверждения требуется отзыв DWH инженера. |
| **Redash** | Владение инструментом - Создание базового и продвинутого функционала дашбордов, корректное использование датасетов для оптимизации скорости | 1. Я владею функционалом redash для выполнения базовых требований в дашборду: создание чартов, параметров, кверей, произвожу дебагинг элементов
2. Могу подключаться к источникам.
Делаю корректный выбор между датасетом и live подключением, с учетом использования кверей, чартсов и параметров | 1. Я использую построении отчетов более сложные функциональные элементы:
- Расчет в дашборде сравнительных показателей (DoD,MoM, YoY)
- Вычисления с использованием параметров (например расчет top-N, split by в чарте)
- Ссылки для навигации между связными дашбордами, другими приложениями
- Использую кросс-фильтрацию между чартами и дрилл-даун функционал.
2. Могу использовать несколько датасетов для оптимизации скорости работы.
Понимаю ограничения использования различных источников, использую их оптимально. | В дополнение к уровню 2:
1. Я создаю Redash отчеты высокой сложности.
- Создаю систему дашбордов как приложение, состоящее из нескольких дашей разного типа, с разными пользовательскими сценариями для 3+ бизнес сущностей, высокими требованиями к качеству визуализации, с обоснованным использованием сложных технических решений
- Итоговый отчет стабильно работает в проде, логика и технические элементы документированы, сам отчет сертифицирован.
- Датасеты отчета оптимальны - не содержат нехарактерных для clickhouse методов обработки и типов данных и имеют специфические алерты на качество данных.
В качестве подтверждения требуется ревью проекта.
2. Вношу вклад в развитие продукта - предложил фичу, набравшую 10+ голосов и принятую в беклог продукта, или сделал pull request, принятый в проде продукта |
| **Визуализация данных** | Выбор чартов под задачу, Выбор оптимального layout дашборда в зависимости от кейса, работа с UX, цветом, формой, шрифтами и другими визуальными элементами | 1. Умею подбирать базовые типы графиков (bar, stacked, line charts, tree map, area chart, таблицы, фактоиды) исходя из задачи.
2. Я применяю базовые требования (чеклист) к дизайну и UI/UX в BI:
- Настроены фильтры и экшены
- Есть футер/хедер
- Подписи, легенды, тултипы адекватно оформлены
- Цвета, шрифты, форматы чисел выбраны из стандартных палитр
- Документация и подсказки в интерфейсе
- Есть индикатор актуальности данных | 1. Использую расширенный набор чартов, в том числе boxplots, scatterplot, heatmaps, treemaps, waterfalls, sankey, фактоиды с динамиков и дельтами, таблицы с доп фунционалом. Применяю основные принципы дизайна дашбордов.
2. Я разрабатываю и согласую мокап дашборда с Заказчиком. Аргументирую свои решения, выбор графиков на встречах с бизнесом, обосновывая их оптимальность. | В дополнение к уровню 2:
1. Мои дашборды не содержат ошибок с точки зрения принципов визуализации данных и соответствуют расширенным требованиям:
- Layout, чарты и структура отчета оптимальны для бизнес задачи, данных и аудитории.
- Нет ошибок в работе с цветом в дашбордах
- Используются продвинутые принципы дизайна дашбордов (Тафти, гештальт, etc)
В качестве подтверждения требуется ревью проекта.
2. Вношу вклад в развитие культуры визуализации:
- cоздал переиспользуемый шаблон в echarts
(или) принял участие в "прожарке" в качестве участника или в члена жюри.
- (или) разработал учебный продукт/материал, используемый как часть общекорпоративного подхода.
- (или) обучил коллег применять принципы дизайна дашбордов (в рамках ИПР, менторства) |
| **Python** | Дополнительный:
анализ данных с циклами, pandas, requests и PoC на plotly, разработка алгоритмов и автоматизированные микросервисов в PaaS | 1. Владею базовыми методами обработки данных и решаю точечные задачи. Циклы, условия, pandas, requests. Умею подключиться к вертике из питона.
2. Могу получить данные с системы источника и провести их анализ для раскладки.
3. Мой код отвечает условию читаемости.
4. Могу накидать PoC на plotly. | Составляю алгоритмы из базовых инструментов, описанных в уровне 1, для решения задач.
Т.е. на выходе получается фреймворк для регулярного решения типовых задач при процессинге данных. | Создаю автоматизированные решения для внутренних или внешних пользователей (тулы для генерации дайжестов, слайдов, рассылок, ботов, инсайтов и т.д.)
Решение:
- Включает написание микросервиса в PaaS.
- Включает заведение метрик для сервиса в графане.
- Не дублирует существующие функции инструментов платформы и имеет доказанную пользу бизнесу.
- Стабильно работает в проде, логика и технические элементы документированы.
В качестве подтверждения требуется отзыв разработчика. |
#### Минимальные требования к Hard скиллам
После того, как каждая хард компетенция оценена, делается вывод какому грейду это соответствует
| **Junior BI Developer** | **BI Developer** | **Senior BI Developer** | **Lead BI Developer** |
| --- | --- | --- | --- |
| Сумма баллов >= 4
Минимальные уровни:
SQL/DWH = 1
Redash = 1
ETL = 1
Визуализация данных = 1 | Сумма баллов >= 7
Баллы по каждой компетенции >= указанных уровней:
Минимальные уровни по компетенциям:
SQL/DWH = 2
Redash = 2
ETL = 2
Визуализация данных = 1
Опциональный вариант с Python:
Компетенция Python - может использоваться при нехватке баллов для достижения требуемой общей суммы.
При этом повышается требование к общей сумме баллов до >= 8 | Сумма баллов >= 8
Хотя бы одна из компетенций = 3.
Баллы по каждой компетенции >= указанных уровней:
Минимальные уровни по компетенциям:
SQL/DWH = 2
Redash = 2
ETL = 2
Визуализация данных= 1
Опциональный вариант с Python:
Компетенция Python - может использоваться при нехватке баллов для достижения требуемой общей суммы.
При этом повышается требование к общей сумме баллов до >= 9. | Сумма баллов >= 9
Хотя бы две компетенции = 3.
Баллы по каждой компетенции >= указанных уровней:
Минимальные уровни по компетенциям:
SQL/DWH = 2
Redash = 2
ETL = 2
Визуализация данных = 1
Опциональный вариант с Python:
Компетенция Python - может использоваться при нехватке баллов для достижения требуемой общей суммы.
При этом повышается требование к общей сумме баллов до >= 10. | |
## Требования к переходу между грейдами
Переходы между уровнями - это не что-то само собой разумеющееся или что случается по истечению времени: сначала BI Разработчик начинает полноценно перформить на следующем уровне и только потом происходит переход.
### Условия переходов между уровнями
Есть два ключевых условия перехода:
1) Подтверждение soft скилов в матрице компетенций на следующем уровне
2) Выполнение условий по хардам (минимальный уровень компетенций, минимальная сумма баллов по уровням хардов)
### Junior BI → Middle BI
От JBI ждут роста до следующего уровня в течение 1 года. Переход осуществляется по результатам калибровки при подтверждении оценки Хороший результат+
### Middle BI → Senior BI
От Middle BI ждут роста до следующего уровня в течение 1 - 2 х лет. К уровню Senior BI должны стремиться все BI разработчики. Дальнейший рост необязателен. Обязательные условия перехода:
Для soft-компетенции (Формализация и решение задачи) проект описывается и презентуется на калибровках с помощью Калькулятора синьорности BI проекта
Для hard-компетенции уровня 3 проект оформляется и проходит ревью назначенного жюри
Переход осуществляется по результатам калибровки при подтверждении оценки Хороший результат+.
После того как сотрудник достиг уровня Senior BI он может продолжить рост как по экспертной позиции Lead BI, так и по менеджерской - Team Lead BI.
### Senior BI → Lead BI (IC role)
Для перехода на уровень Lead:
Оформленный и защищенный проект lead-уровня, с подтверждением его уровня влияния и ценности
Как минимум две компетенции из софтовой секции должны подтверждаться в рамках участия в функциональном проекте BI и подтверждаться на уровне Head of BI.
Минимум 2 хард компетенции защищены на 3 балла перед жюри
Переход осуществляется по результатам калибровки
### Senior BI → Team Lead BI
Решение принимается в составе DL/UL, Head of BI по предложению DL/UL.
Обязательные условия:
Обоснование необходимости данной роли
Как минимум две компетенции из софтовой секции должны подтверждаться в рамках участия в функциональном проекте BI и подтверждаться на уровне Head of BI.
Acting роль является обязательной перед промо
Для калибровки BI Team Lead используется матрица компетенций BI Managers levels