Если взять все собеседования, которые когда либо проходили у людей, и расставить их в порядке от лучшего к худшему — то на самой последней строчке окажется мое. Это было давно. Я уже умел разрабатывать, но совершенно не разбирался в собесах — и, слепой от желания получить оффер, пропустил все тревожные звоночки.
На первом же созвоне прошло сложное техническое интервью — что нормально — но только в самом конце его объявили «первым этапом, скринингом». Второй этап вел эйчар, третий — настоящие посланники ада. Два человека наперебой заваливали техническими вопросами про дотнет, не давали ни подумать, ни ответить и переходили к следующему.
Я справился странно. Именно странно. На несколько вопросов, которые дотнетчик не может не знать я ответил неправильно, на несколько таких, которые знает далеко не каждый, я ответил хорошо. Вот так бывает, я не сказал, что такое финалайзер, потому что начинал учиться с плюсов, и запомнил его как деструктор. Зато рассказал про поколения в сборщике мусора.
Они похоже оценивали просто количество ответов, иначе как тогда они могли апрувнуть человека, который не знает про финалайзер — это необходимое знание даже для стажера в .net.
Я был ослеплен «успехом» и согласился на финальный этап — лайвкодинг. И вот там мне и пришлось переосмыслить значение слова «жопа».
Я был полон энтузиазма, потому что это не первый лайвкодинг в моей жизни, в моем родном городе меня уже просили писать код на бумажке, и все было нормально. Я полистал свои книжки по сишарпу, поубирал всякую хрень с рабочего стола, заварил себе гигантскую кружку кофе, и пошёл на созвон.
Скайп, тёмный экран, голоса — один за другим мне представляются интервьюеры. Ни одного из них не было на предыдущих этапах. Четыре штуки. Объясняют правила игры, говорят, что могу думать сколько угодно, что никто не давит, код пиши там где привык, так, как привык. Можешь гуглить все что хочешь. Но есть одно ключевое условие: задачу нужно решать в манере TDD.
— Ты уже работал с этим? Как это первый раз слышишь, что у нас такое требование? У нас все работают только по такой методологии. Ты тоже будешь. Вот тебе «простейшая университетская задачка», приступай.
Задача и правда была простой. Надо было написать парсер выражений, начать с простейших «1+2», а закончить настолько глубоко, насколько возможно за отведенные два часа.
Механизмы в моей башке заскрипели: так, просто сложение сделать невероятно легко, вычитание тоже, умножение потребует порядка действий — только оно стоящее. Если я не сделаю им умножение, они меня пошлют. Твою мать, читал же месяц назад про паттерн интерпретатор, они точно ждут именно его. Блин, я не помню как его делать! Сколько я уже думаю? Несколько минут? Они посчитают, что я идиот. Блин-блин-блин, если я сейчас же не начну хоть что-то писать, мне конец.
— Какие-то проблемы, Филипп?
Ну всё. Они все уже решили. Хотя нет, может они просто участливые? Да пиши же ты уже код!!!
Дрожащими ватными руками я нажимаю «Add file». Боже ж ты мой, как его назвать? Какой-нибудь экспрешн парсер! Стоп. В дотнете же есть родные штуки для распаршивания выражений. Они точно ждут не велосипедиста, а умного разраба, который пойдет и применит готовое решение. Открываю гугл, начинаю вбивать.
— Филипп, что вы делаете?
— Я вспомнил, что в дотнете были готовые решения под такие задачи, хочу ознакомиться с ними.
— Нет, Филипп, нас не интересует готовое решение. Пожалуйста, озвучивайте нам свои мысли, чтобы не тратить наше и ваше время.
Ооох, братан, если бы ты слышал мои мысли сейчас, интервью бы давно закончилось. Но бог с тобой. Создаю файлик, начинаю описывать интерфейс парсера.
— Филипп, что вы делаете?
— Я прикидываю структуру решения, пишу код, чтобы все в голове встало по местам, и я понял с какой стороны заходить.
— Филипп, я просто напоминаю вам, что у нас в компании применяется методология TDD, и мы в первую очередь хотели бы увидеть, насколько вы хороши именно в этом.
А я хочу увидеть, как тебе хлещут дохлой мороженной рыбиной по морде. Создаю файлик с тестом. Я не знаю, зачем. Уже очевидно, что никуда я не прошел. Туплю в нагенеренный студией код теста, одну минуту, две, три. Слышу возмущенное покашливание из скайпа. Господи, ну почему они не могли прислать на это интервью людей с предыдущего? Чтобы хотя бы один человек с той стороны экрана знал, что я блин не самый тупой человек на земле, и действительно кое-что знаю. Для этих, я определенно стал конченным дном.
Такими размышлениями была забита моя голова, когда руки вдруг начали писать какой-то код. На той стороне скайпа одобрительно захмыкали. Я написал тест, который тестирует несуществующий класс, нащелкал решарперовых хоткеев, класс сгенерился, дописал в нем, собственно код сложения. Выдохнул, почувствовал моральный подъем.
Запускаю тест — ничего не происходит. Вообще ничего, список прогнанных тестов пустой. Запускаю ещё раз, то же самое. Господь всемогущий, меня прокляли. Тесты не запускаются! Они не падают, они просто не запускаются!
Пытаюсь запустить не решарпером, а студией. Не работает. Пишу новый тест, он тоже не запускается. Это невозможно, но это происходит со мной, на кодинг интервью, студия, решарпер или дотнет сломались, и у меня не запускаются тесты.
— Филипп, вы забыли добавить модификатор public к тесту.
—…
—…
— processing…
Я понял. Выругался. Замьютил микрофон, выругался покрепче. Вернул микрофон. Добавил public, тест прошел. Я начал писать тест на вычитание. И вдруг как гром среди ясного неба:
— Филипп, наше интервью подошло к концу, огромное вам спасибо за потраченное время, мы сообщим вам о решении!
А я уже знал как все сделать. Я решил задачу в голове, но они этого не увидели — они увидели, как я кучу времени писал сложение. Куда вообще все это время делось?! Видимо я слишком долго тупил в моник, размышляя о том, что они обо мне думают.
Со мной, конечно, никто не связался. Это они очень правильно сделали. Ведь если бы они меня приняли, я бы разыскал этих людей в офисе, взял за яйца, и заставил писать код.
С тех пор я ни разу не соглашался на такие штуки. Я построил себе хорошую карьеру, сейчас сам управляю людьми, нанимаю их. И у меня нет проблем с самооценкой. Но если меня снова загнать на такое интервью, мне кажется, все вернется.
Понятно, что это моя проблема. Может дело в слабой психике, может слишком сильный синдром самозванца, может какие-то особенности характера, я не знаю. Но точно знаю, я такой не один. Нас много, и мы не становимся от этого дерьмовыми разработчиками.
Рынок огромный, мы найдем себе работу, но осадочек останется. Этот собес был лет пять назад, но он меня кошмарит до сих пор. Недавно я говорил со своим хорошим другом, который живет в США, и он рассказал мне, что у них мода на лайвкодинг проникла в каждый даже самый маленький стартап.
Американцы американцами, бог с ним. Вот чего я действительно боюсь, что у нас, как блин всегда, все всё скопируют, и на гигантском рынке не останется ни одного места, куда можно попасть без лайвкодинга. И я очень сомневаюсь, что все резко научатся проводить их так, чтобы не было адского давления.
Вы вот не любите нытье, а я не люблю, когда что-то работает плохо. Если люди, которые проводят лайвкодинг интервью в РФ, начнут давать кандидатам опцию с тестовым заданием, никто от этого не проиграет.
На правах рекламы
Мощные виртуальные серверы с процессорами AMD EPYC для разработчиков. Частота ядра CPU до 3.4 GHz. Максимальная конфигурация позволит оторваться на полную — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.
Автор: Philipp Ranzhin