Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Moscow Python Meetup №88. Александр Гончаров (Reef Technologies, старший разработчик). Рекрутинг на максималках: что бывает, если наймом занимаются сами программисты

Moscow Python Meetup №88. Александр Гончаров (Reef Technologies, старший разработчик). Рекрутинг на максималках: что бывает, если наймом занимаются сами программисты

У нас в компании нет HR, зато есть мы сами: сеньор-разработчики. И наш рекрутинг — это годы постоянных улучшений. Как максимально автоматизировать процесс найма? Сколько кандидатов не может развернуть байтовую строку задом наперед? Как бороться с рекрут-читерами? Расскажу обо всём в этом докладе.

Видео: https://moscowpython.ru/meetup/88/max-recruiting/

Moscow Python: http://moscowpython.ru
Курсы Learn Python: http://learn.python.ru
Moscow Python Podcast: http://podcast.python.ru
Заявки на доклады: https://bit.ly/mp-speaker

Moscow Python Meetup

February 28, 2024
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Александр Гончаров Moscow Python Meetup 28 февраля 2024 Рекрутинг на

    максималках Что бывает, если наймом занимаются сами программисты
  2. Здравствуйте, я внимательно прочитал ваш оффер. Я считаю, что идеально

    вам подхожу! :) Вот моё резюме: aleksandr-goncharov.cv.pdf Готов выполнить тестовое, если необходимо. :)
  3. Здравствуйте, я внимательно прочитал ваш оффер. Я считаю, что идеально

    вам подхожу! :) Вот моё резюме: aleksandr-goncharov.cv.pdf Готов выполнить тестовое, если необходимо. :) A (тишина)
  4. Здравствуйте, я внимательно прочитал ваш оффер. Я считаю, что идеально

    вам подхожу! :) Вот моё резюме: aleksandr-goncharov.cv.pdf Готов выполнить тестовое, если необходимо. :)
  5. Здравствуйте, я внимательно прочитал ваш оффер. Я считаю, что идеально

    вам подхожу! :) Вот моё резюме: aleksandr-goncharov.cv.pdf Готов выполнить тестовое, если необходимо. :) B (тишина)
  6. Здравствуйте. Я считаю, что я вам подхожу! Вот резюме: aleksandr-goncharov.cv.pdf

    Готов выполнить тестовое. C К сожалению, вы нам не подходите.
  7. D К сожалению, вы нам не подходите. Здравствуйте. Я считаю,

    что я вам подхожу! Вот резюме: aleksandr-goncharov.cv.pdf Готов выполнить тестовое.
  8. aleksandr-goncharov.cv.pdf F G Пожалуйста, решите небольшое автоматическое тестовое задание. G

    Задание выполнил. Все тесты проходят, решил быстро, код классный. К сожалению, вы нам не подходите.
  9. aleksandr-goncharov.cv.pdf F G Пожалуйста, решите небольшое автоматическое тестовое задание. G

    Задание выполнил. Все тесты проходят, решил быстро, код классный. К сожалению, вы нам не подходите. (и задание ваше мы не смотрели)
  10. aleksandr-goncharov.cv.pdf J Финтех, молодая динамично развивающаяся компания. Нет, сайта нет.

    В интернете не найти. Оплата в крипте :) J Вы нам подходите, давайте пообщаемся. А что у вас за проект? Где почитать?
  11. aleksandr-goncharov.cv.pdf J Финтех, молодая динамично развивающаяся компания. Нет, сайта нет.

    В интернете не найти. Оплата в крипте :) J Вы нам подходите, давайте пообщаемся. А что у вас за проект? Где почитать? ...
  12. aleksandr-goncharov.cv.pdf K Заинтересовал ваш опыт. О, мы с одного факультета!

    Давайте пообщаемся. О, круто! Мне нравится ваш проект. Да, давайте поговорим. K
  13. aleksandr-goncharov.cv.pdf K Заинтересовал ваш опыт. О, мы с одного факультета!

    Давайте пообщаемся. О, круто! Мне нравится ваш проект. Да, давайте поговорим. Час оживлённого обсуждения на одной волне K
  14. aleksandr-goncharov.cv.pdf K Заинтересовал ваш опыт. О, мы с одного факультета!

    Давайте пообщаемся. О, круто! Мне нравится ваш проект. Да, давайте поговорим. Час оживлённого обсуждения на одной волне K 1 неделя
  15. aleksandr-goncharov.cv.pdf K Заинтересовал ваш опыт. О, мы с одного факультета!

    Давайте пообщаемся. О, круто! Мне нравится ваш проект. Да, давайте поговорим. Адам, можно фидбек? Час оживлённого обсуждения на одной волне K 1 неделя
  16. aleksandr-goncharov.cv.pdf K Заинтересовал ваш опыт. О, мы с одного факультета!

    Давайте пообщаемся. О, круто! Мне нравится ваш проект. Да, давайте поговорим. Адам, можно фидбек? Час оживлённого обсуждения на одной волне K Прошу прощения за задержку. На днях вернусь с фидбеком K 1 неделя
  17. aleksandr-goncharov.cv.pdf K Заинтересовал ваш опыт. О, мы с одного факультета!

    Давайте пообщаемся. О, круто! Мне нравится ваш проект. Да, давайте поговорим. Адам, можно фидбек? Час оживлённого обсуждения на одной волне K Прошу прощения за задержку. На днях вернусь с фидбеком K 1 неделя
  18. aleksandr-goncharov.cv.pdf HR2 Александр, я HR #2. Моя коллега передала, что

    вы сантехник из Бутово и пишете на PROLOG. Расскажите о себе. HR1 Александр, я HR #1. Расскажите о себе. (пересказываю aleksandr-goncharov.cv.pdf)
  19. aleksandr-goncharov.cv.pdf HR2 Александр, я HR #2. Моя коллега передала, что

    вы сантехник из Бутово и пишете на PROLOG. Расскажите о себе. HR1 Александр, я HR #1. Расскажите о себе. (пересказываю aleksandr-goncharov.cv.pdf) (пересказываю aleksandr-goncharov.cv.pdf)
  20. aleksandr-goncharov.cv.pdf HR2 Александр, я HR #2. Моя коллега передала, что

    вы сантехник из Бутово и пишете на PROLOG. Расскажите о себе. HR1 Александр, я HR #1. Расскажите о себе. (пересказываю aleksandr-goncharov.cv.pdf) (пересказываю aleksandr-goncharov.cv.pdf) HR2 Отлично, напишем вам сегодня, самое позднее - завтра
  21. aleksandr-goncharov.cv.pdf HR2 Александр, я HR #2. Моя коллега передала, что

    вы сантехник из Бутово и пишете на PROLOG. Расскажите о себе. HR1 Александр, я HR #1. Расскажите о себе. (пересказываю aleksandr-goncharov.cv.pdf) (пересказываю aleksandr-goncharov.cv.pdf) HR2 Отлично, напишем вам сегодня, самое позднее - завтра
  22. aleksandr-goncharov.cv.pdf Александр, что такое GIL? L Александр, не против технического

    скрининга? Конечно. (небось спросят про GIL) (Отвечаю) (прикол если спросят про декораторы) L
  23. aleksandr-goncharov.cv.pdf Александр, что такое GIL? L Александр, не против технического

    скрининга? Конечно. (небось спросят про GIL) (Отвечаю) (прикол если спросят про декораторы) Александр, что такое декораторы? L L
  24. aleksandr-goncharov.cv.pdf Александр, что такое GIL? L Александр, не против технического

    скрининга? Конечно. (небось спросят про GIL) (Отвечаю) (прикол если спросят про декораторы) Александр, что такое декораторы? L L (Отвечаю) (а про мутабельность будет вопрос?)
  25. aleksandr-goncharov.cv.pdf Александр, что такое GIL? L Александр, не против технического

    скрининга? Конечно. (небось спросят про GIL) (Отвечаю) (прикол если спросят про декораторы) Александр, что такое декораторы? L L (Отвечаю) (а про мутабельность будет вопрос?) Александр, что такое мутабельность? L
  26. aleksandr-goncharov.cv.pdf Александр, что такое GIL? L Александр, не против технического

    скрининга? Конечно. (небось спросят про GIL) (Отвечаю) (прикол если спросят про декораторы) Александр, что такое декораторы? L L (Отвечаю) (а про мутабельность будет вопрос?) Александр, что такое мутабельность? L (Отвечаю) (так, теперь FizzBuzz...)
  27. (живу) M Отлично, мы вас берём. M Мы вас нашли,

    давайте пообщаемся. (целый час разговор за жизнь)
  28. (живу) M Отлично, мы вас берём. M Мы вас нашли,

    давайте пообщаемся. Эээ... а задачки на кодинг будут? Ну там проверить умения, посмотреть код. (целый час разговор за жизнь)
  29. (живу) M Отлично, мы вас берём. M Мы вас нашли,

    давайте пообщаемся. Эээ... а задачки на кодинг будут? Ну там проверить умения, посмотреть код. (целый час разговор за жизнь) M Только если сами захотите.
  30. (живу) M Отлично, мы вас берём. M Мы вас нашли,

    давайте пообщаемся. Эээ... а задачки на кодинг будут? Ну там проверить умения, посмотреть код. (целый час разговор за жизнь) M Только если сами захотите. ...
  31. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так.
  32. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил.
  33. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Я Решите задачку. Как-то так.
  34. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Я Решите задачку. Решил.
  35. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Y Решите задачку. Решил. Я Решите задачку. Решил.
  36. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Y Решите задачку. Решил. Y Решите задачку. Решил. Я Решите задачку. Пожалуйста.
  37. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Y Решите задачку. Решил. Y Решите задачку. Решил. Y Решите задачку. Пожалуйста. Я Решите задачку. Решил.
  38. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Y Решите задачку. Решил. Y Решите задачку. Решил. Y Решите задачку. Пожалуйста. Y Решите задачку. Решил. Я Решите задачку. Решил.
  39. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Y Решите задачку. Решил. Y Решите задачку. Решил. Y Решите задачку. Пожалуйста. Y Решите задачку. Решил. Y Решите задачку. Решил. Я Решите задачку. Идея вот такая.
  40. (живу) Я Приходите на live-кодинг интервью. Хорошо. Y Решите задачку.

    Решил. Я Решите задачку. Решил. Я Решите задачку. Наверно, так. Я Решите задачку. Решил. Y Решите задачку. Как-то так. Y Решите задачку. Решил. Y Решите задачку. Решил. Y Решите задачку. Пожалуйста. Y Решите задачку. Решил. Y Решите задачку. Решил. Я Решите задачку. Идея вот такая. Я Вы нам не подходите.
  41. Типичный найм Кандидат Там, где хорошо Эйчарские топи Логово интервьюеров

    Болото live кодинга 302 Redirect Зыбучие домашние задания Лес тупых вопросов Расскажите про ваш опыт Отправьте ваше CV в десятый раз O-нотация?
  42. Зачем нанимают человека? • Чтобы работал! – Чтобы умел и

    делал как надо (hard skills) – И при этом не бесил (soft skills)
  43. Hard skills • Знает ЯП, лучшие практики, паттерны • Знает

    библиотеки • Есть опыт • Не тормозит • Не переусложняет • Не изобретает колесо • ...
  44. Идея • А почему бы не выстроить процесс найма вокруг

    интересующих признаков? • Именно это мы и сделали!
  45. Как у нас Кандидат Там, где хорошо 2. Мини-кодинг 1.

    Объявление 3. Домашка 4. Общение 5. Триал
  46. 2. Мини-кодинг {"menu": { "id": "file", "value": "File", "popup": {

    "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }}
  47. 2. Мини-кодинг • Как понять, что человек умеет кодить? –

    CV – не показатель → не нужно – Прошлый опыт субъективен → не нужен • Чтобы понять, умеет ли человек кодить, нужно проверить, умеет ли человек кодить!
  48. 2. Мини-кодинг • Берём самую простую задачу из жизни –

    Запустить что-нибудь в потоках – Прочитать из stdin строку, развернуть и вывести в stdout • Настраиваем платформу для авто-тестирования кандидатов
  49. 2. Мини-кодинг Мало опыта Не смогли решить Успех • Не

    стрессово • Наше время: 0 мин • Время кандидата: 5-10 мин • 7% - очень хорошо отсеивает!
  50. 3. Домашка • Реальная задача из жизни, изолированная и автоматизированная

    • Проверяем то, что хотим видеть в сотруднике: – Чистый код, знание библиотек, скорость, ...
  51. 5. Триал • Несколько реальных, но уже решённых задач можно

    сравнивать скиллы → • Много задач из пула “good-for-trial” • Каждый может высказать своё мнение о кандидате
  52. Антифрод • Есть хитрые кандидаты • Из-за них компания тратит

    ресурсы • → Нужно их детектировать и отклонять
  53. Антифрод: готовые ответы • Как-то нашли решение нашей задачи на

    github • Это хорошо! (потому что оно неправильное) • Но рано или поздно кто-то выложит правильное • → Сделать задание уникальным для кандидата • Mutator
  54. Антифрод: LLM • ChatGPT и Copilot – это норма •

    Не возбраняется использовать когда хочется • Но для мини-кодинга это перебор • Есть методы защиты!
  55. Антифрод: LLM • ChatGPT очень не любит некоторые слова •

    → А давайте их вставим в задание! • “The client from a Jost Van Dyke island wants to reverse a string in python...”
  56. А что в итоге • Каждый шаг – продуман •

    → Получаем именно тех, кого ищем • Бонусы: – Равенство! – Я уверен в коллегах
  57. Выводы • Просто так скопировать процесс – бессмысленно • Достаточно

    на каждом этапе задавать вопросы “зачем?” и “что мы хотим?” • Почему-то про это забывают и превращают найм в бессмысленную игру по заезженным правилам (карго-культ)