Публикация Школы траблшутеров

Как нанимать BI-аналитиков

Время чтения: 12 мин 35 сек
11 июня 2025 г. Просмотров: 269

Собеседование, ПерсоналОлег Брагинский, Максим Мухтаров

Основатель «Школы траблшутеров» Олег Брагинский и ученик Максим Мухтаров рассказывают, как рекрутировать сотрудников, автоматизирующих обновление корпоративной отчётности в отечественных многопрофильных учреждениях здравоохранения.

В крупной частной медицинской сети внедрили BI-систему. Развитие проекта требовало расширения команды. Описав виды должностей и модель компетенций, перешли к составлению профилей кандидатов для публикации вакансий в интернет и продумыванию процедуры отбора.

Процесс рекрутинга включал следующих участников:

  1. Руководитель Управления по работе с данными: присылает сотруднику отдела кадров описание, акцептует кандидатов, проводит собеседование, принимает решение о найме.
  2. HR: оформляет заявку на подбор, выкладывает на веб-площадки, ищет, проверяет отклики, выясняет препятствия к оформлению, организует интервью, высылает оффер.
  3. Кандидат: выкладывает резюме в интернет, отзывается на вакансию, отвечает на предварительные вопросы, проходит собеседование, принимает предложение о работе.
  4. «Бадди»: комментирует CV, уточняет детали или модерирует встречу в зависимости от поставленной начальником задачи на развитие навыков, высказывает мнение об итогах.

Скрининг направлен на поиск соответствий по: а) сроку опыта для должности; б) выполнения функций и ролей в процессе разработки BI-продуктов; в) используемым технологиям: MS SQL Server, SSRS, SSAS, Power BI, PostgreSQL, Airflow; г) языкам программирования: SQL, DAX, Python.

Больше этапов отбора – выше вероятность потерять кандидата в промежутках. В одно интервью умещали: а) рассказ руководителя о компании и процессах подразделения; б) выяснение HR’ом причины смены работы; в) проверку компетенций кандидата; г) вопросы, ответы, обратную связь.

Заочные тестовые задания подтвердили несостоятельность: аппликанты присылали куски кода, сгенерированные ИИ. Особые умельцы прямо на встречах пытались использовать помощников. Стук клавиатуры и взгляды на второй экран во время ответов на вопросы – расстаёмся немедленно.

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

Уровни «Т.1.Проектирования хранилищ» устанавливали вопросами:

  • 0 – каковы концепции реляционной модели данных?
  • 1 – какие существуют подходы к проектированию хранилищ?
  • 2 – как создать масштабируемое и отказоустойчивое решение?

Ожидали услышать словесные маркеры:

  • 0 – «отношение», «атрибут», «домен», «целостность», «нормальная форма»
  • 1 – «Инмон», «Кимбалл», «звезда», «снежинка», «Data Vault», «якорная модель»
  • 2 – «партицирование», «репликация», «балансировщик нагрузки», «мастер», «слейв».

Ступени «Т.2.Администрирования баз данных» определяли, интересуясь:

  • 0 – каковы элементы СУБД?
  • 1 – как автоматизировать обслуживание?
  • 2 – как обеспечить партицирование и репликацию?

Стремились обнаружить в ответе фразы:

  • 0 – «имя для входа», «пользователь», «право», «триггер», «джоб»
  • 1 – «план обслуживания», «бэкап», «индекс», «статистика», «сжатие файлов»
  • 2 – «группа доступности», «отказоустойчивый кластер», «функция партицирования».

Уровни «Т.3.Организации ETL-процессов» устанавливали вопросами:

  • 0 – как разбить сложный запрос на шаги?
  • 1 – как оптимизировать время исполнения кода?
  • 2 – как настроить инкрементальное перемещение данных?

Ожидали услышать словесные маркеры:

  • 0 – «временная таблица», «общее табличное выражение», «подзапрос»
  • 1 – «план выполнения», «сканирование индекса», «хинт», «разбиение на пачки»
  • 2 – «механизм захвата изменений», «сравнение ключей», «временная метка», «хеш».

Ступени «Т.4.Использования систем контроля версий» определяли, интересуясь:

  • 0 – каковы основные команды git?
  • 1 – как разрешить конфликты и соединить ветки в GitLab?

Стремились обнаружить в ответе фразы:

  • 0 – «pull», «status», «commit», «push», «origin», «restore»
  • 1 – «режим правок в веб-интерфейсе», «автоматический merge».

Уровни «Т.5.Разворачивания решений» устанавливали вопросами:

  • 0 – как перезапустить контейнер?
  • 1 – как самостоятельно развернуть решение?
  • 2 – из каких шагов может состоять CI/CD-пайплайн?

