Попасть в какую-либо компанию Кремниевой Долины хотели бы многие. Мы нашли интересный
пост с практическими советами по поиску такой работы от Роба Хитона — инженера, который только что сам прошел этот путь и устроился в модный стартап Stripe.
***
После четырех месяцев веселой неопределенности, двадцати пяти попыток получить работу и шести недель постоянных интервью мне все же удалось стать частью Stripe.
Не сказал бы, что поиск работы в Долине — это что-то эпическое, незабываемое и удивительное — вроде того, как в фильме, ты понимаешь, что вот эта девочка-ботаник на самом деле сексуальная красавица. Нет, ничего такого не было, но все равно успешно пройти через все это было нелегко и потребовало куда больше усилий, чем предполагалось изначально. Какие-то мои поступки во время поиска работы оказались очень удачными и умными, какие-то — полной глупостью. Об этом можно многое сказать, но начать следует с двух уроков.
Во-первых, надо нащупать должный уровень уверенности в себе. Последние полгода мое настроение постоянно колебалось между двумя состояниями (иногда по нескольку раз в день):
- В мире миллиарды людей, которые круче меня во всем, поэтому, чтобы как-то соперничать с этими суперменами, я должен делать все быстрее и в сто раз эффективнее, чем они.
- Я ПРОГРАММИСТ, НА КОЛЕНИ, ЕСЛИ ХОТИТЕ РАБОТАТЬ СО МНОЙ.
Очевидно, что это две крайности, между которыми надо найти баланс. К сожалению, не так-то это просто сделать.
Во-вторых, мир сразу становится лучше и проще, если просто принять тот факт, что некоторые люди и компании умеют проводить интервью лучше, чем другие, а вы можете им слегка подыграть. В большинстве компаний процесс найма все же далек от того, чтобы кидать потенциальных работников в клетку с дикими животными и брать на работу выживших. Тем не менее, есть много очень крутых программистов, которые на интервью, проводимом по новомодным стандартам со всякими неожиданными вопросами и нестандартными ситуациями, не могут себя показать во всей красе. В такой ситуации лучше просто искать компанию, которая изначально вам будет подходить.
Ситуация
Чтобы было понятнее, опишу немного свою ситуацию. Мне 25 лет, и я разработчик Ruby/Rails, с некоторым опытом в других стеках. В универститете изучал физику, затем увлекся программированием, общий опыт составляет 4 года (2 года именно в качестве профессионального разработчика).
Сам я из Лондона. Мне удалось получить H1B визу в США. Получить ее было нелегко, это одельная история. Для переезда годятся H1B, O1, J1 и L1 (вот
тут больше информации на этот счет). При устройстве на работу в США надо учитывать тот факт, что не все компании готовы ради вас заморачиваться оформлением визы, так что это сразу надо узнавать.
Я начал проходить интервью с компаниями из Долины где-то с середины января этого года. Все усложнялось тем, что физически я находился за границей и попасть в Сан-Франциско на интервью было не так-то просто. В общей сложности у меня ушло 3 недели на телефонные интервью, и еще 3 недели я ходил на беседы в офисе уже на месте в Штатах — пришлось подгадать все так, чтобы охватить все назначенные интервью за одну поездку и, в идеале, к ее завершению, получить оффер.
Если вы летите на одно-единственное интервью, то тут нет проблем — обычно компания все вам оплачивает. А вот если у вас в плане 7 разных компаний, все сразу же усложняется. У меня ушла куча времени не переговоры еще до того, как я даже очутился в Сан-Франциско, поскольку я хотел как-то распределить свои затраты на всех. Это честнее, чем брать деньги с одной компании, потом ходить на другие интервью, и в итоге им отказать.
Процесс
Статистика всего процесса такова:
- Я отправил резюме в 25 компаний.
- 17 связались со мной по телефону, 8 сразу отказали или не ответили вообще.
- 7 пригласили на интервью в Сан-Франциско.
- 5 сделали предложение о работе.
Мой вам совет — прежде чем начинать искать работу в Долине, увольтесь. Если бы я был занят и искал работу в свободное время, то весь процесс растянулся бы на очень долгое время. Я предварительно завершил все свои рабочие дела, так что у меня было время на то, чтобы обстоятельно пообщаться с разными компаниями. Многие из этих бесед были, по факту, ни о чем, и если бы я вышел на контакт с меньшим числом компаний и прошел меньше интервью, то шансы на получение работы бы заметно снизились. Не удивлюсь, если бы получить предложение вообще не удалось.
А теперь другие советы.
Будьте хотя бы минимально компетентны
На самом деле, в мире не так уж много суперзвезд программирования. Так что для получения неплохого предложения о работе вам не нужно быть мега крутым. Достаточно просто знать свое дело — и вот вы уже очень приличный и довольно редкий кандидат.
Кроме того, распространено мнение, что без участия в Open Source проектах или без прокачанных профилей на StackOverflow или GitHub вам ничего не светит, — но на самом деле это скорее миф. Ваш открытый код, конечно, посмотрят на предмет его адекватности, но все прекрасно понимают, что далеко не каждый специалист имеет возможность заниматься такими проектами. Поэтому, если у вас ничего этого нет, парни из Долины найдут другой способ, как оценить ваш уровень.
То же самое касается ведение блогов. Да, популярный блог — это не лишнее, но не станет решающим моментом при найме. У меня, к примеру, был блог, некоторыми статьями я просто гордился, поэтому во всех сопроводительных письмах напирал на его наличие. Мне даже некоторые интервьюеры говорили о том, что блог им понравился, но сейчас мне уже кажется, что это была простая вежливость. На самом деле им было все равно.
Неважно, какой вы крутой в интернете. Показать себя придется на месте, без этого ни одна компания в Долине вас не наймет. Помните также, что если вы собеседуетесь на позицию начального уровня, то знайте, что все требования там носят рекомендательный характер. Если у вас даже нет опыта с конкретными технологиями, все равно не бойтесь отправить резюме. Самое худшее, что может случиться — вам откажут, но ведь могут и позвать на собеседование.
"Инженерный хруст"
Недавно Сэм Альтман написал отличный пост про понятие "
Engineer Crunch" - сейчас во всем мире такой дефицит инженеров, настолько много работы для них и так мало кандидатов, что шансы куда-нибудь устроиться довольно высоки.
Но он не такой уж "хрустящий"
Несмотря на все вышесказанное, вам откажут в куче мест, даже если вы считаете себя идеальным кандидатом для них. Все всегда индивидуально, многие просто не могут себе позволить ошибиться при найме даже одного сотрудника. Скажем, стартап с 8 работниками и одним главным инженером не может позволить себе нанять талантливого, но неопытного человека. Если вы круты только в Django, то получить работу в области машинного обучения будет не так-то легко, хотя и не невозможно.
Томаш Птачек из Matasano поделился своим интересным опытом в треде по этой теме на
HackerNews. Matasano - это консалтинговая компания в области информационной безопасности, которая нанимает людей без опыта конкретно в этой сфере. При этом им удалось собрать отличную команду. Но такие случаи единичны, так что все же стоит заранее ожидать много даже довольно удивительных отказов.
Как искать работу
Несмотря на то, что первое впечатление — это важно, про ваше резюме и сопроводительное письмо очень быстро все забудут, как только вы начнете говорить и писать код. Поэтому вся задача CV и сопроводительного письма сводится лишь к тому, чтобы дать вам шанс получить приглашение на встречу в офлайне. В интернете полно примеров составления резюме и всего такого, но мне думается, что мое сопроводительное письмо вышло уж очень удачным, так что вот
ссылочка на него.
Лучше вести конспект во время поисков. Например, он может содержать такие столбцы, как название компании, дату отправки им резюме, вашу оценку крутости компании (балльная шкала, можно расцветить для наглядности), и стадию переговоров с ними (отправил резюме/перезвонили/телефонное техническое интервью/пригласили встретиться лично/оффер).
Если компания вам отказала, перенесите ее в отдельный список. Важно иметь представление о том, сколько "живых" шансов на получение работы у вас еще остается.
На HackerNews есть ежемесячный тред Who’s Hiring, куда публикуются вакансии от разных интересных компаний. Я отправил семь резюме после просмотра этого треда. Еще одно крутое место — AngelList, там есть профайлы, в которых можно менять статус на "В активном поиске" — как на сайе знакомств, но только без сексуального подтекста. Этот метод особенно хорош, если вам интересны стартапы на сид-стадии. Мне пришло 46 оповещений о том, что моя персона заинтересовала, которые в итоге вылились в 4 разговора о работе.
Что касется LinkedIn, то там тусуются одни рекрутеры-спамеры и очень небольшое число HR-сотрудников самих компаний. Из 16 полученных там сообщений только одно привело к более предметному разговору. Совет — смените в профиле локейшн на Сан-Франциско даже до того, как там окажетесь. Еще есть
Hired.com — довольно интересная и новая модель, особенно для инженеров.
Основную отдачу, по старинке, дают прямые рассылки резюме в интересующие компании. Так я обратился в 10 компаний.
Не стоит особенно полагаться на то, что прошерстив все ваши профили, блоги и сайты, компании сами начнут предлагать вам работу. Даже если вам кто-то напишет, увидев ваш блог, то, когда дело дойдет до предметных разговоров, все быстро забудут, кто к кому обратился. Важным останется лишь то, подходите ли вы друг другу.
Интервью
Чем больше собеседований у вас будет, тем круче вы научитесь отвечать на стандартные вопросы вроде "расскажите о себе", "чего бы вы хотели от работы в плане команды, проектов, вызовов", "назовите свой любимый проект, над которым удалось поработать". Вам их все равно зададут, так что придумайте ответы, можно даже порепетировать с другом заранее.
Многие компании не особенно умеют проводить интервью, но вы же разработчик, так что напрягаться на эту тему не стоит. Вас в любом случае попросят написать код, а это уже гораздо интереснее. Если вам не нравятся задания с написанием кода, то тут что-то уже в вас не так.
Во многих компаниях вам дадут тестовое задание уже после телефонного интервью. В большинстве своем такие задачки довольно интересны. Все, что попадалось мне, было вполне интересное и неглупое. Поэтому не стоит корчить из себя суперзвезду (если вы ей пока не являетесь) и отказыаться тратить свое драгоценное время на выполнение заданий компании, куда вы хотя бы немножко хотите попасть.
Также очень часто вас будут спрашивать о разработке высокоуровневых систем — какое оборудование вы бы использовали в таком-то проекте, какую бы архитектуру выбрали, как справлялись бы со сбоями и т.п. Если у вас, как и у меня, не очень-то много практического опыта в этом плане, то просто старайтесь мыслить логически — обычно в таких вопросах нет никакой магии, и просто шаг за шагом разбирая проблему, можно выйти на решение.
Считается, что выносить на публичное обсуждение вопросы с собеседования — это не комильфо, но я все же одним поделюсь. Тем более, что мне его задавали не один раз.
Разработайте инфраструктуру для системы сокращения ссылок.
В первый раз я нес полную чушь, во второй раз все было получше, а потом я уже разглагольствовал, как CEO bit.ly, не меньше.
Ок, поделюсь еще одним часто задаваемым вопросом. Он настолько распространен, что не думаю, что какая-то компания будет против.
Что произойдет, если я напечатаю https://google.com в браузере и нажму Enter?
Тут можно поговорить о куче интересных вещей на разных уровнях - о DNS, IP адресах, кэшировании на клиентском или серверном уровне, SSL/TLS и еще о многом другом. Прикольный вопрос.
Еще один совет — в наше время рынок труда диктуют соискатели. При этом на собеседовании обычно пометки о кандидате делает рекрутер. Я вам рекомендую делать то же самое — записывайте свои впечатления об этой компании. Создайте заметку в Evernote и помечайте там, что вас спрашивали, что вы ответили — за пару месяцев походов по собеседованиям вы все забудете, так что делать это надо сразу после собеседования.
После любого разговора — по телефону или в офисе — обязательно уточняйте следующие шаги: когда с вами свяжутся, что еще нужно от вас, и так далее. Это поможет вам спланировать свое время, особенно когда вы активно ходите по собеседованиям. Это также поможет вам напоминать о себе письмами типа "Стив сказал, что вы со мной свяжетесь до пятницы, хотел просто уточнить, все ли ок?". Согласитесь, это звучит гораздо лучше чем написать что-то типа "Что-то давно от вас нет вестей, хотел узнать, понравился ли вам, надеюсь, что да, хе-хе".
Телефонные интервью
Это для многих сюрприз, но телефонные интервью очень утомительны, так что не назначайте несколько одно за другим, чтобы дать себе время отдохнуть.
Даже назначить такое интервью, на самом деле, довольно непросто и занимает много времени. С каждой компанией вы пройдете минимум два, может быть, даже 3 или 4 таких собеседования, особенно если вы пытаетесь получить работу из-за границы, и компании придется потратиться на вас, только чтобы привезти для очного разговора. Поэтому старайтесь подстроиться под потенциального работодателя, давайте им возможность выбора времени.
Во время интервью не ищите подвохов там, где их нет. Например, вас могут спросить что-то типа:
Напишите программу, которая печатает числа от 1 до 100. Вместо чисел, кратных трем, надо вывести слово "Fizz", вместо кратных пяти — "Buzz". Вместо чисел, которые кратны и трем и пяти, надо вывести слово "FixxBuzz".
Тут нет никакой загвоздки, вопрос действительно так прост, как кажется. Нужно лишь дать верный ответ. Думаю вы в курсе, что писать for(var i=0; i<=100; i++) - это не совсем верно, и начинать надо с единицы.
Еще часто спрашивают про структуры данных (хэши, массивы, наборы,
бинарные деревья поиска и т.п.). Я подписался на рассылку Coding For Interview — она оказалсь довольно полезной. В целом, если у вас регулярная практика написания кода, то очень сильно запариваться с такой подготовкой не стоит, но разок-другой освежить в памяти теорию тоже не помешает.
Собеседование в офисе
Беседы в офисе очень длинные — иногда 6-9 часов. Может быть такое, что вам не дадут даже передохнуть все это время. Не стесняйтесь достать батончик "Mars" или попросить воды, чтобы освежиться — если вы ничего не будете соображать к середине собеседования, то это трата времени для всех.
В компаниях, особенно в больших, вам сделают предложение, если вы понравились. Даже если до этого им понравился кто-то еще. Поэтому усвойте, что вы не соперничаете с другими людьми и, случайно увидев другого кандидата, не надо испепелять его взглядом или как-то вызывающе себя вести, пытаясь выбить их из равновесия.
Также надо ожидать того, что ваше первое интервью с первой компанией пройдет в сто раз хуже, чем последнее.
После интервью
Удивительно, но очень многие компании хотят видеть рекомендации. Так что соберите отзывы у людей, с которыми вы работали, и среди них желательно иметь своего бывшего босса. Подойдите к делу серьезно — расшарьте им Google Doc с информацией о том, что за компания требует рекомендацию, к кому числу и скажите примерно, что нужно изложить. Это поможет человеку быстро сделать все, что требуется, и не тратить ни свое, ни ваше время.
Не парьтесь
Проще сказать, чем сделать, но не стоит очень уж сильно переживать о том, что уже случилось, и перебирать в голове все свои ответы на вопросы. Вы даже не знаете, что конкретно от вас ожидали услышать, и даже если что-то вы сделали не так — принимать близко к сердцу это уж точно не стоит.
Условия сотрудничества
Вот
здесь можно почитать отличные советы на этот счет, но некоторые из них я все же озвучу. Главное — не начинайте обсуждать свою зарплату, пока вам не скажут, что вы подходите. Вы должны долждаться момента "Да, если" — это значит, что "вы наняты, если мы договоримся по деньгам". Позиция "нет, но", означающая "вообще нет, но, если вдруг вы понизите свои аппетиты, то можно подумать" — это совсем не так круто.
Если вы говорите свои пожелания по зарплате до того, как вам ответили согласием, то оставляете компании пространство для маневра в сторону "нет, но". Прогибать по деньгам стоит с позиции силы, когда вам уже сказали, что вы нравитесь и подходите. Тогда шансы гораздо выше. На этом этапе уже можно предъявить офферы из других компаний (если они есть), но пока вы не добрались до этой точки, ничего подобного делать просто нельзя.
Конечно, вас специально спросят о зарплате до того, как дадут ответ. Тут надо вежливо ответить, что вам бы хотелось сначала понять, подходите ли вы, а потом уже углубляться в такие детали.
Факт — инженеры не так хороши в ведении переговоров, они часто их боятся и неуверенно себя чувствуют. На самом деле в обсуждении условий будущей работы нет ничего стыдного или страшного. Главное добраться до стадии "да, если", а худшее, что может случиться, — на вашу цифру о зарплате ответят отказом. Это оставляет еще возможности договориться.
В стартапах многие люди смотрят на работу, как на "изменение мира к лучшему". Соответственно, вы для них — это инструмент, с помощью которого можно провернуть изменения. И вы должны благоговейно желать войти в историю вместе с ними. Однако работать все-таки нужно за деньги, а не только за идею.
На ранних стадиях компании любят прикидываться бедными и предлагать зарплату на 60% ниже рынка (бывает и меньше) и обещать компенсировать все опционами. Однако вы всегда должны помнить, что цена опциона зависит от текущей оценки компании. Если компания сейчас стоит $10 млн, то ваш опцион на 0.1% - это $10к. Учитывая вестинг на 4 года, это будет 2.5 тысячи долларов в год. Опционы — это не какая-то магия, их легко посчитать, и они не являются волшебной пилюлей, компенсирующей нищенскую зарплату.
Самое важное — в процессе поиска работы надо сохранять холодную голову. Не надо переходить в кавалерийскую атаку, услышав о том, что с вами не прочь обсудить условия. Нужно по-прежнему сохранять вежливость, дать понять компании, что вам она правда нравится и вы хотели бы там работать.
Заключение
Быть инженером в наше время - это круто, но найти подходящую работу все равно не так уж просто. Это требует времени и усилий. Нужно сохранять баланс между разумной организацией процесса и бешеной оптимизацией всего и вся, чтобы найти работу на день раньше. О том, как лучше всего проходить интервью, сказано и написано очень много — все это полезно знать, но нужно прежде всего прислушиваться к себе и делать так, как подсказывает интуиция, не переламывая себя.
Во время поиска работы вам придется решать очень интересные задачи, встречать разных людей и повидать множество разных офисов. Вам придется иногда говорить заученные ответы на глупые (на ваш взгляд) вопросы. Но, комбинация удачи, компетенций и еще небольшого количества удачи — и вы найдете то место, где захотите работать.