Coding Interview

Собеседования – общение с потенциальным работодателем при поиске новой работы – весьма полезная и интересная форма самотренинга. Это тема заслуживает отдельного рассмотрения, но сейчас я хочу акцентировать внимание на одной из составляющих технического собеседования – написание кода в процессе собеседования.

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

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

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

Я сам впервые столкнулся с такой формой собеседования при попытке трудоустроится в Сбертех (Сбербанк-Технологии). Было это уже давно, в начале 2017 года и на тот момент в моем родном городе Вологде было не так уж и много приличных вариантов в плане трудоустройства. Одним из таких вариантов был и до сих пор остается Сбертех. Для программиста это очень хороший вариант: и условия, и зараплата, и еще прекрасная рекомендация в дальнейшем трудоустройстве. Не скажу, что там уж прямо идеально, сейчас я бы, наверное, не пошел в Сбертех. По мне так слишком много у них регламентов и формальных процедур, но это, конечно, субъективно и сейчас это не важно.

Впрочем, так или иначе речь пойдет о формальных процедурах. Я допускаю, что это именно часть согласованной/спущенной сверху схемы собеседования, но утверждать это наверняка не берусь. Я тогда собеседовался на позицию фронтенд разработчика, что вообще было не очень релевантно по отношению к моему предыдущему опыту, до этого я в основном занимался бэкенд разработкой. Но почему бы и нет, подумал я тогда и решил переквалифицироваться в фронтендеры. JavaScript подучил, React + Redux освоил, тестовое задание выполнил. Нужно было сделать какой-то не сильно сложный функционал на этом технологическом стэке. Причем тестовое задание выполнил аж в двух вариантах и на простом JavaScript и на TypeScript, прямо задание не требовало TypeScript, но намекало на его желательность.

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

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

Буквально сразу после каких-то формальных, вводных слов, мне было предложено пройти то самое Coding Interview в простом текстовом редакторе. На мои робкие попытки уточнить судьбу выполненного тестового задания был получен какой-то невнятный ответ, что дескать выполненное тестовое не имеет особого значения и мало ли, вдруг я его не сам писал, в общем его наличие – не показатель, а показатель это – «можешь ли ты сделать что-то подобное прямо сейчас». Кончено, это не дословный пересказ, за давностью я уже не помню точных формулировок, но смысл был именно таким.

Я тогда сильно впечатлился этим ответом. Спрашивается, а зачем я вообще старался, делал ваше тестовое задание, если вы даже не вникали в него? По некоторым оговоркам, которые всплыли в процессе беседы, могу предположить, что выполненное задание интервьювер либо вообще не смотрел, либо открыл уже на собеседовании, не имея ни времени, ни желания в него вникать. Что я писал, как я писал – все это оказывается не важно, ведь я могу быть обманщиком.

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

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

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

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

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

Нормальный программист в 99% случаев работает в спокойной обстановке, любые другие условия – это неизбежные и нерациональные потери в производительности.

Нет никакого смысла «кодить на время», большую часть времени квалифицированного программиста занимает обдумывание, проектирование и только меньшую – написание кода.

Более-менее опытный программист пользуется своей любимой IDE-шкой (Integrated Development Environment – интегрированная среда разработки), настроенной под себя.

Реальные задачи – это далеко не те рафинированные тестовые задачи, которые предлагают соискателю, как правило, они имеют другую специфику и тип, могут иметь другую сложность (как в меньшую, так и в большую сторону).

В итоге получается, что Coding Interview – это просто сферический конь в вакууме.

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

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

Поначалу это был резкий и грубый отказ, потом научился доносить это (и даже аргументировать) в более спокойной и дипломатичной форме. И такой отказ даже не всегда является причиной для досрочного завершения интервью, т.е. если вы корректно и спокойно откажетесь, то вполне возможно, что с вами все равно будут беседовать и проверят ваши знания и опыт как-то иначе. Именно так у меня вышло с коллегами из Avito. Даже несмотря на мой не самый дипломатичный отказ выполнить «простое тестовое задание» здесь и сейчас, со мной спокойно и доброжелательно продолжили общаться. И что совсем удивительно – по итогам беседы мне дали положительную рекомендацию. Спустя некоторое время перезвонила девушка рекрутер и сказала, что я произвел хорошее впечатление на ребят, которые меня собеседовали и предложила продолжить общение.

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

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

На этом пока все. Тема собеседований, наверное, бесконечна, но охватить ее всю и сразу просто не реально. По возможности я буду возвращаться к ней, мне есть еще, что рассказать)

Валерий Чугреев, 14.12.2020

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии