Привет! Я Серёжа Копытов, iOS TechLead. Веду собесы в Альфе с 2020 года, многие разработчики и техлиды в команде прошли через меня. Уже через полгода интервью я активно включился в настройку подбора и сейчас основное время занимаюсь его развитием.

В статье расскажу, как выглядит наше техническое интервью, как оно стало таким, какие случаи я встречал и какие выводы сделал. Читайте, если сами общаетесь с кандидатами или проходите собеседования в IT и хотите понять, как продуктовые компании принимают решение.
Что было не так с собеседованиями в iOS
Распространённые проблемы в собеседованиях, часть из них встречалась и в Альфе:
Хаотичный процесс. Нет прописанной методики — кто собеседует, что отвечать на часто задаваемые вопросы, как вести интервью.
Каждое техническое собеседование занимает 1-2 часа двух тимлидов. Это сложно организовать, дорого для компании и нерационально. Один технический собеседующий будет субъективен, есть риск, что он не разглядит скилы за пару созвонов и не успеет дать обратную связь.
Очень большой входящий поток. Порой тяжело распределить его быстро, и кому-то приходится неделями ждать собеса. У меня от фидбека HR до выхода в команду прошёл почти месяц, сейчас мы это исправляем.
Очень шаблонное техинтервью. Сейчас стараемся спрашивать только то, что напрямую касается проекта и ситуаций в команде.
Как мы модернизировали процесс
Мы начали с того, что детально прописали процесс и собрали базу знаний — состав лидов, роли, must-have навыки соискателей, их каверзные вопросы. Прописали скелет собеседования, темы, по которым задаём вопросы. Если мы решим привлечь нового разработчика к собеседованиям, он может найти в базе ответы на 90% вопросов. Если появляется новый HR — тоже отличная вводная.
На собеседованиях у нас два технаря. Профиты такой системы:
Минимизация субъективности. Обычно сразу после встречи мы созваниваемся вдвоём, сверяем впечатления и резюмируем, на каком уровне кандидат, берём ли его.
«Первый пилот» ведёт интервью, второй стенографирует. Собеседующие могут чередоваться и разгружать друг друга.
Шеринг знаний в компании. Постоянно микшируя интервьюеров, за короткий срок можно побыть на собесе со всеми в команде, понаблюдать за коллегами, обменяться опытом.

Как сейчас выглядит собеседование
HR проверяет резюме, звонит кандидату и задаёт базовые вопросы на харды. Здесь всегда есть скидка на волнение и искажение восприятия. Главное — отсеять явно неподходящих.
Технический скрининг на полчаса с «первым пилотом».
Техническое собеседование — звонок на полтора-два часа с двумя разработчиками из Альфы.
Знакомство с командой. Этот этап появился вместо встречи с IT-лидером. На нём кандидат задаёт предметные вопросы о проекте, а команда смотрит, с кем ей дальше работать.
Вас приняли — вы великолепны. Вы не приняты — даём адресный фидбек, почему отказываем. Если всё хорошо, но знания нужно подтянуть, можем провести повторное интервью через некоторое время. Расстаёмся друзьями и оставляем личный контакт.
Тестовое задание: друг или враг
Тестовые задания ��ы не даём принципиально.
Как по мне, это актуально только для вакансии стажёра, чтобы хоть примерно понимать, насколько хороший новичок перед вами.
Для стажёра тестовое задание — как вступительный экзамен на учёбу, чем стажировка, по сути, и является.
Для джуниора это уже может быть не прикольно, но бывает необходимо, если нет примеров кода.
Для джуниора+ и выше тестовое задание — бессмысленно потраченное время. Кто-то откажется его делать, и мы потеряем хорошего кандидата.
К тому же, сложно составить тестовое задание, по которому реально что-то оценить. Или задание будет коротким, с ним и джун+, и сеньор справятся плюс-минус одинаково. Или слишком большим, и никто не захочет его делать, а потом никто не захочет проверять.
На случай супернестандартной роли или команды можно дать тестовое задание, но за три с лишним года я не помню, чтобы хоть раз такое было.
Что спрашиваем на техническом интервью
Вот на что мы смотрим из скилов:
Знание языка, его возможностей, современных подходов и фреймворков.
Знание платформы, так как именно этим и придётся заниматься в команде.
Чуть-чуть на многопоточку: базовое понимание принципов работы в многопоточной среде и возможные проблемы.
Алгоритмическое мышление: не заставляем вращать красно-чёрные деревья, но предлагаем справиться с алгоритмической задачкой.
Навыки поиска решения — не обязательно знать всю теорию наизусть, но обязательно уметь мыслить и искать подсказки для решения задачи/ответ на вопрос.
Как кандидат реагирует, вписывается в диалог.

