Ну привет. Я только что с собеса, и у меня бомбит. Сколько не пишут на Хабре, как правильно собеседовать — лучше не становится.
Мне кинули предложение — Senior full-stack .NET Developer, удаленно, крутой проект, куча денег. В списке требований хренова гора не связанных между собой вещей из мира .net и js/ts. Выглядит так, будто просто свалили в кучу все, что нагуглили за 10 минут — причем мало понимая, что именно.
Тревожно, но ничего. Собеседовать, думаю, будет разработчик — человек, с которым я говорю на одном языке. Расскажу про то, что делал, обсудим подходы к решению задач, проблемы в .NET, перспективы C#. Поговорим про структуры данных. Расскажу, почему структурная типизация мне нравится больше, чем мнемоническая. Если пойдет хорошо, поделюсь даже своей идеей фикс — всегда использовать структуры вместо классов в качестве моделей. Посравниваю FLUX с MVVM, расскажу, как нереально красив симбиоз ФП и ООП в TypeScript.
В общем, предвкушаю хороший разговор.
Мне ответили и предложили интервью по скайпу, зачем-то обязательно с веб-камерой. Ноут у меня сломан. Было несколько минут, и я решил выбежать в ближайший магазин. Там люди, видимо, понимают, что вебки никому не нужны. Но что делать — беру дорогущую экшн-камеру, выковыриваю ее из панциря, креплю на жвачку к монитору.
Когда интервью началось, я понял, зачем вебка нужна — чтобы я сразу увидел, какой самодовольный топище передо мной сидит — “Да я с полувзгляда вижу, какой ты профан”.
Пошли "синьорские" вопросы. Что такое protected internal? Отвечаю. Что такое ref, что такое out. Тоже знаю, но уже подозреваю, что развернутые ответы ему не нужны. Чем dynamic отличается от Object? Чувствую себя как в школе, но ладно, рассказываю. Что такое virtual?
Бам!
Убей не помню. Смотрю — топище расплывается от гордости, светится. Высокомерие так и льется из экрана. Рад, что съел очередного болвана, который не знает “базовых” вещей. Самоутвердился, можно искать следующего. Интервью, естественно, кончается.
Я закрываю скайп и, конечно, тут же вспоминаю, что за virtual. Но компания уже, наверняка, уверена, что я на 100% профнепригоден.
И мне кажется то, что случилось — очень нездоровый симптом в мире разработчиков.
Совсем недавно была статья про то, что при найме в нас видят только функции. Что если разраб не зазубрил все даже самые ненужные для зазубривания вещи — его не берут, и это ужасно. Но я думаю, проблема здесь совсем в другом. Бизнес почему-то безумно боится самозванцев, но представления не имеет, как их отсеивать.
Причем боится настолько, что теперь видит их везде и раздувает проблему до внимания, которого она вообще не заслуживает.
Т.е. эти люди всерьез прорабатывают сценарий, что какой-то левый чувак, никогда не работавший разработчиком, придёт к ним устраиваться сеньором. Серьезно? Они не просто зацикливаются на этом подходе, они помещают его в центр дизайна первого интервью (больше одного интервью — само по себе проблема, но сейчас не об этом).
Но снижая риск найма самозванцев, компании снижают шанс найма хороших разработчиков. Хуже того — они деморализуют хороших разработчиков.
Теперь мои слова себе самому о том, что я и не должен помнить virtual, даже для меня звучат как нелепое оправдание собственной непрофессиональности. Деньги, которые мне когда-либо платили за мою работу — ошибка. Я всех вокруг обманывал. Мне необходимо выучить спеки всех технологий, которые я посмел засунуть себе в резюме.
И уже не важно, что я на самом деле стараюсь избегать классического наследования, предпочитая ему композицию, и проектирую свои классы и системы таким образом, чтобы от них не требовалось делать наследников. Не важно, что я помню поведение virtual и его назначение, не помню только само слово. Что я регулярно разрабатываю с использованием четырёх языков программирования, и не могу помнить досконально все их самые пыльные углы.
Свои дурацкие навыки писать хороший код я себе могу засунуть куда хочу. Рынок просит virtual ради virtual.
Это очень плохо. Вы боитесь самозванцев, а я боюсь следующего собеса.
Но я не готов быть зубрилой. Я хочу быть — и я являюсь — разработчиком. Я тот парень, который берёт эту вашу бизнес задачу, смотрит, какие инструменты у меня есть, корректирует её, декомпозирует и отображает на решение посредством грамотного анализа этих инструментов и их применения.
Зазубривание кейвордов, механик, принципов и паттернов — опциональный скилл. Думать и предвидеть — вот хороший скилл.
Но вместо того, чтобы изучать вещи, которые кажутся нам важными, мы набираем скиллы, важные рынку. Мы превращаемся в детишек, заточенных не на работу головой, а на решение ЕГЭ.
Вот мой поинт:
Мы не только торгуем на этом рынке, мы ещё его определяем. Девелоперов собеседуют девелоперы, именно они создают списки требований и вопросов к кандидатам.
Пацаны, достаточно. Поговорите с человеком. Спросите, что делал, как и почему.
Хотите понять, что это не самозванец? Дайте очень маленькое тестовое задание. Если вам не хватит ста строк кода, чтобы понять, что это за разработчик — возможно, вы недостаточно хороши для проведения интервью.
И да — теперь, пока за мной не будет стоять мой код, на собес я не пойду.