Кандидат приходит устраиваться на работу водителем. В резюме у него пять лет за баранкой пылесоса грузовика и восемь — легковушки. Я сажаю его в малолитражку и прошу в качестве демонстрации проехать полсотни метров по прямой, повернуть направо и там остановиться возле знака «P». Почти оскорбительно простое задание, не правда ли?
Я наблюдаю, как машина глохнет, потом ещё раз глохнет, потом, после снятия с ручника, рывками начинает движение и на середине дистанции врезается в бордюр. Даёт задний ход, снова глохнет, теперь поперёк дороги. Ещё раз врезается в бордюр, поднатужившись, наезжает на него и тут же цепляет зеркалом дерево. Кандидат выходит, поправляет зеркало, догоняет скатывающуюся назад машину, ставит на ручник. Машина глохнет. После снятия с ручника трогается и врезается в дерево уже бампером. Задний ход, машина съезжает с поребрика на дорогу и каким-то чудом становится по направлению движения. Газу!
Заветный знак «P» маячит вдалеке, как мираж, не становясь ближе, — но это потому, что кандидат газует на нейтрали. Новая попытка, и машина с визгом трогается с места, поднимая асфальто-резиновую пыль. Чуть было не пролетев мимо нужного поворота, машина в последний момент останавливается со скрипом тормозов. Не вписываясь в поворот, она ещё раз проезжает по поребрику и останавливается на противоположной от знака «P» стороне дороги.
Кандидат выходит из машины и объясняет свою езду так: «Вы знаете, я вообще-то готовился к собеседованию. Мне не сказали, что будет практический тест».
На самом деле, конечно, всё было не так. Собеседование было на должность не водителя, а программиста, в резюме пять лет одного языка программирования и восемь — другого, а задание… я не буду его здесь публиковать, но, в общем, если вы умеете программировать, оно будет для вас почти оскорбительно простым. Я провожу собеседования по Skype и пользуюсь Google-документом c общим доступом, чтобы наблюдать, как кандидат решает задачу, в реальном времени.
Не менее, чем в половине случаев то, что я вижу, выглядит как езда пьяного психопата по льду вслепую. Я гляжу в бездну невежества, а бездна глядит в меня. Ослепительный ангел халтуры отрыгивает говнокод, за каждую строку которого Господь убивает белька. Чтобы не заразиться ретровирусом, вызывающим раннюю профнепригодность, я отсаживаюсь подальше от экрана, а потом получаю в буфете положенные за вредность пол-литра пива.
Я сейчас не говорю о кандидатах, которые не дотягивают до заданного нами высокого уровня. Я говорю о способности решить задачу, которую может без проблем решить любой минимально компетентный программист. Это как для водителя проехать по прямой и свернуть за угол. Как для автомеханика подкачать шины. Как для медсестры дать больному таблетку. Как для шеф-повара приготовить бутерброд. Как для парикмахера подстричь налысо. Улавливаете, к чему я? Как для врача выписать слабительное. Как для сисадмина перезагрузить компьютер. Как для физрука покрыть коня матом. Как для электрика заменить лампочку. Уже стало наглядно, или продолжать? Как для преподавателя поставить студенту «автомат». Как для депутата проголосовать как все. Как для фотографа сделать селфи. Как для блогера убрать простыню под кат.
На что надеется человек, который идёт на собеседование, не владея даже основами профессии? Кто ему вообще ляпнул, что он программист? Наверное, он думает, что сможет, молотя по клавишам, как бессмертная обезьяна, рано или поздно написать «Гамлета», но за отведённое на собеседование время почему-то выходит только половина матерной частушки без рифмы. Я не могу решить, какой вариант лучше: эпическая переоценка собственной компетентности или наглая попытка проскочить на дурничка, авось собеседование будет проводить такой же недоучка.
Помимо классической отмазки «я готовился к устному собеседованию» (и поэтому башку с собой не взял — в ней цветы стояли, не хотелось выбрасывать), почти от каждого из безнадёжных кандидатов я слышу просьбу разрешить им писать код в другом редакторе (IDE) и сразу отлаживать его, а уж потом показать мне результат. Заманчиво, но протокол собеседований неумолимо требует, чтобы я пил чашу страдания до дна и наблюдал каждую судорогу, с которой появляется на свет мертворождённая программа.
Раньше перед собеседованиями эти люди ещё присылали образцы кода, которые они писали для себя или по работе. Качество этих образцов обычно было не самым лучшим, но это хотя бы как-то ездило, а не хромало на месте вприпрыжку. Разгадку подсказал мне однажды сам кандидат: он объяснил, что обычно, когда пишет код, то сразу же пытается его запускать и редактирует вусмерть, пока хоть как-то не заработает. Вот как это делается! Если достаточно долго месить чан с перловой кашей, в синтаксическом мусоре можно рано или поздно узреть лик Ларри Уолла. Когда удалось нашаманить, чтобы текст компилировался, то можно выпускать бета-версию, а когда программа сможет хоть раз не упасть и не зависнуть — финальный релиз. Остальные баги найдут пользователи.
И ведь у этих людей на момент, когда они приходят ко мне на собеседование, уже имеется послужной список. То есть какие-то лохи добровольно отдавали им деньги, и не раз. А если вы думаете, что эти ребята всё правильно делают, надо же как-то устраиваться в жизни, то имейте в виду: безрукие туфтари, которых во имя человечества надлежит гнать из профессии сверхзвуковыми пенделями, в этот самый момент сидят где-то и клепают на коленках говносайты и говноприложения, а вам, терпилы, потом всем этим пользоваться.
http://feldgendler.livejournal.com/155234.html