Один из моих любимых вопросов на софты: месяц без задач в Jira — что будешь делать? На него нет неправильного ответа, как нет и правильного. Все ответы интересные и многое говорят о кандидате. Кто-то отвечал: «Значит ничего делать не буду, пойду в игры играть». Ну, и что в этом плохого? Если тебе платят на работе, но прямо говорят, что задач нет, почему бы не расслабиться немного.
Самые частые ответы: «Пойду рефакторить что-нибудь». Как в законе Паркинсона: «Задача занимает ровно столько времени, сколько на неё выделили». Я бы тоже пошёл прикручивать что-то новое, чтобы сделать проект ещё более идеальным, такова природа программиста.
Отзывы прошедших в команду
Я спросил ребят, которых собеседовал 2-3 года назад, что они запомнили об интервью в разных компаниях.

Максим Витовицкий
iOS TechLead
В одной компании, куда я пробовался, был странный этап знакомства с командой. По ощущениям, никто не был готов к встрече, и, по сути, я её вёл. Ещё бывает, что ведущие технического интервью зарываются в один вопрос и не дают показать кандидату свои знания в других темах.
В Альфе мы широко прошлись по iOS-разработке: обсуждали ARC, многопоточность, Unit-тесты, архитектурные паттерны, общались в целом про Swift, решали платформенные задачи (UIKit).
Когда я заходил в тупик, меня направляли в нужную сторону, и я хорошо справился с задачами. На интервью проявились мои пробелы в некоторых темах, что не стало большой проблемой. Оценивалось не знание конкретных аспектов iOS, а способность адаптироваться и находить решения задач, которые ты до этого не встречал.

Дмитрий Ставицкий
iOS TechLead
Собеседующие в Альфе действительно пытались определить мой технический уровень, при этом сохраняя дружелюбную атмосферу. Сам по себе собес мало отличался от других топовых российских IT-компаний: нескольких секций с решением практической задачи, плюс немного теории по теме.
Из того, что запомнилось — меня попросили написать тест на свой код. Хоть тесты до этого момента я практически ни разу не писал, интервьюеры помогли направить мысли в нужную сторону, благодаря чему задача была успешно решена, и по итогам собеседования меня пригласили к сотрудничеству, которое, кстати, продолжается уже третий год.
Что я заметил на собеседованиях
Поделюсь стоп-факторами, с которыми кандидат точно не пройдёт моё собеседование:
Разговор с командой на разном языке. Иногда в прямом смысле. Был случай, когда кандидат всё время переходил на английский. Я смог ему ответить, но в командах нет требований к знанию английского. Пока у нас нет интернациональных команд, и основной язык общения — русский, если будет по-другому, велком.
Игнор контекста собеседования. У нас нет дресс-кода и строгих рамок. Быть в худи, а не в пиджаке, или засветить кота в кадре — это ок. Но однажды кандидат курил огромный кальян на камеру. Совсем не подумал об интервьюерах, может, я тоже кальян хочу, а он не предлагает. Созваниваться из вагона метро или топлес — тоже не вариант.
Опыт не мэтчится с продуктом. Крутой мобильный разработчик, который горит видеодизайном, заскучает в нашей команде. В приложении банка для него пока нет постоянных задач.
Гуглёж. Если человек пошёл в поисковик пару раз, значит он ищет то, что знал, но забыл. Искать ответ на каждый вопрос — перебор.
Вопросы к лиду только об уровне зарплаты. На первой встрече с кандидатом мы определяем скилы и до контрольного созвона всё равно не сможем ответить.
Токсичность. Реальный пример: «Разве меня могут собесить две девушки? Они же явно ниже уровнем, чем я». Если кандидат ругается или давит на интервьюера, он у нас не приживётся. Возможно, в одиночку он крутой спец, но нам нужен командный игрок.
Высокомерие. Бывает, кандидат не может справиться с простой задачей, но вместо того, чтобы пытаться её решить, просит скипнуть, потому что «У меня знания обширные, а мы всё время тратим на какую-то ерунду».
Нет желания развиваться. Поднимать общий уровень комьюнити — круто. Мы делаем это, участвуя в митапах и собирая собственные, но Альфа — не бесплатные курсы по программированию, а крупный серьёзный проект. Вкладывая ресурсы в развитие, мы ожидаем этого самого развития, а не ухода через полгода на другое место с нашим багажом знаний.
Кандидат не пытается справиться с проблемой. Я встречал вопросы в духе: «Зачем эта задача нужна? В реальности такого не будет». С одной стороны, разработчик должен думать шире, а просто писать код может и ChatGPT. В реальности если на каждую задачу говорить: «А зачем это вообще надо, я не хочу это делать», пользы от разработчика не будет.
Каждый собеседующий всегда предвзят. Именно поэтому у меня есть «второй пилот», с которым мы приходим к среднему арифметическому. Я и сам могу быть «вторым пилотом», отдав первенство коллеге, он проведёт собес сам, а я проконтролирую, что всё хорошо.
Советы кандидатам перед интервью
Перед собеседованием в продуктовой компании я бы сказал разработчику:
Не бойся: приходить, ошибаться, предлагать. Тот, кто боится, никогда не добьётся желаемого. Мы, интервьюеры, тоже были в роли соискателя, всё понимаем и не кусаемся, если нас не кусать. Лучше предложить ужасное решение, чем не предложить ничего. В конце концов, программистов без костылей не бывает.
Разберись в стеке. Попробуй предположить, какие вопросы могут быть на интервью. Обычно все крупные компании спрашивают плюс-минус то, что нужно в их приложении. В компании, которая делает приложение для доставки еды, вряд ли будут много спрашивать про показ видео с удалённого сервера.
Повтори материал. Если понимаешь, что забыл темы, можно освежить память, но, если чего-то изначально не знал, нет особого смысла углубленно готовиться. Скорее всего, на собеседовании тебя попросят подумать и вывести ответ самостоятельно. Если не будешь лениться и будешь думать, всё получится, и это будет намного лучше, чем выдать зазубренный ответ (а это всегда заметно).
Не стесняйся своего опыта. Рассказывай всё, что сам хотел бы услышать в подобной ситуации. Самая интересная фича, самый большой факап, всё, что покажет, что ты не робот, а такой же человек, но ты растёшь и желаешь расти дальше именно в этой команде.

