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

Оговорюсь сразу, чтобы не вызывать вопросов. Всё написанное здесь - это рефлексия над моим собственным опытом проведения интервью, либо над наблюдениями за этим процессом со стороны. Оно не отражает мнение каких-либо компаний и на 100% состоит из моего субъективного мнения.

Ещё одна оговорка: я большую часть карьеры провёл в достаточно специфической области (разработка компиляторов и JVM). Очень может быть, что что-то, с чем я сталкивался постоянно, вообще не происходит в других областях, и наоборот. Хотя есть основания считать, что эти явления достаточно общие.

Я провёл в общей сложности где-то в районе 100-150 технических интервью программистов. Это были люди разной степени экспертности (от студентов-второкурсников до инженеров с 20-30 лет релевантного опыта), из разных локаций (Россия, Европа, Америка, Индия), из разных академических сред (от summa cum laude из Лиги плюща и до заштатных заборостроительных институтов; людей совсем без образования после 3-месячных курсов в силу специфики области у нас нет, поскольку не существует подобных курсов). Мой вердикт по кандидатам был "да" примерно в 15% случаев (тут стоит пояснить, что в моей команде решения обычно принимаются коллегиально, и ответ каждого интервьюера может быть "да", "может быть" и "нет". Конечное решение принимает менеджер, но обычно, если нет ни одного "нет" и есть некоторое количество "да", то человек получает оффер).

Попробую описать некоторые интересные моменты, которые я замечал за собой и коллегами.

Решают первые минуты

Исключения бывают, но по моему опыту, я в 80% случаев точно знал, каким будет итоговый ответ, уже в начале интервью. Оно у нас обычно занимает час или чуть меньше, и первые 10-15 минут кандидат рассказывает о себе и прошлом опыте, по ходу отвечая на какие-то вопросы по ходу дела. Проверка знания теории и решение задачек с написанием кода, которым обычно уделяется наибольшее внимание в процессе собеседования, почти не влияют на результат. Почему так? Думаю, что причины три.

  1. Баг мышления самого интервьюера. Об этом писал Каннеман, и похоже, что от власти первого впечатления никуда не деться. Впрочем, она не абсолютна: случаи, когда человек очень гладко рассказывал в начале, а потом писал бредовый код и был не в состоянии объяснить термины, которыми активно сыпал, у нас были. Конечно, в этом случае решение менялось. Однако если качество дальнейших ответов не вступало в жёсткое противоречие с первым впечатлением, то оставалось изначальное решение. Нужно очень сильно порвать шаблон, чтобы исправить плохое первое впечатление.

  2. Человек, который не умеет связно рассказывать свою историю (уж что-что, а это он точно знает), скорее всего, он просто не умеет связно мыслить. В этом случае логика решения задачки и качество кода будет соответствующее.

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

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

Кланы решают всё

Нет, конечно же, речь не идёт о найме племянника тёти Зины, которая очень просит. Тем не менее, сообщество инженеров явно или неявно, но делится на кланы (или, если хотите, секты) по самым разным принципам. Причём некоторые из них - это 100% вкусовщина. Приведу несколько примеров из виденного лично или подсмотренного в других компаниях:

  • Иногда интервьюеру важно, читает ли кандидат книги по профессии, какие и как давно. В то же время существуют полярные мнения по вопросу о том, можно/нужно ли учиться по книгам (или же сразу читать кодовую базу и документацию, или всё постигать через руки и опыт).

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

  • Иногда интервьюер и кандидат не сходятся по вопросу отношения к функциональному программированию, чистоте ради чистоты и всему вот этому вот. Короче, к коллективному хаскелю.

  • Разным может оказаться отношение к научным статьям и академическим регалиям: кто-то их ценит и считает критерием хорошего специалиста, а кто-то всю эту академию терпеть не может и считает, что они там занимаются никому не нужной фигнёй.

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

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

Иногда "не знаю" - лучший ответ

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

Вообще, умение говорить "не знаю [, но могу порассуждать, как оно могло бы быть]" - это достаточно надёжный критерий эксперта. Если у человека не наблюдается нимба над головой и стигмат на ладонях, то он не может знать всего. Самый страшный грех в моей личной иерархии грехов - это когда человек боится показаться глупым, и вместо того, чтобы честно признаться, что он не знает, с покерфейсом втирает какую-то чушь. Видимо, в надежде, что интервьюер идиот и не поймёт, что ему вешают на уши лапшу.