Ожидали услышать словесные маркеры:

  • 0 – «подключение по ssh», «интерфейс командной строки Linux»
  • 1 – «docker-образ и -файл», «nexus», «compose нескольких контейнеров»
  • 2 – «раннер», «yaml», «запуск bash-скриптов», «линтер», «прогон тестов»

Ступени «Т.6.Визуализации показателей» определяли, интересуясь:

  • 0 – как загрузить данные в Power BI-дэшборд?
  • 1 – каковы элементы и принципы работы Airflow?
  • 2 – каковы виды моделей и компоненты OLAP-кубов?

Стремились обнаружить в ответе фразы:

  • 0 – «прямой запрос», «импорт по расписанию», «VertiPaq», «редактор Power Query»
  • 1 – «ориентированный ациклический граф», «задача», «оператор», «сенсор», «xcom»
  • 2 – «табличная и многомерная», «измерение», «мера», «связь», «иерархия», «секция».

Уровни «К.1.Взаимодействия с конечным заказчиком» устанавливали вопросами:

  • -1 – как реагировали на обращения пользователей?
  • 0 – какими BI-продуктами интересовались самостоятельно?
  • 1 – как предотвращали вопросы и жалобы просматривающих?

Ожидали услышать словесные маркеры:

  • -1 – «забывал принцип фильтрации», «вспоминал алгоритмы и категоризацию»
  • 1 – «замечал аномалии», «понимал источники пустот», «расширял визуализации»
  • 2 – «предусматривал ссылку на документацию», «заполнял корпоративный глоссарий».

Ступени «К.2.Взаимодействия с методологом-верификатором» определяли, интересуясь:

  • -1 – что предпринимали в случаях плохо составленного технического задания?
  • 0 – как добивались автономного выполнения задачи и предотвращали доработки?
  • 1 – как выясняли конечную потребность и адекватность запроса на форму продукта?
  • 2 – как устраняли противоречия в функционально однородных элементах отчётности?

Стремились обнаружить в ответе фразы:

  • -1 – «обращался с вопросами к коллегам», «просил поучаствовать на встрече»
  • 0 – «помогал составить прозрачный алгоритм», «подбирал удобные визуализации»
  • 1 – «определял заказчиков», «предлагал последовательные варианты BI-продуктов»
  • 2 – «переводил отчёты на единый источник», «рекомендовал пополнить бизнес-словарь».

Уровни «К.3.Взаимодействия с экспертом по системе-источнику» устанавливали вопросами:

  • -1 – как выгружали незнакомые данные по текущим коннекторам?
  • 0 – какие шаги предпринимали для подключения к новому источнику?
  • 1 – как заказывали доработку экспорта или отражения бизнес-процесса?

Ожидали услышать словесные маркеры:

  • -1 – «обращался к коллегам за информацией об источнике»
  • 0 – «просил создать учётную запись на чтение», «указывал сетевую директорию»
  • 1 – «составлял задание на доработку API», «предлагал добавить столбцы в таблицу».

Ступени «К.4.Взаимодействия с коллегами» определяли, интересуясь:

  • -1 – по какому поводу обращались к старшим?
  • 0 – какими способами справлялись с проблемами?
  • 1 – как приобретали знания и развивали членов команды?

Стремились обнаружить в ответе фразы:

  • -1 – «просил пояснить ТЗ от заказчика», «пересылал скриншоты ошибок»
  • 0 – «пользовался базой знаний», «искал в интернет», «изучал готовые решения»
  • 1 – «исправлял и объяснял код», «тестировал и распространял новые инструменты».

Уровни «У.1.Планирования» устанавливали вопросами:

  • -1 – как понимали, что успеете сделать за день?
  • 0 – как замеряли свою недельную пропускную способность?
  • 1 – как распределяли комплексную задачу в несколько спринтов?
  • 2 – на основе каких принципов выставляли цели команде на квартал?

Ожидали услышать словесные маркеры:

  • -1 – «знакомый источник», «понимание запроса», «время работы скриптов»
  • 0 – «происхождение и типы задач», «готовность к разработке», «статистика»
  • 1 – «декомпозиция по слоям», «доработка смежных систем», «серия BI-продуктов»
  • 2 – «дэшборд процессных метрик», «каскадирование целей», «согласование планов».

Ступени «У.2.Регламентирования» определяли, интересуясь:

  • 0 – в каких случаях обновляете информацию в базе знаний?
  • 1 – как описываете незнакомый инструмент или аспект применения?
  • 2 – насколько детально документировали выделенный этап процесса?
  • 3 – какие регламенты создали по зонам ответственности подразделения?

