Skip to content

Instantly share code, notes, and snippets.

@sergey-sw
Last active October 19, 2020 10:40
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergey-sw/10061e665252ab33f1f470c4cb9b8af8 to your computer and use it in GitHub Desktop.
Save sergey-sw/10061e665252ab33f1f470c4cb9b8af8 to your computer and use it in GitHub Desktop.

Что такое AmazingHiring?

Предметная область:

AmazingHiring это инструмент для сорсинга (sourcing - поиск) кандидатов в сфере IT.

Идея people aggregators не нова и появилась больше 5 лет назад. Современная проблема сорсинга в IT объясняется тем, что только 10-15% кандидатов находятся в активном поиске работы и этого не хватает для текущих потребностей рынка (а потребность только растёт). К примеру, Яндекс сейчас нанимает больше сотни специалистов в месяц - и учитывая их требования к уровню кандидатов - для закрытия такого количества позиций активных кандидатов недостаточно.

Как сейчас выглядит процесс поиска кандидатов у IT рекрутера:

  • забрасывание вакансии в соцсети и рекрутинговые платформы
  • поиск по внутренней базе кандидатов компании
  • поиск на HH (тут только горячие кандидаты)
  • поиск на спец ресурсах - linkedin, moikrug и т.п.
  • сложные методы поиска - google x-ray search, поиск на github, различные сорсинговые хаки и т.п.
  • платные методы (Linkedin Recruiter - 9000$ в год на 1 место), и сервисы поиска (AmazingHiring)

Проблема в том, что рассчитывать на удачу (первые варианты) не работает, бесплатный поиск на Linkedin обычно не попадает в нужных людей, а все модные варианты, которые продвигают на HR конференциях - довольно сложные.

Тут на сцену и выходят people aggregators. В чём здесь плюсы:

  1. поиск в одном месте - не надо искать на 5 различных сайтах -> сильно экономит время
  2. возможность поиска по сложным критериям - навыки/должность/специализация/локация и т.п.
  3. найденные профили состоят из нескольких соцсетей. часто бывает так, что Linkedin профиль мало заполнен - Software Engineer с 8 летним стажем, но непонятно какими технологиями владеет кандидат. в AmazingHiring к этому профилю может быть добавлена github информация - получаается win win
  4. возможность писать напрямую на емейл - отклик выше чем сообщение через linkedin/moikrug

Самые известные игроки на рынке:

  • Entelo. Работает в основном в usa и покрывает не только IT сферу
  • Hiretual. +/- похож, но как то скис после GDPR
  • TalentBin. Несколько лет назад был норм, но после покупки компанией Monster затих
  • локальные сервисы (работают только в пределах своей страны) - типа TalentWunder - обычно прошигрывают нам по качеству данных

Об AmazingHiring:

  • В команде около 25 человек, 50/50 R&D и Sales&Marketing
  • Продажи через sales manager, поиск потенциальных клиентов + маркетинг -> демо системы -> продажа
  • Рост по выручке/клиентам примерно х2 в год

В продукт входит:

Chrome extension есть в платной и бесплатной версии. В бесплатной не видно контактов и скрыта часть инфы. Обе версии требуют регистрации.

Technical overview