Цель интервью - не продемонстрировать всеведение, а найти границы собственного незнания. Иногда их прямо в ходе интервью удаётся расширить.

За базар ответить можешь?

Людям (особенно молодым людям) часто кажется, что если они будут употреблять больше количество терминов, аббревиатур, а в некоторых случаях и именных теорем, то все решат, что они очень умные. На самом деле за такой базар могут и спросить. А именно - попросить объяснить значение того или иного термина, или рассказать, как устроена (или хотя бы что делает) какая-то сложнопоименованная штуковина. Теорем мы, кажется, на интервью не доказывали, но в теории такое может быть.

Если человек понимает, о чём говорит, то в его речи есть термины, но они строго дозированы и используются к месту, а не чтобы продемонстрировать широту кругозора. Ближайшая аналогия - это когда какой-нибудь заслуженный ветеран может ходить с одним-единственным орденом на груди, а какой-нибудь владелец рыбной лавки (не имею ничего против владельцев рыбных лавок в целом - прим.) ходит с ног до головы обвешанный знаками почётного мецената (7000 р/шт) и заслуженного работника рыботорговли 3 степени.

По моим наблюдениям, человек, который не в меру сыплет слишком умными словами, не слишком понимает их смысл. Спросите у него, что они означают, и узнаете, что "я на гитхабе в каком-то репозитории видел, точно не помню" или "ну оно там было целых 2 года назад в университете, я щас такое уже и не вспомню". Ну а именная теорема была почерпнута вчера из препринта статьи на архиве, и как её применить в жизни, неведомо (зато название отличное). Вероятность успешного прохождения интервью в таком случае балансирует в районе нуля.

Будьте скромнее. Если вы умный, это поймут и так.

Маленько выводов

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

На интервью легко испортить впечатление в начале и потом его сложно исправить. До определённой степени верно и обратное. Думайте, что скажете в начале.

Не бойтесь показаться глупым. Вспомните того парня, который знает только то, что ничего не знает. Если вы умный, это поймут и без ваших усилий по демонстрации сертификатов IQ и перечисления всех известных вам умных слов. Обратное скорее навредит.

P. S. Надеюсь, не сильно задушнил.

Комментарии (20)


  1. ky0
    10.05.2025 07:22

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

    В музыкальной сфере похожую штуку (правда, там была подсознательная дискриминация по полу) побороли, просто повесив занавеску между соискателем и нанимателями - и, о чудо, мужчин и женщин стало почти поровну :) Но, правда, при игре в оркестре значительно менее важно, происходит ли у нового музыканта социальный матчинг с остальными.


    1. xortator Автор
      10.05.2025 07:22

      А нужна (и возможна) ли вообще объективность в вопросе найма? Объективно человек может писать хороший код, но субъективно он будет всех бесить и команда из-за него разбежится. Оно кому-то надо?


      1. ky0
        10.05.2025 07:22

        Просто следующий шаг - занавесочки между людьми в виде ИИ, которые будут превращать токсичные замечания на ревью в такие, которые не будут бесить :)


        1. petsernik
          10.05.2025 07:22

          ИИ-фильтр выражений звучит интересно :)


          1. PeeWeee
            10.05.2025 07:22

            Странно что до сих пор не реализовали.
            1. Было испробовано большое количество разных методов
              Мы все еще пробуем что-то выдумать

            2. Тщательная координация проекта
              Мы все посидели вместе и попили кофе

            3. Готовится расширенный отчет на основе новых идей
              Мы только что наняли трех студентов

            4. Масштабный технологический прорыв
              Это уже даже иногда работает! И снаружи выглядит так круто!

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

            6. Предварительное тестирование показало неопределенный результат
              Эта гребаная штука взорвалась как только мы включили рубильник

            7. Результаты тестирования были просто потрясающими
              Невероятно! Оно таки заработало

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

            9. В разработке
              Проект безнадежно запущен

            10. Мы это проверим
              Забудь про это. У нас и так достаточно проблем без этого

            11. Пожалуйста проверьте и подпишите
              Давай разделим за это ответственность

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

            13. Дайте свою оценку
              Хотим услышать вашу чепуху

            14. Давай обсудим лично
              Быстро ко мне в офис... я опять что-то испортил

            15. Все новое
              Детали от предыдущей модели уже сюда не подойдут

            16. Усиленное исполнение
              Даже не пробуйте поднять без специального оборудования

            17. Промышленное исполнение
              Даже больше, чем «усиленное исполнение»

            18. Облегченное исполнение
              Чуть легче чем «усиленное исполнение»

            19. Многие года разработок
              Модель, которая фактически работает

            20. Энергосберегающая модель
              Когда выдернуть из розетки

            21. Не требует обслуживания
              Невозможно починить

            22. Почти не требует обслуживания
              Почти невозможно починить

            23. Пришли мне по почте
              Мне сейчас лень записывать

            24. Согласно стандартам
              Мы всегда это так делаем

            25. Я не получал вашего е-мейла
              Я не проверял свою почту уже неделю

            Как раз же для ИИ БольшогоЯзыковогоМанипулятора задача.


    1. dyadyaSerezha
      10.05.2025 07:22

      Думаете, занавеска в программировании поможет?)


      1. ky0
        10.05.2025 07:22

        Я-то как раз против, в целом. Лучше меньше знающий, но обучаемый и вменяемый, чем плюющийся ядом Джон Кармак :)


        1. dyadyaSerezha
          10.05.2025 07:22

          К счастью, я не курсе, кто все эти люди, агенты мировой закулисы)


  1. PeeWeee
    10.05.2025 07:22

    Конченое решение принимает менеджер

    Оговорка по Фрейду? :)

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

    Не является ли этот момент недостатком с точки зрения работодателя? И не применяется ли (в крупных компаниях) для нейтрализации этого момента практика собеседования (хотя бы до последнего/предпоследнего этапов) именно людьми из другого отдела/команды?

    я большую часть карьеры провёл в достаточно специфической области (разработка компиляторов и JVM)

    (из профиля) Я разработчик оптимизирующих компиляторов с 10-летним опытом.

    Этот Ваш опыт он больше относится к российским компаниям или зарубежным? Только не надо плз ответов, что разницы нет, особенно последнее время. Да и "оптимизирующих компиляторов" тоже намекает (но может я не в курсе).

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

    Не бойтесь показаться глупым. Вспомните того парня, который знает только то, что ничего не знает.

    Вы обычно проводите этап, когда кандидатом уже пройдены все "предварительные" этапы общения, где чем развесистие напоешь, тем больше шансов пройти дальше? По структуре собеседований кандидат может явно определить, что вот, этапы отсева/бюрократии закончились, теперь пора поговорить по душам с технарями?
    С учетом что:

    Оно у нас обычно занимает час или чуть меньше, и первые 10-15 минут кандидат рассказывает о себе.
    Человек, который не умеет связно рассказывать свою историю (уж что-что, а это он точно знает), скорее всего, он просто не умеет связно мыслить.

    Или в Вашей области не практикуются многоэтапные собеседования?

    P.S. Пардон за возможно глупые вопросы, я далек и от практики собеседований, и от айти, в его узком:), программистском смысле.


    1. xortator Автор
      10.05.2025 07:22

      Оговорка по Фрейду? :)

      Пхпвхпхпхпхпхххыыы.

      Не является ли этот момент недостатком с точки зрения работодателя? И не применяется ли (в крупных компаниях) для нейтрализации этого момента практика собеседования (хотя бы до последнего/предпоследнего этапов) именно людьми из другого отдела/команды?

      Да, так делают, и даже понятно зачем. Однако я считаю, что сохранить существующую команду (если она, конечно, не какой-то треш, тогда надо гнать всех в шею) - задача гораздо более важная, чем нанять всех хороших программистов, какие есть, если результатом станет то, что все просто разбегутся. Так что при консервативном подходе к найму, рассчитанном на низкую текучку (в мире компиляторов она ОЧЕНЬ низкая) то, что я описал, соответствует интересам компании.

      Этот Ваш опыт он больше относится к российским компаниям или зарубежным?

      Intel, Azul, Cadence. Все три американские.

      Вы обычно проводите этап, когда кандидатом уже пройдены все "предварительные" этапы общения, где чем развесистие напоешь, тем больше шансов пройти дальше? По структуре собеседований кандидат может явно определить, что вот, этапы отсева/бюрократии закончились, теперь пора поговорить по душам с технарями?

      Как правило, да. Во всяком случае, кандидату явно сообщают, что это техническое интервью с инженерами.

      Или в Вашей области не практикуются многоэтапные собеседования?

      Обычно в начале HR, потом некоторое количество технических, в конце разговор с нанимающим менеджером. Насколько я понимаю, это так примерно везде.


  1. dyadyaSerezha
    10.05.2025 07:22

    но обычно, если нет ни одного "нет" и есть некоторое количество "да", то человек получает оффер).

    Странно. Сейчас, видя по несколько сотен откликов на вакансии в hh, трудно себе представить такой лёгкий порог входа. Хотя, может, на компиляторы подаются гораздо меньше (кстати, а есть сейчас неоптимизирующие компиляторы из публично изпользуемых?).

    Будьте скромнее. Если вы умный, это поймут и так.

    Я настолько умный и скромный, что не только не буду сыпать терминами, но вообще буду молчать, как рыба об лед. Ну что, берете меня?


    1. ardythe
      10.05.2025 07:22

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


    1. xortator Автор
      10.05.2025 07:22

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


      1. vkni
        10.05.2025 07:22

        Мне кажется, что у вас, в узкой области, все всех уже знают. В конце-концов, я вас могу найти в известном чатике в телеге, причём по тому же нику.

        А по вашему вопросу насчёт выхлопа от оптимизации хвостовых вызовов — Габриэль Шерер, когда работал над TMC, делал сравнение.

        https://github.com/ocaml/ocaml/pull/9760

        Основная цель TMC — это не производительность, а идиоматичность и простота кода. Вернее, там Ксавье упёрся рогом, что List.map должна быть идиоматично функциональна, а это без TMC приводит к взрыву стека. Причём это очень неприятная штука, которая никак не ловится и оставляет мины замедленного действия в программах — кто знает, где там оставили List.map вместо связки List.rev @@ List.rev_map, и насколько это критично.

        https://user-images.githubusercontent.com/426238/87300728-a95ed580-c50e-11ea-961c-3507b57579fa.png

        Как вы можете видеть, никаких прорывов в производительности нет.

        Аналогичные соображения, кмк, работают и для обычного хвостового вызова => нужна аннотация, чтобы оптимизация была не хрупкой и не оставляла послевкусие UB.


      1. vkni
        10.05.2025 07:22

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

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


  1. remindscope
    10.05.2025 07:22

    Поддерживаю автора по всем пунктам, хотя у меня опыт проведения собесов поскромнее.

    Кандидат может идеально пройти интервью, но тимлид скажет: "Что-то он мне не нравится". И этого хватит для отказа.

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

    Причем влиять могут даже самые неожиданные вещи. Например, был кандидат, который отлично формулировал мысли, почти на все хорошо ответил. Но в голосе была интонация, как будто чуть что - и он взорвется. Когда мы завершили часть с кодревью, кандидат стал хаотично кликать по строкам кода. Чисто машинально, пока мы с ним продолжали общаться о других вещах. Вроде полная ерунда, но вот это послужило достаточным основанием для предположения, что человек крепко сидит на Доте, в которой у него наиграны тысячи часов, и постоянно горит пятая точка. Рисковать брать в команду человека с таким паттерном поведения никто не захотел - вдруг начнет относиться к коллегам как к тиммейтам.


  1. kt97679
    10.05.2025 07:22

    Интервью это всегда игра и лотерея. Утверждается, что (субъективное) отношение к человеку формируется в первые минуты общения. Мало кто из людей может превозмочь этот субъективизм и оценить человека исключительно с точки зрения профессионализма. А дальше начинается веселье с мнениями и суждениями. Никогда не знаешь, что триггернет собеседующего, после чего он решит, что вы не подходите. Мне кажется данная статья является яркой демонстрацией, что правила игры везде разные.


  1. selkwind
    10.05.2025 07:22

    Будьте скромнее. Если вы умный, это поймут и так.

    Угу, скажите это индусам. Особенно когда нанимающий сам будет индус...


  1. EgorKurilko
    10.05.2025 07:22

    Супер! Это лучшее описание ожиданий интервьюера.


  1. UncutGem
    10.05.2025 07:22

    Для всех ребят, стремящихся найти работу (особенно если первую), после прочтения данной статьи рекомендую обратить внимание на мысль, что это субъективный опыт автора (о чём он сам же пишет).

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

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