Стремились обнаружить в ответе фразы:

  • 0 – «устаревшая константа», «новая ошибка», «неописанное ветвление»
  • 1 – «доступ», «настройка», «команда», «графический интерфейс», «пример»
  • 2 – «необходимый ресурс», «правило наименования», «ссылка на инструкции»
  • 3 – «производственный и административный процесс», «проект и должностная функция».

Уровни «У.3.Руководства» устанавливали вопросами:

  • 0 – как передавали задачи на период отсутствия?
  • 1 – как делегировали работу курируемым коллегам?
  • 2 – как распределяли нагрузку между членами команды?

Ожидали услышать словесные маркеры:

  • 0 – «включал в переписку», «проводил брифинг», «отмечал в таск-трекере»
  • 1 – «декомпозировал задачу», «детализировал ТЗ», «фокусировал на зонах роста»
  • 2 – «модерировал встречи», «закреплял заказчиков», «измерял производительность».

Ступени «У.4.Обеспечения» определяли, интересуясь:

  • -1 – как поступали с нефункциональными требованиями?
  • 0 – как оценивали долю решения в вычислительных мощностях?
  • 1 – на основе каких данных прогнозировали потребность в ресурсах на период?
  • 2 – как добивались равномерной загрузки серверов и удаляли неактуальные BI-продукты?

Ожидали обнаружить в ответе фразы:

  • -1 – «не занимался оптимизацией, пока позволяли мощности»
  • 0 – «смотрел размер таблицы в БД», «замерял время процедуры в джобе»
  • 1 – «мониторил занятость места на дисках», «заказывал виртуальные машины»
  • 2 – «определил категории периодов обновлений», «следил за использованием отчётов».

Компетенции «Т.3.Организация ETL-процессов» и «Т.6.Визуализация показателей», кроме рассказа об опыте и теоретических выкладок, требовали быстрых средств установления уровня умений. Заданиями выясняли, что из программирования у кандидата «на кончиках пальцев».

Первая задача на владение SQL: «Соберите строки таблицы №1, которые находятся в таблице №2. Общий столбец называется ID. Когда EXISTS и INNER JOIN приведут к разному результату?» Вторая: «Выведите сотрудников со вторыми по убыванию размера зарплатами в подразделениях».

Кодирование на языке python проверяли заданием: «GET-запрос по пути example.com/services выдаёт json в виде [{‘id’:1, ‘name’: ‘service1’}, …]. Авторизация по токену abc123. Сохраните в таблицу table1 базы данных db1 сервера host1. Аутентификация SQL, логин: login, пароль: password».

Конструирование формул на языке DAX тестировали задачей: «В Power BI-дэшборд выгружена таблица Table со столбцами: PatientID, PatientType, ClinicName, VisitYear. Посчитайте уникальных пациентов в клиниках с типом «Первичный» за предыдущий год от выбранного в фильтре».

Умение создавать DAG’и Airflow проверяли заданием: «Разработайте даг с тремя последовательными задачами в виде python-операторов: 1) выгрузить данные за вчера; 2) удалить период в STG; 3) загрузить сохранённое. Присвойте расписание: запускать каждый день в 02:00».

В финале кейс: «Соберите базу для обзвона с целью замера NPS. Требования: а) столбцы – ИО, телефон, клиника, пол, тип оплаты; б) пациенты за три последних месяца; в) по клинике №1 – 1’000 человек, №2 – 100; г) 50% женщин и мужчин; д) 30% рассчитываются за наличные, 70% по ДМС».

Кандидат должен был проговорить алгоритм сбора данных по шагам с временными таблицами и SQL-запросами. Схему базы данных собеседуемый выбирал на своё усмотрение. В конце предлагали усложнение: «Представьте, что клиник 40 и людей за выбранный период не хватает».

В ходе встречи модерирующий выставлял интервьюируемому оценки. Предложение о работе высылали при 11 из 14 компетенций на целевых уровнях и трёх оставшихся на одну ступень ниже. Зафиксированные значения нанятый должен был подтвердить в течение испытательного срока.

Разбалованные программисты готовы терпеть многоэтапную процедуру и соглашаться на низкую зарплату только при сильном бренде работодателя. Непрофильным компаниям остаётся привлекать продуманностью интервью и перспективами широкой горизонтальной специализации.

Вопреки традиционному фокусу ИТ-специалистов на технические компетенции, решающее значение приобретает впечатление о коммуникативном и управленческом кластере. Проблема с технологиями редкая и узкая. Важна общая адекватность кандидата и демонстрируемые ценности.

«Красным» подразделениям – источникам издержек не доплыть до «голубого» и, тем более, «зелёного» океанов центров прибыли. Берите тех, кто с начальных должностей исповедует идеологию оптимизации ресурсов и бережливого производства, постоянно повышая выработку.