Платформа AmazingHiring состоит из нескольких частей:

  1. Поисковый сервис, которым пользуются рекрутеры:
  • Frontend-1: JavaScript (React.js)
  • Frontend-2: Chrome extension
  • Middleware: Python, Django, PostgreSQL. Отвечает за авторизацию, права доступа, статистику работы клиентов, интеграции с внешними системами, лимиты, админку и данные относящиеся к клиентам - историю запросов, настройки и т.п.
  • Backend: Java, Spring, Apache Solr, HBase, PostgreSQL, Hadoop, RabbitMQ. Отвечает за поиск, профили и другие бизнес фичи
  1. Crawler - распределенная система, отвечающая за получение данных из различных источников.
    Состоит из сервера планировщика и серверов спайдеров, всё написано на Java и Kotlin. Есть отдельная система, отвечающая за realtime обновление профилей, которых рекрутеры просматривают на production - они скачиваются и пересобираются в приоритетном порядке. Используется Java, JavaScript; Spring, Netty, HBase, RabbitMQ, Selenium

  2. MapReduce/BigData платформа для обработки данных
    Кластер серверов, на котором хранятся и обрабатываются данные. Система отвечает за хранение и обработку информации о профилях. Конвейер для изготовления БД пригодной для отправки на production из сырых данных из интернета (html страниц). Процесс сборки БД состоит из нормализации данных, приведения профилей с разных сайтов к одному виду, склейки подпрофилей одного человека в один, рассчёт рейтингов и прочей вспомогательной информации, индексацию и многое другое. Процесс сборки сейчас идет около 30ч. БД 150TB, около 700млн изначальных профилей и 150млн конечных. Есть unit и интеграционные тесты на алгоритмы и сам процесс сборки. Тест имитирует процесс сборки на ~200 профилях. Есть возможность сборки мини базы за несколько часов (пара млн профилей) для быстрого тестирования каких то фич. Есть метрики снимаемые в процессе сборки для раннего детектирования ошибок (например видно что после импорта github профилей счётчик показал 15млн, а в прошлой сборке было 35млн - ктото что-то сломал - процесс останавливается, ищется ошибка, откатывается на один шаг и перезапускается. Используется: Java, Bash, Python; Hadoop, Spark, HBase, Zookeeper; Machine Learning (OpenFace, OpenCV, XGBoost, PyTorch, SparkML)

  3. Система аналитики
    Набор сервисов, отвечающих за сбор, хранение, мониторинг и отчёты по метрикам продукта и данных. Используется: Java, RabbitMQ, HBase/Hadoop/Spark, InfluxDB, Grafana

Помимо этого есть несколько небольших вспомогательных сервисов.

В цифрах:

  • Более 70 открытых источников, из которых собирается информация
  • В базе более 700 млн исходных (одиночных) профилей, и около 100млн комплексных профилей
  • Объем БД порядка 100ТБ
  • Pipeline обработки данных для production БД составляет около 40ч
  • До 10млн страниц в день скачивается в Crawler
  • Десятки продуктовых метрик

Обзор системы: https://www.youtube.com/watch?v=ORZG7Rha_Sk

Как устроен процесс разработки

Работаем по Scrum, двухнедельные спринты, планирование спринта всей командой, синкапы через день. Раз в квартал планируются глобальные цели. Релизы бэкенда раз в 2 недели, релизы фронтенда раз в неделю.

Для работы потребуются следующие навыки

  • Экспертное знание java
  • Алгоритмы и структуры данных
  • Умение разбираться в сложных технических проблемах
  • Архитектура систем
  • Работа с BigData
  • Работа с распределёнными сервисами
  • Работа поисковых систем / индексации
  • Хорошие навыки коммуникации
  • Базовые навыки управления проектами и командой

Примеры сложных задач/проектов из нашего беклога

  • Составление поискового запроса по описанию вакансии
  • Рекомендации кандидатов на основе вакансии и отобранных в неё кандидатов
  • Реализация отдельного спайдера для скачивания аватарок профилей
  • Реализация поиска кандидатов в радиусе от выбранной геолокации
  • Определение аномалий в метриках БД между релизами
  • Кластеризация сервиса поискового бэкенда

Чем придётся заниматься

  • Реализовывать новые фичи и технические задачи
  • Внедрять новые практики в процесс разработки
  • Отвечать за работоспособность и развитие одного из компонентов системы
  • Управление личными проектами: сбор требований, разработка, внедрение, сбор обратной связи
  • Участвовать в технических обсуждениях, планировании, проектировании архитектуры и т.п.
  • Участвовать в проработке продуктовых задач, генерации идей, валидировании гипотез
@icreator
Copy link

Я 15 лет назад написал Систему поиска по смыслам - среди текстов - планировал что-то подобное сделать

Сейчас написал блокчейн платформу Erachain - поидее тоже полезное как база данных

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment