Про естественный отбор
Некоторое время назад я вспомнил, что являюсь хозяином своего слова и развязал обет обходить стороной рабочие моменты:
Вчера я в очередной раз делал код ревью и мне пришла в голову мысль, что сама концепция — ежедневно дает метастазы в мое нормальное, внерабочее, существование. Поэтому я, пожалуй, напишу несколько слов про то, как надо — и как не надо — делать код ревью: в программировании, и в обычной жизни.
Впоследствии я беспардонно перегружал эту тетрадь чисто прикладными текстами. Сегодня я хотел бы попытаться в который раз отойти в своих заметках от своей профессии, а сделать это мне поможет рассказ о том, как я провожу собеседования: в программировании, и в обычной жизни.
Между собеседованием на позицию разработчика (дизайнера, стропальщика, маникюрши) и знакомством с новыми людьми в реальной жизни — на самом деле слишком много общего. Некоторые слишком нахраписты, иные — наоборот — чересчур стеснительны. Одни сразу же демонстрирут товар лицом, другие — недоуменно пожимают плечами, мол, это все не интересно. На собеседованиях — так же.
Собственно, процесс всегда запускается примерно одинаково: я узнаю о существовании того или иного человека. Отсеиваю заведомо бесперспективных (плантатор из ЮАР мне неинтересен в качестве долговременного объекта общения ровно в той же степени, что и программист на Go: между нами гигантская социальная пропасть, нам не о чем будет говорить). Оцениваю собственную пропускную способность в данный конкретный момент (вон та мадам, безусловно, очаровательна, но я немного женат, или, там, джавист с принятыми патчами в кафку, конечно, симпатичен, но нам нужно буквально пару раз в месяц поправить конфиги). И если кандидат это крупноячеистое сито пройдет — мы переходим к более систематизированному отсеву.
Я никогда не читаю резюме за пределами минимальной информации: сколько лет стажа, какое образование, как часто менялся работодатель. Люди склонны сами о себе говорить либо хвастаясь, либо жалуясь — и крайне редко можно отличить одно от другого. Автореферат — скучнейший из всевозможных жанров (вообразите себе на минутку Федора Михайловича, который выводит на обратной стороне счета в ресторане: «Студент убивает пожилую женщину, довольно быстро в своем поступке раскаивается и в дальнейшем терзается душевным раздраем. Очень увлекательно! Снабжено подробными описаниями петербуржских маршрутов!»).
Кроме того, ситуация здесь может быть схожа с оценкой какой-нибудь библиотеки с открытым исходным кодом. Люди поглупее обычно считают, что хороший проект обязан бурлить, репозиторий гнуться и трещать под напором актуальных коммитов, версия перевалить за третий десяток в мажоре, а релизы — случаться еженедельно. Чуть более профессиональные разработчики прекрасно понимают, что стабильность — никак не синоним стагнации, и хорошему проекту не нужны дополнительные коммиты, потому что функциональность авторы тщательно продумали с самого начала, а ошибки были все вычищены подчистую еще в версии 0.8.
Итак, возвращаясь к нашей сегодняшней теме: если стаж соответствует позиции, а смена мест работы происходила не ежемесячно — мы перейдем к знакомству. Лучше всего, если у соискателя есть при себе портфель с кодом, который он накоммитил за все эти годы у станка. В моей системе координат — открытого кода «на показать» может не быть максимум у мидла с тремя годами опыта. Синьёров без гитхаба не бывает. Если вы синьёр, и у вас нет ни строки в ОСС — вы нам априори не подходите, извините. На галерах и платят больше и таких идиотских требований у них обычно нет. Следующий.
В реальной жизни мне тоже не интересно знакомство с успешными бизнесменами, приезжающими на встречу на трамвае, поэтессами, публикующимися исключительно в альбомах подруг и фотографами, приглашающими всех желающих барышень на фотосессию хоть завтра за полтора косаря. Совершенно не зазорно быть средней руки ремесленником, честно выполняющим свою не требующую особенного умственного напряжения и природного таланта работу. Не нужно только при этом называть себя синьёром. За выслугу лет лычки дают в армии, а на стене за моей спиной пока вроде нет большой выпуклой красной звезды.
Если готового к показу исходного кода недостаточно, или он неидеален, я попрошу выполнить тестовое задание. Оно будет одинаковым для убеленного сединами синьёра и зеленого джуна с горящими глазами. Любую задачу можно решить миллионом разных способов, и сортировка пузырьком тоже имеет свое право на существование в некоторых случаях. Мне с кандидатом потенциально придется провести несколько лет бок о бок; ходить в разведку я предпочитаю с людьми, которых предварительно повидал в какой-нибудь внештатной ситуации.
По итогам решенного тестового задания мы поговорим (если случай совсем запущенный, я отправлю письмо с отказом, причинами и довольно подробным ревью присланного кода).
В этом разговоре не будет никакого программирования, кроме баек, курьезных случаев из личного опыта, шуточных перебранок про проблемы разных языков. Мы поговорим о жизни и после этого разговора кандидату практически наверняка будет сделано предложение. Говорят, у нас хорошо работать, и люди обычно это самое предложение принимают.
К чему я это все написал? Да вот эйчары только что сообщили, что из всех отделов компании у меня самые высокие показатели конверсии, ни одного не прошедшего испытательный срок, ни одного увольнения, средний показатель времени работы — 3 года 2 месяца. И это еще при том, что за троих из примерно двадцати человек я поручился лично, перед испытательным сроком, в ситуации «два эйчара, техлид и синьёр из смежников против, за — только я».
Так и в жизни: десять лет, потраченные на общение с неприятным человеком, — могут запросто сэкономить вам три часа беседы по душам в самом начале знакомства.