Порой читаю в Дзене или на Хабре статьи, полные разочарования, о том, как собеседовали - собеседовали да и не взяли на работу. О том, как HRы на начальном этапе задают такие вопросы, что не сразу понимаешь, кого ищут и зачем. О том, как работодатели хотят получить senior-разработчиков по цене middle. Да что же это с миром-то произошло? Или хороших разработчиков стало пруд-пруди и работодатели начали "копаться", или наоборот, все это джуниоры обижаются и пытаются таким образом вылить свой праведный гнев на просторы интернета в виде диванной журналистики, к которой так легко лепятся комментарии в виде "Сложно все", "Идите в мировой рынок, а Россию в игнор-лист", "Они там вообще резюме не читают уже"... Такие статьи, как магнит, притягивают к себе соискателей, как с отрицательным опытом, чтобы внести и свой вклад в общее негодование, так и тех, кто уже получил хорошооплачиваемую работу и легко найдет себе другую, если будет нужда. Последних притягивает тем, что можно выделиться на фоне неудач своим великолепным профессионализмом и везением, некоторые доходят до того, что сразу начинают писать собственную статью "Век живи - век учись...". Ну, вы поняли, о ком это я. Что же не так с этим миром? Почему хороший специалист не может получить хорошую работу с первого, со второго и даже с третьего собеседования? Кто в этом виноват или, может быть, мы чего-то недопонимаем? А... Ну так давайте разбираться! Во-первых, я хочу сказать, что у монеты две стороны. И с той стороны сидит работодатель, он очень сильно хочет получить работника, который бы хорошо работал и соответствовал занимаемой должности, а если повезет, то еще и на команду действовал положительно - делился бы положительным опытом, внес бы какие то рационализмы и вообще оказался бы прямо сокровищем. Ну давайте, скажите, что никакой работодатель об этом даже не мечтает, что ему просто нужен кто-то с хорошим резюме и соответствующий собственному представлению той вакансии, на которую он рассчитывает. Если вы действительно так считаете - дуйте отсюда читать другие статьи и не пишите в комментариях. Я несколько раз собеседовал кандидатов на должность программиста-разработчика, так что я хотя бы приблизительно знаю, что там происходит с другой стороны, и я думаю, что знающие люди меня поймут. Учтите, что потенциальный руководитель (или члены команды, если присутствуют на интервью) выбирает того, с кем ему потом придется работать, а это значит, что коммуникации в процессе интервью играют очень важную роль. Если вы мычите, выражаете неуверенность в своих ответах или начинаете спорить прямо на интервью - это уверенный провал. Кроме того, на собеседовании вы легко можете не понравиться работодателю по неявным причинам — семантический конфликт, нервно дергали головой туда-сюда, как наркоманы, или от вас просто плохо пахло. Ну за что же его винить, ему же с вами потом работать. Постарайтесь выяснить причину неудачи и поработать над собой. А вместо того, чтобы упрямо твердить, что не знаете ответ на вопрос или не согласны с ответом, который от вас ожидали, попробуйте выяснить, что ожидали и почему. Интервью — это замечательная возможность расширить свой кругозор. Уж поверьте мне, технические специалисты с радостью расскажут о крутых технологиях и как они применяют их в своей работе. Ну а кому еще можно похвастаться? Ну а вы со своей стороны не тушуйтесь, запишите это на листочек, подготовьтесь в следующий раз получше. Вы должны продемонстрировать свои лучшие стороны, а не просто показать, что удовлетворяете требованиям на это место. Соискателей может быть несколько, и тогда выберут того, кто больше понравился, а не того, кто первым дошел до конца. Учтите, что на собеседовании в том числе принимается решение "готов ли я работать с этим человеком". Ваше резюме — это ничего. Оно представляет ваше лицо, но ровно до того момента, как вы попадете на интервью с техническими специалистами или потенциальным руководителем и покажете свое настоящее лицо. Ну хорошо, давайте сделаем поправочку — это не в полной мере справедливо по отношению к крупным IT гигантам - в них процесс гораздо сложнее и вполне вероятно, что ваше резюме имеет значительный вес в окончательной оценке, ведь там содержатся ваш суммарный опыт по профессии, ваш стек и заслуги. И тут кто-либо из собеседующих не может авторитарно принимать решения просто потому, что в большой компании такого нельзя допускать. Но в компании, где IT штат всего 100-200 человек - легко. По собственному опыту я скажу, что по резюме можно 'отсеять человека на начальном этапе', но никак не 'сразу принять'. Был у меня опыт общения с интересным соискателем - в его резюме было все - и XML и UML, и IDEF, и прочие страшные слова, которыми просто так в приличном обществе не бросаются. Мне сразу же хотелось отказать, потому что это так называемый "клик-бейт", но претендентов было не так много, и если бы я отказывал на этапе просмотра резюме, то кандидатов могло остаться всего два. На интервью я спросил его, чем отличается UML от IDEF, и знаете что? А ничего! Я вам так скажу, на интервью ошибиться могут даже нормальные специалисты, и это ни для кого не секрет, но если кто-то уверенно вносит в резюме пункты, по которым плохо плавает на интервью - это подозрительно. В стрессовой ситуации (а это и есть стрессовая ситуация) работодатель хочет видеть, какие вы принимаете решения. Если несете чепуху, это хуже, если прямо скажете, что не поняли вопроса или не имеете опыта по этому вопросу и, проявив интерес, расспросите о предмете вопроса поподробнее. Так что проверьте свое резюме – все, что там написано, должно быть плотно интегрировано в ваши мозги и четко отражать желаемую позицию. В противном случае, это может оказаться маркером на собеседовании и сыграть против вас. Как правильно составить резюме? Можно погуглить. Тут, конечно, хоть холивары разводи. И никаких на самом деле объективных границ в этом вопросе нет. А есть вот что. Если у нас имеется группа разработчиков, из которых часть не может самостоятельно принимать решения и пишет код, который желательно проверять, то это - джуны. Если у нас есть группа разработчиков, среди которых есть такие, которые влияют на архитектуру системы, не нуждаются в советах по поводу того, как выполнить ту или иную задачу и консультируют остальных членов группы по разным вопросам - это сеньоры. Остальные - миддлы. И это такая упрощенная градация, что может вызывать дополнительные вопросы. А что будет, если я в каких-то вопросах не нуждаюсь в консультациях, а в какой-то узкой сфере нуждаюсь. А что, если я консультирую остальных членов группы, но при этом не принимаю самостоятельных решений и мне не дают влиять на архитектуру. Вот давайте только не будем начинать - границы между градациями не на столько четкие, чтобы можно было судить об этом вне какого то контекста. Под "самостоятельно принимать решения" я имею в виду выбор технологий, паттернов и прочие локальные архитектурные вопросы. И теперь давайте представим, что нужен то все-таки миддл, т.е. от вас не требуется овер 5 лет в коммерческой разработке на определенном ЯП. От вас не требуется принимать архитектурных решений, влияющих на систему в целом, и незамедлительно начинать консультировать остальных разработчиков. Но вы должны четко понимать, почему "так", а почему "этак", иначе вы сразу опускаетесь к тем, кто не может принимать самостоятельные решения и чей код нужно проверять. Теперь еще поясню по поводу "архитектуры". Окей, сеньор влияет на архитектуру, а на собеседовании есть архитектурная часть, значит ли это, что ищут сеньора. Да вовсе не значит. Кто сказал, что миддл не должен знать архитектуру или даже нюансы архитектуры. Архитектуру системы в целом (укрупненно) - должен знать, иначе как он будет принимать самостоятельные решения? Архитектуру принципиально, т.е. некоторые паттерны архитектуры - должен знать, иначе как он будет принимать самостоятельные решения? Вспомните школьные годы или студенческие курсы, кто не изучал архитектуру процессора? АЛУ, УУ - знакомые слова? А зачем, из вас же не готовили сеньоров? А вот затем, что архитектуру необходимо понимать. Но у сеньора и миддла уровень понимания разный. Если миддл понимает архитектуру и "как это работает", то сеньор понимает "почему сделано так, а не иначе". Миддл понимает принципы, а сеньор разбирается в причинах. И не надо говорить, что даже не зная архитектуры я миддл, потому что пишу хороший код, это не так. Запомните: "плохо в архитектуре - джун". Ну и последнее по текущей теме - не ждите, что раз вы миддл, значит, вас сразу примут. Кому то сойдет миддл, кто-то ищет уверенного миддла, а кому-то требуется сильный миддл. И тут я попрошу еще раз пофантазировать. Представьте, что вам требуется домработник. Домработник миддл - тот который знает где мести пыль, где помыть посуду, и не спрашивает, как помыть посуду и когда мести пыль. Но в то же время не сеньор - т.е. вы не будете от него требовать химчистки вашей одежды и каких-то специфических клининговых подходов. Так вот вы возьмете такого, который формально выполнил работу, или такого, который выполнил так, что вам понравилось? Уверен, что можно довольно долго спорить, как нужно стирать пыль и мыть посуду так, чтобы этого домработника можно было считать уверенным миддлом. Да Боже упаси! Знаете, что я как-то услышал в разговоре с другом о работе на зарубежную компанию? Русские программисты для них — дешевая рабочая сила. И это правда. Да, правда то, что русский программист по какой-то причине сильнее других. Мне приятно думать, что это благодаря нашему "великому и могучему". Английский язык выглядит, как простые и строгие конструкции, в котором пофиг на интонации, а для того, чтобы не терялись смыслы, добавляют артикли, а потом еще сами путаются, где и какой употребить. Наш же язык состоит из интонаций и красок, а количество комбинаций расположения слов в одном и том же предложении просто радует фантазию и дает некоторое поле для развития речи, а следовательно, и для развития когнитивных функций нашего мозга. Но давайте вернемся к иностранцам. Мне довелось работать на датскую компанию. Попасть туда было непросто. Сколько я зарабатывал? Вполне, но знаете, сколько зарабатывает программист в Европе? Работая в офисе - в пять раз больше, чем я зарабатывал удаленно, работая на эту самую Европу. Почему? Да потому. Вы видели там налоги? Вы знаете там уровень жизни? Да, я тоже ничего не знаю, да и знать не хочу. А более всего я не хочу сравнивать, потому что это не сравнивается. И вот перед такой компанией встает следующий выбор: взять на работу одного специалиста в своей стране или у нас двух-трех за те же деньги. Вы наивно полагаете, что зарубежные компании относятся к своим русским программистам бережно и с любовью? Да, крупная зарубежная компания поставит на вас счетчик, и в тот момент, когда им покажется, что вы мало пишете или редко делаете комиты, вам придет почта о том, что вам следует подтянуть свою эффективность. А на входе в некоторые зарубежные компании на вас наклеят ярлык с кодом уровня вашего профессионализма, который вы получили при собеседовании, и вам будет довольно трудно его отклеить. Слышали в американских фильмах выражение "ты винтик"? То, что может сделать отличный специалист, там будут делать три специалиста среднего уровня за зарплату вдвое меньше, чем если бы отличный специалист работал в офисе. Мы для них дешевая рабочая сила. Уволился один - на его место уже бежит второй. Думаете, мало желающих? А теперь представьте отечественную компанию, у которой совсем другие деньги и другие налоги. У которой устав написан грамотным русским языком. Которая работает по ТК РФ. Думаете, так уж легко найти хорошего IT специалиста в нашей стране? Думаете, они на дороге валяются? Один ушел — ищи другого. А HR подсовывают каких-нибудь Вась, которые думают, что если могут разработать с нуля микросервис и задеплоить его в кубер, то это уже как минимум уверенный миддл и ему нужно платить, как в Европе. Да, это совсем другие деньги. Но зато, если вас примут и вы покажете себя с лучшей стороны, то никто не будет вешать на вас ярлыки и мерять количество комитов. Вас оценят и полюбят, работайте только хорошо. Я отнюдь не хочу сказать, что не стоит выходить на мировой рынок, я просто хочу заметить, что ничего конкретного тут сказать нельзя. Выбирайте головой, а не желанием увидеть зарплату в долларах. На мой взгляд, одним из самых важных влияющих на ваш успех при собеседовании факторов является ваш эмоциональный тон. Я убедился в этом, получив три оффера одновременно. А в общих чертах дело было так. Я немножечко подзастоялся на своей работе. По существу я бэкэнд-разработчик, люблю базы данных, очереди и брокеры, люблю архитектуру и особенно люблю писать серверный код. Как вдруг я попал в компанию, где основное время разработки уходит на фронтенд, код бэкэнда вообще генерится автоматически а из архитектуры только MySQL, PHP на среднем слое и JS у клиента. Подавленный уровнем дохода, которого мне не хватает даже на текущие нужды, севшим здоровьем и пандемией, я решился поискать работу, которая бы мне больше подошла. Пару собеседований я прошел спокойно и даже думал, что мне могут прислать оффер, но не судьба. Какие то собеседования я завалил с треском. Давайте же разберемся, что это было... Представьте, что вы проводите интервью, а на том конце провода унылый, грустный клоун, который может пошутить, но в его интонациях чувствуется обреченность. Да, он отвечает правильно и что называется "впопад", но мы же существа социальные, и эмпатия заложена в нашем коде, так что принять на работу такое чудо может только робот, который не чувствует эмоциональный тон. Но все немножечко сложнее. Дело в том, что в таком состоянии и отвечать правильно довольно сложно. В подавленном настроении вы думаете, что вот он - ваш шанс что-то изменить в жизни, и оттого нервничаете еще больше, ведь этот шанс легко упустить. Порой сложно сконцентрироваться на вопросе, в голову лезут мысли, а правильно ли я ответил на предыдущий вопрос? И наконец, достоин ли я? Я понимал свою ошибку после каждого интервью через некоторое время. Когда состояние оцепенения спадало, я вспоминал вопросы, на которых сыпался, и говорил себе, неужели ты не смог ответить на такой простой вопрос? Один раз я проходил собеседование из рук вон плохо. Неправильно составил SQL запрос с группировкой, не смог ответить, что такое шедулер, а когда настало время писать код (да-да писать код на собеседовании — это та еще история), то я вообще не понял, что я должен делать. Я не дошел до конца собеседования, мне предложили попрощаться, я в свою очередь попросил подсказать мне, чем могу заполнить мои пробелы. Через пару часов мне скинули на почту кое-какой материал. И, о Боже! Я все это знал и знал хорошо. Запрос я не смог правильно сконструировать потому, что вместо того, чтобы сфокусироваться на модели данных, я думал, как бы не сплоховать. Я не знаю, что такое шедулер потому, что интервьюер попытался произнести это слово с английским акцентом, и я даже с третьего раза не разобрал, что он говорит, и решил, что это что-то незнакомое. Когда я писал код, я должен был понимать, что необходимо продемонстрировать свои лучшие стороны и написать код, который можно сопровождать и тестировать, не смотря на то, что в нем было всего 5 строк логики. Я же написал спагетти. Спагетти, Карл! Как я выбрался из порочного круга? Просто подвернулся случай, я получил немного адреналина, поверил в себя, и так уж совпало, что на этой же неделе у меня было три собеседования. Я прошел их все и получил три оффера. На этих собеседованиях я уже не думал "как бы не сплоховать", я просто общался и отвечал на вопросы. Мой вам совет — займитесь спортом, это один из источников адреналина и может быть неплохим регулятором эмоционального тона. Ну вот, решился ты на собеседование и не прошел. Отфильтровали. Обидно. Да, может быть и обидно, но давай отодвинем эмоции в сторону. Грамотный специалист знает, что на ошибках учатся. Проанализируй свои ответы, вспомни, что ты говорил. Был ли ты до конца уверен в своих ответах? Если на какой-то вопрос ты не смог ответить, спроси у собеседующего, как нужно было ответить правильно. Что от тебя хотели - это ты должен понять еще на собеседовании, а не потом в комментариях под своим постом. Удели время на разбор ошибок, погугли, выясни правду и измени себя. Пробуй еще и еще. И в какой-то момент к тебе обязательно придет удача. Хорошо. Может быть, у тебя стало получаться, и ты получил оффер. Не бросайся на амбразуру, подумай что тебе это даст. Не попадешь ли ты в компанию, которая на входе дразнила тебя своими принципами чистого кода, а по факту тебе придется всю жизнь переписывать легаси и разбираться в чужих багах на проде. Ты должен понимать, что на рынке обе стороны имеют право выбора, и ты тоже имеешь право отказать. Иногда после отказа от того же самого работодателя приходят предложения еще соблазнительнее. Я получал в своей жизни несколько офферов и от некоторых из них отказался. Как-то раз мне показался странным такой контраст: при собеседовании компания делала акцент на чистый код, на педантичность в архитектуре, со всех сторон они выглядели, как интеллигенция в мире разработки, но я погуглил полчаса и узнал, что их продукция еще не дошла до продакшн, что у них больше тысячи недовольных отзывов на кикстартере. Так что я отказал, несмотря на то, что в оффере была сумма, превышающая мою тогдашнюю зарплату в два раза. Я получал оффер от одного известного банка. Там все было хорошо, как и у всех - легаси, баги, интересные проекты, развитие и прочее. Предлагали на выбор одну из трех команд. Все мне нравилось, но я выбрал другую компанию, потому что они больше платили. А один раз я, не дойдя до конца интервью, извинился и сообщил, что на этом этапе я уже понял, что они мне не подходят, и предложил досрочно прекратить и попрощаться. Иногда я вижу, что их стек не будет мне интересен, иногда вопросы задают такие, что я понимаю — на эту позицию я точно не хочу. Не по сложности, а по сформулированному вопросу, его грамматическим и семантическим проблемам. Но из каждого собеседования я получаю какую-то пользу. Именно благодаря таким приемам я узнал об opentracing, о NoSQL базах данных и некоторых интересных приемах в ЯП, который использую. Нет такого человека, который знает все, есть такие люди, которым не хочется узнать больше. Я не говорю, что ты должен бесконечно искать работу, даже если она у тебя уже есть. Но что мешает раз или два в месяц проходить собеседования? Это дает тебе понимание, кто ты на рынке ИТ специалистов. Какие дополнительные технологии тебе неплохо бы узнать, чтобы стать привлекательнее для работодателя. Что тебе нужно усилить в своих скиллах и какие грани необъятного нужно постичь. Если тебе все это не нужно - ты не миддл. Миддл чувствует потребность идти вперед. Запомни - движения "на месте" в развитии не существует, любой специалист либо движется вперед, либо движется назад. Так вот миддл, если движется назад, то становится джуном. Не надо винить ИТ компании в том, что они хотят не тебя. Любое собеседование — это шанс обнаружить свои слабые стороны и поработать над ними. В конце концов, собеседование проходит не тот, кто много знает, а тот, кто хорошо проходит собеседования. Ну а для этого нужно тренироваться. Разработчик программного обеспечения