HR-аналитика: почему ваши метрики врут (и как это заметить)

от автора

Меня зовут Ксения Зайцева и я старший бизнес-аналитик в компании «ДАР». Я хотела бы поделиться кейсом, который поможет начинающим тимлидам заранее предусмотреть проблемы из разряда «вроде всё понятно, но что-то не сходится».

В HR-аналитике есть метрики, которые «должны считаться просто»: выбрать статус, взять дату, посчитать кандидатов. На практике такие истории иногда заканчиваются нулём, потом несколькими миллиардами, а потом неделей расследований — как вообще устроены данные и почему всё это работает.

Мы с таким встречались – дальше расскажу, где именно в нашем кейсе ломалась логика и как искать контрпримеры, когда цифры выглядят правдоподобно, но не сходятся.

Итак, история. Однажды мы пересобирали уже существующие дашборды по подбору персонала для крупной промышленной компании и начали с самого несложного показателя — количества найденных кандидатов.

Задача на старте выглядела несложной:

·       перевести дашборды в общий контур к другим дашбордам нашей системы

·       доработать витрины

·       немного изменить визуальное отображение, чтобы все смотрелось гармонично

Решено было начать с самого понятного – изучить текущие дашборды, чтобы перенести их логику в новую систему.

Приключение на 20 минут, вошли и вышли?

С чего мы начали

Первое знакомство с дашбордами слегка охладило наш энтузиазм.

Оказалось, что документации не существует, доступ к редактированию дашбордов есть только у одного разработчика, а внутри дашбордов – код на тысячи строк.

Этот код создавал промежуточные таблицы, технические поля, делал предрасчёты и считал всё на лету. Читать это было сложно – особенно нам, аналитикам, не самым большим экспертам по DAX.

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

Перед встречей я изучила текущие дашборды, составила список метрик, набросала гипотезы о том, как они считаются, и принесла всё это на встречу.

Почти час мы обсуждали первый показатель, Количество найденных кандидатов. После встречи у меня был исчерканный блокнот и много новых знаний о процессе подбора, но крайне слабое понимание того, как именно считать метрику – и сходимся ли мы в этом вопросе с заказчиком.

Тем не менее логика казалась очевидной:

·       уникальные люди

·       уникальные вакансии

·       статус «Новый»

·       считаем по дням

·       агрегируем как сумму

На практике же всё оказалось немного сложнее.

Первая проверка данных

После этого мы решили сверить результаты с существующим дашбордом.

Написали скрипт для расчёта. Сначала классически получили ноль, потом – несколько миллиардов.

После пары исправлений и учета технических полей цифра стала похожа на правду – около 35 новых кандидатов в день для одного из предприятий.

На существующем дашборде мы увидели 40 и с облегчением выдохнули – почти сошлись! Подумаешь, дельта в 10%.

Дальше план был простой:

·       выгрузить список наших 35 кандидатов

·       отправить его заказчикам

·       найти потерянных пятерых

Но на этом этапе выяснилось кое-что неожиданное.

Когда источник не помогает

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

Система-источник оказалась довольно ограниченной в этом плане: максимум можно было выгрузить большую таблицу и дальше разбираться с ней вручную.

Нам выгрузили такую таблицу, и моим любимым методом пристального взгляда быстро выяснилось, что:

·       даты в выгрузке могут быть неправильными (иногда расходились на сутки, иногда больше)

·       из-за этого отбор по дате фильтрует не все, что нужно

·       использовать эту выгрузку для полноценной проверки почти невозможно

В итоге кандидатов для конкретной даты приходилось собирать буквально руками, но даже это не давало полной уверенности в результате. Довольно быстро стало понятно, что проблема не только в формуле, а в самих данных. Задача «пересчитать метрику» в какой-то момент превратилась в попытку разобраться – а что вообще происходит в данных?

Что ломало метрику?

После нескольких подходов стало понятно, что проблем у нас сразу несколько.

1.     Даты.

На дашборде есть возможность фильтровать данные по произвольному периоду. При анализе кандидатов возникает классический вопрос: какую дату мы должны учитывать?

Если использовать дату статуса кандидата, мы теряем людей, которые были добавлены раньше, но всё ещё находятся в процессе подбора – в какой-то момент часть кандидатов просто исчезает из метрики, и вместе с ними начинает меняться конверсия в найм.