Здраво оцени силы. Все мы хотим на вакансии сеньоров и лидов, но всему своё время. Если будешь расти планомерно, обязательно придёшь к этому. Система собеседований несовершенна, ты можешь попробовать обмануть её и устроиться на вакансию на вырост, но кто от этого выиграет? Скорее всего, такое сотрудничество продлится недолго, и опыт будет не самый лучший.
Выводы для интервьюеров
Вот что я бы посоветовал себе в прошлом, когда только начинал собеседовать:
Не бойся — главный совет и соискателям, и начинающим интервьюерам. Помню, как волновался в первые разы, особенно, когда понимал, что от моего мнения зависит чья-то будущая работа. Со временем просто понял, что это обычное дело, а в хороших процессах цена ошибки сводится к минимуму.
Старайся понять уровень кандидата, а не скорость ответов. Основная техническая составляющая в собеседовании — задачи из заготовленного списка. Важно не сверить ответ кандидата и правильный ответ, а понять, как кандидат мыслит, и в случае чего направить его в нужную сторону.
Никогда не пытайся самоутвердиться за счёт кандидата. Многие из нас попадали на собеседования, где интервьюер вёл себя некрасиво, валил глупыми вопросами и ухмылялся, если не справляешься. Вспомнил? Так вот, не будь таким. Никогда. И точка. Интервьюер для кандидата — это лицо компании, и, даже если на своё лицо тебе всё равно, подумай о команде.
Попробуй свести собеседование к неформальной беседе. Для кандидата собеседование — ужасный стресс, не нужно добавлять ему лишнего. По возможности разгрузи обстановку, чтобы вам удобно было общаться и обсуждать задачи.
Наши планы
У нас в бэклоге по процессу собеседований:
Раньше у нас был бот, который генерировал для рекрутеров скрининг, чтобы он всегда получался рандомным. Потом его подзабросили. Сейчас мы разрабатываем бота 2.0, чтобы проводить скрининг онлайн.
Делать собеседование ещё более неформальным и вовлекающим. У нас даже была идея проводить интервью за настольной игрой.
Расширять методологии оценки. Например, написать утилиту или нейросеть, которая будет определять примерный уровень кандидата. Так мы получим три оценки: от двух интервьюеров и от программы, а значит ещё больше снизим субъективность.
Мы продолжим улучшать наши собеседования. Закроем одни проблемы — появятся другие. Так будет всегда, и это нормально, ведь мир не стоит на месте, появляются новые особенности, фреймворки, люди меняются, а значит и собеседования должны развиваться. О следующих крупных изменениях расскажем в новых статьях.
Если вы загорелись работать в нашей команде, смотрите вакансию на Хабре и пишите нашему HR Таисии.
Статьи, которые могут быть интересны:
Эксперименты на 3,5 квадратах: качнул сетап от «бомж-уровня» до «мини-студии»
Как у нас почти получилось сделать автономного робота для «Битвы Роботов»
Как дизайнеру с помощью макетов оптимизировать процессы и сэкономить время
База об организации процесса разметки: команда, онбординг, метрики
Подписывайтесь на Телеграм-канал Alfa Digital — там мы постим новости, опросы, видео с митапов, краткие выжимки из статей, иногда шутим.
