Найти в Дзене

Боль пониже спины во время технического собеседования

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

Очередная оговорка - я сейчас говорю о собеседованиях на должность разработка платформы .NET квалификации уровня middle+/senior разработчик. Встречаются ли данные вопросы на собеседованиях на должность более низкой квалификации - я не уверен. Один из трех встречается точно. Если кто-то испытает желание пояснить необходимость данных вопросов - добро пожаловать в комментарии, я к дискуссиям всегда открыт.

Вопрос 1 - “Что будет в результате выполнения данного кода?”. И дальше строк на 5-10 подозрительно пахнущий код. Ненавижу такие вопросы. Что с ними не так на мой взгляд? Я буду отталкиваться от предлагаемых вариантов ответа: 

а) Ошибка компиляции. Сегодня уже 2020 год. Неужели еще остались IDE без компиляции в реальном времени? Зачем разработчику уметь на взгляд компилировать сомнительный код?

б) Потенциальное исключение. Справедливый вариант. Только опять же — это не тот вариант, который нужно определять на глаз. Для этого существуют unit-тесты. Кстати, вопросы про unit-тесты почему-то мало кто задает. Только на уровне “используете или нет”.

в) Выбор из нескольких конкретных ответов. Самый адекватный вариант. Но при условии, если это касается вопроса на разруливание наследования. А вот вопрос уровня “i++ + ++i” зачем задавать - я не знаю. Подозреваю что в компании код примерно такого уровня и придется поддерживать подобное.

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

Вопрос 2 - “Техническое задание с ограничениями на реализацию”. Тут требуется уточнить о каких ограничениях речь. Лучший вариант ограничений что я видел - код должен пройти 12 unit-тестов, доступа к которым у тебя нет. Я говорю про другие ограничения. “Решение должно поддерживать Internet Explorer 6” или “Вы не должны использовать доработки платформы за последние 10 лет”. Просили бы сразу печатать только левой рукой на черно-белом мониторе. Или строго в блокноте. Вопрос - “Зачем?”. Для поддержки кода? Так вы, получается, сами признаетесь, что сильно отстаете технологически и не собираетесь это менять. Причем я это тех.задание получил от ОЧЕНЬ крупной и известной компании. В то время как лучший вариант я получил от стартапа, хоть и с большими инвестициями. Но про это я еще упомяну.

Вопрос 3 - “Загадки”. Разумеется в 2020 году до сих пор встречаются желающие оценить оппонента по вопросу уровня “если 1,5 курицы за 1,5 дня снесут 1,5 яйца - сколько снесут 2 курицы за 2 дня”. Самый жуткий вариант, что я слышал - “За сколько дней улитка залезет на 20 метровый столб если за день она поднимается на 5 метров, а ночью опускается на 4”. Я эту загадку слышал в школе. В разделе задачек со звездочкой учебника за шестой класс. Какое это отношение имеет к моим профессиональным навыкам я не в курсе. Видимо семнадцать лет - не достаточно долгий срок для понимания того, что книжка “Как сдвинуть гору Фудзи?” не библия и к практической пользе при отборе персонала имеет не самое прямое отношение.

Вместо вывода. Я все понимаю на самом деле. Компания нанимает не курьера. Компания нанимает человека на большую зарплату и долгий срок, и проверить нужно всеми способами, какие в голову взбредут. В данном случае лучше проверить плохим методом чем не проверять вовсе. Ну давайте тогда я приведу лучший вариант оценки, какой я встречал за последний год. Есть такой ресурс - https://www.hackerrank.com/ . Я считаю, что ресурс крайне полезен для молодых разработчиков. Так вот на его платформе можно сформировать техническое задание и его проверку unit-тестами. Дело только за самими заданиями. И самую лучшую постановку задач я видел тоже там. Кто интересуется - можете ознакомиться по этой ссылке . Надеюсь, не нужно уточнять что это не реклама? Меня никто не читает, с чего вдруг кто-то будет предлагать рекламу.