2.     Особенности процесса.

Мы нашли в базе кандидатов, которые сразу попадали на этап интервью, минуя этап «Новый». Оказалось, в системе такое возможно для старых периодов и не является ошибкой – таких кандидатов также нужно учитывать.

3.     Большое количество дублей.

Оказалось, что в историю кандидатов пишутся все изменения – даже если в вакансии изменили ее плановую дату закрытия или один из тегов. Вакансии могут несколько раз переоткрываться, а кандидат может откликнуться на несколько вакансий, даже на разные предприятия.

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

Почему дашборд работал и не вызывал вопросов?

В какой-то момент возник вопрос – почему старая версия дашборда не вызывала серьёзных вопросов?

Причин оказалось несколько.

Во-первых, в системе-источнике нет удобных средств для проверки данных. Чтобы проверить цифры, нужно вручную:

1.     найти вакансию, которая подходит под все требования

2.     посмотреть всех кандидатов для нее

3.     повторить это десятки раз для всех вакансий

4.     повторить это в следующем месяце

Теоретически звучит хорошо, но на практике этим обычно занимаются только очень мотивированные (или имеющие много свободного времени) люди.

Во-вторых, дашборд содержал внутри себя очень сложную логику:

·      промежуточные таблицы

·      предрасчёты

·      технические поля

Скорее всего, когда-то эта логика работала корректно, но со временем из-за объёма данных и небольших изменений процесса начала давать сбои.

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

Что я вынесла из этой истории?

В аналитике есть знакомая многим ситуация – метрика, которая давно считается и никем не проверяется.

Она может выглядеть правдоподобно и не вызывать вопросов, но при этом скрывать внутри множество допущений:

·      особенности бизнес-процесса

·      структуру данных

·      историю изменений

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

Показалось важным и еще одно наблюдение – не стоит полностью полагаться на описание метрики от заказчика.

Не потому, что заказчик ошибается, а потому, что он обычно рассказывает о процессе, а не о данных.

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

  • когда кандидат считается найденным

  • какие этапы есть в процессе

  • что происходит дальше

Но в данных этот процесс отражается совсем иначе:

  • статусы могут ставиться не так, как ожидается

  • этапы могут пропускаться

  • один кандидат может быть связан с несколькими вакансиями

  • история изменений создаёт дубли

В итоге описание процесса и реальная логика данных могут сильно отличаться. Методику расчета приходится разбирать, проверять на данных и иногда даже переопределять вместе с заказчиком.

Что делать, если завтра вам нужно перепроверить «простую» метрику

Теперь у нас есть набор «проверь себя», к которому мы теперь возвращаемся почти в каждом похожем кейсе.

Во-первых, не стоит ограничиваться словами – лучше сразу смотреть реальные данные. Если заказчик говорит «нам нужно считать новых кандидатов», полезно попросить показать несколько живых примеров в системе и посмотреть, как эти кандидаты на самом деле выглядят в данных. Часто уже на этом этапе появляются первые несоответствия.

Во-вторых, имеет смысл посчитать метрику самым простым способом – например, вывести список кандидатов в Excel и посмотреть на результат. Отсортировать, найти выбросы, посмотреть на странные случаи – кандидатов с десятком вакансий, даты из будущего или неожиданные статусы. Такие аномалии обычно очень быстро указывают на проблемы в логике.

Отдельный вопрос – это уникальность. В HR почти всегда есть риск «двойного счёта», поэтому важно заранее понять, что именно мы считаем: людей или отклики. Один человек, который подался на несколько вакансий, – это один кандидат или несколько?

Не менее важны даты. Дата создания кандидата, дата изменения статуса, дата вакансии – все они дают разные результаты, и выбор «не той» даты может серьезно изменить все расчеты.

И наконец, если есть возможность, полезно хотя бы один раз сделать ручную сверку: например, взять конкретный день и подразделение и вместе с рекрутером проверить список кандидатов.

В целом после таких разборов начинаешь относиться ко всем метрикам немного осторожнее – обычно за ними скрывается гораздо больше деталей, чем кажется на первый взгляд.

И если попытаться это как-то сократить до одного правила, оно звучит примерно так:

если показатель кажется вам очевидным и очень простым, скорее всего, вы пока ещё не нашли пример, который все сломает.

ссылка на оригинал статьи https://habr.com/ru/articles/1041122/