Нашей отличительной чертой является постоянное изучение и развитие технологий — на данном этапе они преимущественно связаны с Kubernetes, но не ограничиваются им. Мы аккуратно обкатываем их на десятках проектов с самыми разными запросами, и это очень здорово расширяет кругозор каждого, кто с ними работает.
В этой статье я расскажу, как мы нанимаем новых сотрудников в полностью распределённую компанию и помогаем им влиться в наш «поток». Возможно, это натолкнет на мысли, как что-то улучшить в своих командах. К своему подходу мы пришли спустя годы проб и ошибок и на сегодняшний день уверены, что тем людям, которых наняли, можно дать рутовый доступ на клиентские серверы.
Поиски и знакомство
Найм в айти-компаниях — больная тема: на что только не идут команды, чтобы заполучить нового бойца. Мы пока что не нашли серебряной пули, которая помогала бы нанимать сразу и много инженеров, которые разделяют наши ценности: мы любим Open Source, тщательно выбираем, с кем работать, а затем выкладываемся по полной, чтобы решать настоящие (а не выдуманные!) проблемы.
Многие из тех, кто оказывается на собеседованиях или подходят к нам на конференциях, говорят, что смотрели наши выступления на YouTube, читали статьи на Хабре и/или пользуются нашими разработками с GitHub. Но секрет Полишинеля всего один: хочешь найти сотрудников в формирующуюся команду — ищи их, вручную, долго и упорно.
Все собеседования и прочие коммуникации (включая даже продажи) в нашей компании идут через Slack (больше для текста) и Google Meet (видео) — они показали себя лучше всего. До этого мы продолжительное время поддерживали self-hosted-инсталляцию BigBlueButton, а также продолжаем работать и со своей IP-телефонией, которая актуальна на случай аврала и оставшихся потребностей в общении по телефону. Для последнего достаточно зайти во внутренний справочник сотрудников, нажать кнопочку — и сервис наберет по телефону вас и адресата для разговора.
Если перейти от коммуникаций к прочим особенностям рабочего окружения, то в целом они формируются подходом что мы инженеры и не хотим, чтобы нам что-то мешало решать инженерные задачи.
- График? Относительно свободный, если тебе надо пойти прогуляться — напиши в Slack-канал, убедись, что нет назначенных встреч и обещаний клиенту… и пожалуйста. Мы стараемся быть на связи с 11:00 до 19:00 по Москве, но в век победивших телекоммуникаций всё это решаемая задача.
- Дресс-код? Просто соблюдайте рамки приличия. По-моему, это прекрасный опыт — ходить на работу в тапочках и шортах. Конечно, нам всё равно хочется видеть людей вживую и общаться очно. Поэтому минимум раз в год мы собираемся на корпоративе, с семьями. Разумеется, проезд (как и все командировки) оплачиваются компанией. А живущие в относительной близости от офисов (в Москве и Нижнем Новгороде) могут заглянуть в последнюю пятницу месяца, чтобы поесть пиццы, выпить чего-нибудь вкусного, поиграть в PS или просто похоливарить о технологиях.
- К слову о холиварах: мы против авторитарности. Если вы говорите за дело, то можете хоть матом доносить свою мысль до технического директора. К чёрту формальности — сперва дело и правильные решения!
Найм: 0 этап — отбор
Как я успел сказать в самом начале, секрет поиска сотрудников видится нам в кропотливой и систематической работе по отбору резюме, размещенных в открытом доступе. Например, в том же Телеграме уже существует около 50 рекрутерских чатов, где можно искать кандидатов (самые полезные для нас — Devops_jobs, Telegram Job и Работа в IT). Кроме того, отлично зарекомендовал себя и всем хорошо знакомый hh… с одной особенностью: мы не ждем, пока кандидат откликнется сам на размещенную у нас вакансию, а отбираем резюме из базы, захватив таким образом даже тех, кто не находится в активном поиске работы, но готов рассмотреть интересные предложения.
В качестве примера приведём занимательную статистику о том, как совсем недавно за полтора месяца компания выросла на 7 DevOps-инженеров:
- Мы отобрали около 150 резюме, подходящих нам по профилю, и провели 78 первичных интервью (далее я подробно расскажу, что включает в себя каждый из этапов найма).
- По результатам интервью пригласили 32 кандидатов на второй этап — техническое задание. Успешно справившихся с ним ожидало финальное испытание — общение с тимлидами.
- На этом этапе мы общались с 11 кандидатами и приняли положительное решение по 7 из них.
Найм: 1 этап — собеседование-знакомство
Когда мы связались с потенциальным сотрудником и выяснили, что он не против познакомиться, наш HR проводит первый этап собеседования.
Задача HR’а — соотнести бэкграунд кандидата со стеком технологий, с которым в данный момент работают наши команды. Хочется понять, что кандидату знакомо хорошо и какие направления остаются для него пока зоной развития и обучения. Если уже на этом этапе наши интересы не совпадут, мы не сможем предложить будущему сотруднику почвы для реализации, а он, вероятно, не захочет двигаться туда, к чему душа не лежит.
Гораздо больше, чем то, «кем вы хотите себя видеть через пять лет», мы хотим понять, какие проекты инженер считает самыми классными в своём опыте, что его драйвит, как он предпочитает организовывать своё рабочее пространство. Последний вопрос особенно актуален: для значительной части новичков работа с нами — это первый опыт удалённой работы.
Интервью занимает около 30-40 минут, и мы понимаем, смотрим ли в одном направлении с кандидатом и на что обратить внимание при дальнейшем общении.
Найм: 2 этап — техническое задание
На втором этапе новичок знакомится с этаким квестом для инженера на смекалку и технические знания. Гуглом пользоваться можно, так что больше всё же на смекалку.
По сути инженеру выдают виртуальную Linux-машину с хитрыми и не очень зловредами, сломанным софтом и пачкой заданий, основную часть которых нужно решить непосредственно на виртуалке. Инженеру предстоит победить драконов, продемонстрировав своё владение головой, консолью и гуглом. Мы не ставим обязательной задачи победить их всех и сделать это идеально, но хотим понять, как человек в принципе подходит к решению задач на практике, а не на словах.
Интернетом пользоваться можно не только по той причине, что тест ближе к реальным условиям, чем к школьному экзамену. В первую очередь мы проверяем базовые технические навыки и общий кругозор (в области Linux), а не знание какого-либо специфичного софта и его конфигурационных директив. Нам важно увидеть, что человек способен подходить к проблемам системно и имеет достаточно опыта, чтобы понимать, в каком направлении вообще копать. Один из типичных вызовов любого инженера «Фланта» — это сталкиваться с непознанным, постоянно учиться, поэтому гибкость ума имеет не последнее значение.
Типичная ситуация в тестовой виртуалке для кандидатов, успешно загрузивших систему
Не менее важной, чем техническая составляющая этого теста, является и «скрытая» его сторона — психологическая. Кандидатов, проходящих наше весьма продолжительное задание, мы просим описывать свои шаги и промежуточные результаты в Slack. Там же, как правило, можно уточнять какую-то информацию, получая обратную связь… Анализируя общее поведение кандидата, его реакцию на всплывающие проблемы, информативность и общий тон комментариев, соответствие действий требованиям задания и множество других подобных факторов, мы делаем по-настоящему значительные выводы:
- Мотивирован ли этот человек на работу у нас?
- Командный ли это игрок и предрасположен ли он к частой коммуникации?
- Способен ли самостоятельно решать задачи?
- Следует ли конкретным инструкциям?
- Изобретателен ли в поиске технических решений?
- …
Даже если не все характеристики становятся очевидными, мы как минимум получаем обобщённый психологический портрет, который обязательно учитываем при принятии окончательного решения (предварительно раскрывая волнующие нас вопросы на следующем этапе).
Задание у нас по-настоящему длинное — в среднем на него тратят около 9 часов (включая всевозможные обеды и прочие перерывы, если кандидат их по своему желанию делает). Несмотря на это, более 80 % прошедших тестирование позитивно высказываются об этом тесте и благодарят за него по своей воле (т.е. ещё до того, как мы запрашиваем обратную связь). Однако мы понимаем, что это слишком много — поэтому (и из-за нескольких других причин) в настоящее время готовим значительно обновлённую версию задания, которая будет не только короче, но и не менее увлекательной и, надеемся, эффективной.
Найм: 3 этап — финальное собеседование
Когда пройдено тестовое задание, наступает время общаться с тимлидами. Собеседуют непосредственно те люди, которые могут стать руководителями инженера. Мы отдельно учим наших тимлидов готовиться и проводить собеседования, чтобы общение не «завязло» в каких-то узких темах, было интересным обеим сторонам, и не вызывало сильного стресса. Расшатанные нервы — плохой помощник при ответе на вопросы.
Тимлид должен уметь задать технические вопросы, понять, в какой парадигме управления проектами жил кандидат, суметь рассказать о работе в компании и объяснить, каково будет житься в его команде. Ведь если кандидат пройдёт — тимлиду нужно понимать, как «встроить» человека в свою команду, на что обратить внимание в первую очередь. В среднем на такое собеседование уходит около часа.
После (и, будем откровенны, иногда даже во время — через краткий обмен мыслями в Slack) встречи тимлиды решают, кто из них хочет взять инженера к себе в падаваны и какой из команд человек именно с такими талантами будет полезнее (а команда — будет полезнее ему). Финальный шаг — отправка кандидату предложения о работе.
Заключение
На решении кандидата о принятии job offer первая часть нашего сотрудничества заканчивается. Если мы получили согласие, то начинается новый и очень захватывающий этап — выход на работу и последующая адаптация. Об этом я расскажу в следующей статье.
Комментарии (19)
Wolf4ara
27.07.2018 13:16+3да-да-да) а если не интересен, то внезапно пропадаете, как и всех компаний) ни ответа-ни привета(
may-cat Автор
27.07.2018 13:17Так не должно быть. Если вдруг это так — можете написать мне в личку на Хабре или в телеграм @i_tsupko.
svk28
27.07.2018 21:25Согласен с тем, что так быть не должно. Но так есть, и на прямой вопрос в мыло, после двух отзывов на вакансию — тишина. При том, как Вы это обзываете, бэкграунд соответствовал, на мой взгляд.
may-cat Автор
30.07.2018 12:13Искали ваши письма в почте по никнейму svk28/вашей фамилии имени, которые гуглятся по никнейму — не нашли. Можете уточнить, когда вы откликались и куда конкретно?
Если ваш интерес к вакансиям во Фланте актуален — пожалуйста, сообщите.
may-cat Автор
27.07.2018 16:37+4Уточнил по вашей ситуации.
Сожалеем, что в прошлом году наше сотрудничество не сложилось, поскольку вами было принято решение отказаться от оффера, предложенного Флантом. За прошедший год требования, предъявляемые к инженерам сильно изменились и мы сейчас не можем сделать вам предложение о работе. На созвоне в начале этого июля (обращаю внимание: это не был какой-то из этапов собеседования, просто созвон) мы обещали связаться, в случае если появятся предложения с нашей стороны. Их не было. Потом мы действительно упустили письмо от вас в почте. Посыпаем голову пеплом, на письма нужно отвечать.
Кандидаты, которые проходят тест, всегда получают обратную связь по итогам теста.
werklop
27.07.2018 20:58+1даже тех, кто не находится в активном поиске работы, но готов рассмотреть интересные предложения
Мотивирован ли этот человек на работу у нас?
Понятное дело, что изначально нет, да и не факт, что потом, он же не в активном поиске. Какие ваши действия?shurup
30.07.2018 11:22Если кандидат всё-таки прошёл первое интервью и взялся за прохождение задания, на что (как его сразу предупредили) требуется потратить много времени, — им всё-таки что-то движет. И обычно тут два направления этого движения:
- или «спортивный интерес» (некоторые об этом нам говорили прямо и до, и во время, и после тестового задания),
- или всё-таки интерес к компании.
Причём первое иногда переходит во второе: «Раз тестовое задание так затягивает, то и работать, наверное, не скучно?». А иногда оно сводится к тому, что: «Извините, переоценил себя, тест не тяну, поэтому давайте я опыта наберусь и выйду на вас в другой раз» (на самом деле, конечно, причина может быть в другом, но объяснения будут скорее всего примерно такими).
Каковы наши действия? Понять, перешёл ли кандидат в стадию интереса работы у нас, и продолжить с ним работу. Если этого интереса не появилось, то — в зависимости от результата + его общего «настроения» (от «Что за дурацкий тест у вас и с чего вы решили, что у меня столько времени, чтобы всё тут проходить?» до «Спасибо, это самое крутое задание, что я видел!») — в базу кандидатов, к которым можно вернуться через некоторое время, или всё.werklop
30.07.2018 11:30Вроде выглядит логично и понятно, однако не всегда и не всех мотивирует только интересные задачи(число которых как правило, довольно низкое). Но это уже лирика…
shadowlord
30.07.2018 11:21Не планируете организовать публикацию тестов в свободном доступе для всех желающих? Если это виртуальные машины, можно было бы выложить образы с кратким описанием проблем, которые необходимо решить.
shurup
30.07.2018 11:29Была мысль так сделать, когда полностью обновим текущие задания (иначе новые кандидаты окажутся не в равных условиях). Теперь есть больше уверенности, что это будет интересно, спасибо за вопрос
NickODimm
30.07.2018 11:26Добрый день,
Искал интересные предложения по работе, наткнулся на вот эту статью.
Очень заинтересовал не зацикленный на MS подход к решению инфраструктурных задач.
Увы, фраза на фото с Морганом Фриманом раскрыта очень слабо. Можно ли как-то обозначить уровни финансового вознаграждения будущих сотрудников? По моему опыту это вполне нормальная практика указывать прогнозируемый годовой доход кандидата.
В силу того, что считается хорошим тоном иметь хотя бы общее представление о работодателе, сходил на ваш сайт. Компания которая в 2018 году предлагает веб-инфраструктуру «под ключ», на мой взгляд с высокой степенью вероятности понимает долю мобильных устройств в современном веб. На мой взгляд было бы разумно уделить немного времени собственному сайту и сделать адаптивную вёрстку. Возможно стоит и jquery «под капотом» обновить.
Ещё не очень понял смысл форка ansible «к себе». Он у вас с ansible/ansible мерджится потом?
Заранее благодарю за ответы.may-cat Автор
30.07.2018 12:34Можно ли как-то обозначить уровни финансового вознаграждения будущих сотрудников?
Постараемся осветить это во второй части статьи.
На мой взгляд было бы разумно уделить немного времени собственному сайту и сделать адаптивную вёрстку. Возможно стоит и jquery «под капотом» обновить.
Всё так, сайт очень устарел. Мы больше увлечены работой над проектами клиентов и backend-ом, руки не доходили.
Конечно, мы понимаем, что это пора менять. Новая версия сайта сейчас в разработке.
Ещё не очень понял смысл форка ansible «к себе». Он у вас с ansible/ansible мерджится потом?
Забавно, но никто не помнит :) Вероятно, была какая-то задумка, но потом нашли более оптимальное решение.
dirkar
От компаний, в которых «менеджеров, которые нет-нет, да и напишут строчку-другую кода» нужно держаться как можно дальше.
Hardcoin
Можете как-то обосновать? Они вряд ли в критические области лезут. Может речь вообще об одноразовых башскриптах, что-то проверяющих.
sevikl
В этом ничего плохого нет, факт. А вот если в пятницу вечером менеджер внезапно накомиттил говна в мастер при включенном и отлаженном CI-CD — надо бить. причем не по рукам.
shurup
… но ведь это относится совсем не только к менеджерам :-)
roscomtheend
Менеджер может написать скриптик сбора нужных ему данных, а не просить программиста «Вааась, тутделнапятьминут, напиши, а» прямо в разгар работы над фичей.
А накоммитить говна — это к программистам в компаниях, где тесты — дело программистов, а всякие кодыревьи — не барское. Вот там такое регулярно (не знаю как здесь, всякие «машины с поломанным софтом» — это вообще, кажется, не про программирование).
may-cat Автор
Речь идёт, главным образом, о том, что сейчас принято называть T-shaped компетенции.
Конечно же, некомпетентные люди не коммитят в прод клиентам.
andjel
Если код проходит стандартное Code Review итп — то почему бы и нет?