Мне не надо как лучше, мне надо чтоб вы заебались - тестовые задания на интервью as is

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

Это ваше ойти © славится тем, что в нем существует масса случайных людей с хорошо развитыми способностями болтать ерундой в резюме, говорить баззвордами и создавать видимость надувания щек. Часто это подкрепляется разного рода сертификациями скраммастеров и грамотами компьютерных академиев. Все это приводит к тому, что написанному в резюме не доверяет чуть меньше, чем 100% техлидов и разных технарей, а стало быть - подтверждением квалификации будут какие-то совсем другие вещи. Как правило, другими вещами могут являться рекомендации от хороших и не очень знакомых, разнообразные достижения на ниве тусовок, призовые места на ACM и TopCoder, исходный код в гитхабе или присланном зипфайле. Если же ничего такого нет, или правила конторы настаивают - то в дело вводится техническое интервью, нередко перемежающееся тестовым же заданием.

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

Интервью

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

  • у программистов есть 1 час до дедлайна по какой-то ненужной штуке, которая пришла в голову менеджеру
  • программист асоциален сам по себе
  • программисту платят столько, что за эти деньги надо еще немножечко вредить

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


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

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

- Ты хуй, и я тебе щас поясню почему.

Если кандидат демонстрирует признаки разума, то у не очень умного интервьюера как правило случается выпадение матки на тему “ах ты ж сука, ну щас я тебе”. И здесь начинается задавание вопросов из серии “знание особенностей вон того фреймворка при работе в IPX сетях с пропускной способностью 11400 бод”, или же “а вот расскажите мне как бы вы решали задачу упаковки параллелограммов в кубическую коробку”, или же “а посчитайте мне количество возможного разложения числа на слагаемые”. Степень упоротости заданий ограничиваются лишь тупизной интервьюера и готовностью кандидата отвечать на вот это все.

- Чувак, ну вот нахуй ты сюда пришел?

Заебаный вусмерть программист, выдернутый из колеи потогонки на свежий воздух прохладного кабинета для проведения интервью - не может вот так сразу собраться в кучу и понять, кто он и зачем он здесь. Интервьюируемый для него - это досадное средство отсрочить проебывание уже проебаного дедлайна еще на X часов, причем безо всякой выгоды для себя. Соответственно к вопросу выяснения профпригодности сидящего перед ним человека программист подойдет через призму стоящих перед ним проблем по его проекту. А это означает, что разницы между тем, проведет ли интервью уборщица или же тимлид - принципиально нет никакой. Это попросту зря потраченное время двух (а то и более) человек со случайным результатом.

- Кто все эти люди и зачем я здесь?

Бытует мнение, что кандидата на должность программиста можно собеседовать кем попало. И бывают такие перекосы, что например чувака в команду фронтэндщиков могут собеседовать хардкорные байтодрочеры. И даже если квалификация обеих сторон высочайшая - они попросту друг друга понимать не будут. Ну это как например у чувака, который рисует формы в Swing или простигосподи GWT, спрашивать за memory model, спинлоки и little endian/big endian. Если у человека и остались какие-то отрывочные знания по этим вопросам - этого в большинстве случаев будет недостаточно для успешного прохождения интервью на GWT-разработчика по методичке Linux Kernel Developer.

- Иногда лучше жевать, чем говорить.

Наличие так называемых soft skills является приятным, но вовсе не необходимым условием для программиста. Поэтому посылание какого-нибудь аутиста, хобби которого является ночами сверлить дрелью кабель-каналы и выпиливать Firebird лобзиком в Delphi - на интервью - это просто waste of time. Максимум, что из этого получится - аутист может выбрать себе другого аутиста, с которым они многозначительно будут молчать в доску с flowchart потоков. Оно вам надо?


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

Йа звизда

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

Ой вы знаете, я тут такая вся неуверенная, может вы сами за меня все сделаете?

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

Пердану в лужу - авось прокатит?

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

Тестовое задание

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

Homework

Такие задания как правило выдаются “на дом”, чтобы человек в спокойной обстановке сделал все то, на что он способен. Здесь не обходится без перверсий.

Напиши мне браузер

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

На тебе трактор, сделай из него самолет. Напильник на полке.

Чтобы придумать внятное техническое задание - это надо еще постараться. Как правило, никто этим не заморачивается - ибо нафиг? Берется первый попавшийся курс из CS, в него добивается каких-то деталей - и задачка готова. Соответствие этой задачи тому, с чем человеку придется столкнуться в дальнейшем - обычно никого не ебет. И пишут чуваки для какого-нибудь амазона задание с перебором слов через divide/conquer и временные файлы, а по факту им выдается python и изменения конфигов. Или же чуваки пишут натурально чят на сокетах для того, чтобы годами редактировать CSV файлы в инвестбанках.


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

On-site

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

Гы сына, посмотри на ебанашку

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

Остров Пасхи и его истуканы

Часто принято, что в комнате с интервьюируемым остается один или два интервьюера, которые просят “не обращать на них внимания”. Я вот никогда такого не понимал, но много раз видел. Вы что, боитесь что он спиздит ваши супер-секретные штуки, оторвет от стены доску с отпечатками жопы и ладоней - и умчится галопом вдаль? Оставьте человека в покое, ему и так тяжело.

Вот тебе абак и веревка, вяжи узлы и перекладывай камешки

Отдельно стоит отметить людей, которые требуют чтобы код писался на бумажке. В определенных случаях это оправдано - скажем, написать бинарный поиск можно и на листочке в клеточку. А старшее поколение так вообще вспомнит про перфокарты и очередь для прогона компьютерных программ в машинный зал. Но на дворе как бы 2015 год, смартфоны давно бороздят просторы задних карманов джинсов, и выдать какой-нибудь лаптоп с IDE и интернетом сейчас вообще не проблема. Ну если конечно контора не собирается заставлять программистов писать код в тетрадках в подвале без телефона и окон.

Выводы

  • К процессу интервьюирования нужно подходить точно так же, как и к планированию продукта. Прорабатывать схему проведения, вопросы и разные повороты событий.
  • Не нужно думать, что все пытаются всех наебать. Но если есть сомнения по одному пункту резюме кандидата - то тут уже можно спрашивать все. Чтоб неповадно было.
  • Надо помнить, что человек, пришедший на интервью - уже находится в состоянии стресса. А поскольку вряд ли работать придется в условиях приставленного к голове пистолета и с проституткой под столом - то на интервью задача принимающей стороны - снизить стресс, а не нагнетать истерику.
  • Проводить интервью должны специально отобранные люди, у которых все в порядке и с коммуникацией, и с ЧСВ.
  • Техническое задание на интервью является вспомогательным, а не определяющим моментом.
  • Задания, выдаваемые на дом - это в большинстве случаев пустая трата времени, поскольку решение можно спиздить, ход мысли кандидата в процессе решения не ясен (если он вообще был), и как правило - все то же самое можно было бы выяснить на интервью
  • Если все же есть необходимость выдать задание на дом - то оно не должно превышать 3-4 часов на выполнение. Мало кто будет согласен убить больше времени с неясным результатом.
  • Задание на дом должно быть непосредственно связано с проектом, причем охватывать как программную часть, так и инфраструктурную.
  • Задания онсайт должны охватывать предметную область, в которой кандидату придется работать. Просить написать балансировку красно-черных деревьев и затем писать CRUD для трех таблиц в MySQL - тупо.