Какой язык лучше изучить, какие знания и навыки потребуются? Как подготовиться к собеседованию и вести себя на нем? На эти вопросы порталу GeekBrains ответил сотрудник Google Сергей Березин.
Сергей живет в США с 1995 года, в Google работает с января 2014-го в отделении Google Chrome. Занимается IT-поддержкой разработчиков Chrome.
— Добрый день, Сергей! Расскажи, как ты оказался в США?
— Это был август 1995 года. Я закончил Новосибирский государственный университет и поехал в Штаты — продолжать обучение в университете Карнеги-Меллон. В американские вузы можно поступать удаленно (в России сейчас действует такая же система). Сдаешь стандартизованные тесты, пишешь заявление и рассылаешь сразу в десяток университетов — в какой возьмут. Эта программа для поступающих работает и сегодня. Нужно еще внести сравнительно небольшую сумму за подачу документов (в 1995 году было около 50 долларов). И остается только ждать результатов. Если тебя приняли — собираешься и едешь учиться. В некоторых вузах придется платить за обучение — значит нужно будет еще и работать. Другие сами предлагают стипендию. В Карнеги-Меллон, например, она была.
— Сложно ли устроиться на работу в IT-компанию в Штатах? Какие могут быть преграды для соискателя из России?
— После учебы я успел поработать в нескольких компаниях, прежде чем попал в Google. Корпорации постоянно нуждаются в кадрах. Особенно сейчас востребованы программисты и другие специалисты высокой квалификации. И прием новых сотрудников в компаниях — особенно крупных — не прекращается.
В общем-то неважно, откуда специалист приедет. Взять могут и русского, и китайца — ни национальность, ни страна большого значения не имеют. Нанять американца проще, но если за рубежом найдется полезный компании специалист, его могут пригласить. Для этого работодатель готов даже оформить за свой счет рабочую визу.
В США очень серьезно относятся к трудоустройству иностранных граждан. Чтобы взять на работу иностранца, компании нужно выполнить два условия. Во-первых, доказать, что найти американца с аналогичным набором знаний, умений и навыков не удалось или это вообще невозможно. Иностранец, претендующий на рабочее место, должен быть незаменимым. Таково требование законодательства.
Во-вторых, потратить немалые деньги на оформление кучи документов — в том числе рабочей визы. Когда люди едут на работу в США, они могут ожидать, что компания спонсирует им вид на жительство, так называемую грин-карту. Это обходится работодателям в несколько тысяч долларов, и с оформлением много волокиты. Но компании выгодно, чтобы человек остался, а не ушел к конкурентам или, еще хуже, увез наработки коллектива в другую страну.
Получить грин-карту можно и самостоятельно, без помощи компании — я пытался. Но оформить ее сложнее, чем даже гражданство. Есть много критериев, по которым иностранца оценивают. Штаты могут дать вид на жительство, если человек выдающийся в своем деле. Но важно четко определить — в какой области ты незаменим. Чем более узкой будет эта сфера и чем значимее ты в ней — тем выше шансы. Не угадаешь — и ничего не получится.
Так что выгоднее, чтобы грин-карту оформила компания-работодатель. Она сама будет доказывать чиновникам, что именно этого иностранца невозможно заменить американцем. Наниматели прибегают к хитрости — пишут список требований к кандидатуре, что необходим специалист, говорящий на таком-то языке, знающий такие-то технологии… Разве что не указывают рост и цвет волос. В результате взять невозможно никого, кроме именно этого специалиста. Значит он необходим, и ему нужно дать грин-карту.
Существуют еще иммиграционные квоты — это уже государственная система, довольно сложная и жесткая. За год в страну может въехать по рабочим визам ограниченное количество людей. Если квота исчерпана, вы не сможете приехать на работу в США — даже если компания готова нанять вас и оплатить все расходы на визу и прочее.
— Что еще работодатель может оплатить, помимо оформления документов и билета на самолет? На что можно рассчитывать?
— Если компания приглашает соискателя на интервью — оплачивает по крайней мере часть расходов в поездке. Могут оплатить гостиницу, аренду автомобиля. С иностранцами расходы получаются в целом существенно выше, так что не стоит рассчитывать, что компания возьмет на себя вообще все траты.
Если вас приняли на работу — могут частично оплатить переезд. Если очень постараться — даже помочь с жильем на первые несколько дней. Но с момента трудоустройства уже будут платить зарплату — так что дальше эти расходы уже на самом сотруднике.
— Общежитий для сотрудников не предусмотрено?
— У компании Google таких общежитий нет.
— В Google работает много иностранцев?
— Довольно много. Сложно сказать навскидку, но более 10 % и точно меньше половины. У меня много знакомых, кто получал визы и работал над грин-картами.
— Специалисты каких направлений наиболее востребованы сейчас в IT-компаниях?
— Я не изучал нынешнее состояние рынка, но исходя из того, что вижу, сегодня наибольшим спросом пользуются спецы низкого уровня. Молодые люди, которые неплохо разбираются в компьютерах и программировании, смышленые, но без большого опыта работы. Для таких много мест.
В любой компании масса не особенно интеллектуальных, рутинных задач — где нужно писать много кода, поддерживать работу систем. Это не требует ни высокой квалификации, ни глубоких знаний, ни опыта. Но сотрудник должен понимать, что именно он делает и зачем, что происходит на его участке работ. Он должен быстро учиться, оперативно разбираться, как починить неработающий код или достроить его. И главное — уметь и стремиться делать все это качественно. Вот таких специалистов требуется много. По количеству набираемых сотрудников — это самая популярная ниша.
Когда на работу берут человека, у которого за плечами большой опыт — есть риск, что его труднее обучить новому. Он будет пытаться работать, как привык. А то и вовсе скажет: «Вы тут все делаете неправильно, давайте я вам переделаю, как надо… И зарплату мне дайте в два раза больше». Так что компаниям, вероятно, выгоднее нанимать людей с минимальным опытом.
Если говорить о специализации, по большей части IT-компании нуждаются в программистах, причем востребованы спецы всех направлений: и front end, и back end, и поддержка стабильности систем. Обычно все это описывается термином software engineer — «инженер программного обеспечения». Когда такой человек попадает в компанию, ему находят место. Иногда его будут перекидывать с одного проекта на другой, давать разнообразные задачи в зависимости от текущих потребностей компании. Так что чем быстрее учишься новому — тем лучше.
Для компании важен не столько объем знаний, с которым новичок придет, сколько их качество. И что из себя представляет сам человек, его личностные характеристики.
— А специалисты по компьютерному «железу» (hardware) востребованы?
— Для них могут найтись места в отдельных компаниях типа Intel, Nvidia, Broadcomm, у других известных производителей. Я в свое время много с ними работал. Но они обычно не такие большие, как софтверные гиганты. В Intel больше 100 000 человек, но остальные менее крупные. Так что и новых сотрудников там требуется не так много. Насколько я знаю, система там примерно такая же, как в Google — если человек с головой и умеет работать, у него есть шанс туда попасть.
IT-компаний, занимающихся софтом, куда больше. Это и понятно — на одном «железе» можно создать сколько угодно программ. Так что и программистов в этой области нужно больше.
— Какие еще направления деятельности доступны IT-специалистам?
— Сейчас есть «горячие области», куда людей берут охотно и на большие деньги. Это в основном обработка данных. Популярный термин для таких специальностей — Data scientists. Часто под этим подразумевают специалистов по искусственному интеллекту и смежными технологиям. Это люди, которые умеют работать с big data, пишут сложные конвейеры обработки данных — занимаются Business intelligence. Это работа с большими данными в бизнесе. Тут и оптимизация бизнеса, и обработка данных по клиентам, и сбор информации о том, какие продукты пользуются популярностью. Для этих задач требуется анализ огромных объемов данных — их изучают и вылавливают из этого моря информации шаблоны.
Специалистов такого класса пока мало, и они всюду нужны. Если у человека есть подобные навыки — его возьмут на работу, в какой бы точке мира он ни находился — хоть в России, хоть в Бангладеш.
Никто не поручится, что эта профессия будет востребована и дальше. Но если говорить про «здесь и сейчас» — это хороший способ устроиться на работу в США.
А.Б: В США средняя заработная плата для Data scientist — от 90 000 долларов в год. Специалисты топового уровня могут зарабатывать до 1 000 000 долларов.
— Поговорим о работе программистов. Какой язык будет максимально востребован при устройстве на работу в IT-компанию в США?
— У каждой компании есть свои предпочтения. Это зависит и от сферы деятельности, и от программного обеспечения, которое она разрабатывает и применяет.
Наиболее широко используются Java, C++, Python, Ruby, JavaScript — в частности, node.js. В меньшей степени — PHP. Мне кажется, он уже потихоньку уходит. Это только самые популярные.
— Что насчет Swift?
—Насколько мне известно, Swift используется только у Apple, больше на нем практически никто и не пишет. Если разработчик собирается делать программы для iPhone или Macintosh, ему этот язык будет полезен. Пригодится ли он в других компаниях — сложно сказать. Скорее всего, там это знание будет не очень востребовано.
Вообще говоря, раньше в Apple использовали Objective-C, а потом разработали более современный Swift, который, вроде бы, быстрее и проще в программировании.
Google при разработке Chrome для iOS изначально использовал Objective-C. Так исторически сложилось — когда начинали проект, Swift еще не существовал. А потом переделывать не стали. На Objective-C написана только оболочка, интерфейсная часть, чтобы программа выглядела по-эппловски. А большинство «начинки» выполнено на C++, который тоже превосходно работает на iPhone.
— Вероятно, этим списком языков дело не ограничивается?
— Можно вспомнить множество языков, которые могут быть полезны. Тот же Google Go. Его иногда называют Golang — по этому ключевому слову его проще отыскать в сети. Go переживает пик популярности. В Google на нем пишут очень много, но он используется и в других IT-компаниях: Docker написан на Go. Это система, которая используется для управления контейнерами. Контейнеры — своеобразные виртуальные машины, только очень легкие. Они стартуют за пару секунд, их можно запустить одновременно на множестве компьютеров, и они гарантируют одну и ту же среду на них всех. Docker ими «дирижирует»: запускает, управляет и контролирует. Все это написано на Go.
Есть и другие языки — конкретный выбор всегда будет зависеть от целей и задач, которые надо решить. Вообще, я бы не уделял этому вопросу такого уж большого внимания. Ведь хороший разработчик может освоить практически любой язык достаточно быстро — в течение нескольких дней. Гораздо важнее понимать принципы алгоритмов, архитектуры и правильного программирования, на которых строится разработка. Необходимо понимать, как организовывать системы и делать их стабильными, уметь мониторить их состояние. Вот этому — что действительно важно — за три дня не научишься. Это требует месяцев, а порой и лет изучения.
Так что важнее не выучить конкретный язык, с которым «точно возьмут » — это не так работает. Надо понимать базовые принципы, основы. И уметь адаптироваться к новому.
— Как проходит трудоустройство в крупных IT-компаниях?
— На этот вопрос я могу ответить довольно подробно. По крайней мере, в той части, которая касается Google. Я много интервьюирую людей, так что видел эту систему с обеих сторон.
Сначала надо переступить порог компании. Это один из самых сложных шагов. Как и в другие крупные IT-компании, в Google ежегодно поступает несколько миллионов заявлений от соискателей.
Их анализируют преимущественно автоматически. Кстати, это пример задач, которые решают Data scientists. Вручную такую работу выполнить невозможно. Заявления, которые проходят через этот фильтр, поступают к эйчарам.
Лучший способ, чтобы тебя заметили — получить рекомендацию внутри компании. Это когда сотрудник может сказать о вас: «Есть у меня один знакомый. Не знаю, насколько он хорош как программист, но говорит умные вещи и вообще производит впечатление дельного парня. Вы бы к нему пригляделись!»
Дело здесь не в том, чтобы получить «блат» и устроиться «по знакомству». Если человек работает в Google или подобной компании давно и успешно — скорее всего, он умный. И тусуется с себе подобными. Это древнее, как мир, наблюдение — и им здесь активно пользуются. Если «свой» сотрудник упоминает, что у него есть знакомый, который может быть полезен компании — такая рекомендация многократно повышает шансы соискателя. Это не гарантирует трудоустройство — ему просто легче будет попасть на интервью.
Окей, предположим, заявление соискателя заметили. Эйчар — менеджер по работе с персоналом — позвонит ему, чтобы просто побеседовать и выяснить, что это за человек.
Если впечатление хорошее — будет еще телефонное интервью, иногда два. Цель — выявить уровень знаний и отсеять тех, кто совсем не подходит компании. Здесь могут предложить решить несложные задачи.
Если и эти интервью прошли хорошо — предстоит серьезное собеседование в офисе. Кандидата пригласят в компанию и в течение дня будут с ним плотно работать.
Все это, прошу заметить, только первый шаг. И на нем «заваливается» большинство.
— На что смотрят в первую очередь — уровень и качество знаний или личные качества?
— Смотрят на все. Сначала будет техническая часть. Если человек устраивается работать софт-инженером, ему предлагают выполнить задачу, написать программу для ее решения. Или более сложное задание — разработать архитектуру системы, которая могла бы решить задачу.
Компании важно понять, будет ли кандидат эффективным, когда его возьмут в штат. Но пока человек не поработает, трудно выяснить, на что он способен. Такие задачи — это попытка приближения, чтобы определить его уровень.
Был период, когда задачи были «олимпиадного» уровня: от соискателя требовалось додуматься до чего-то нетривиального, найти хитроумное и изящное решение, без которого невозможен результат. Но подобные задания мало что говорят о специалисте и плохо прогнозируют. Ведь не придется же сотруднику, в самом деле, ежедневно сталкиваться с такими головоломками? Гораздо важнее выяснить, как он справляется с рутинными делами. Поэтому сейчас используется другая система: 4–5 человек дают соискателю более простые задачи — зато разнообразные. Для решения достаточно здравого смысла и определенного уровня знаний.
Смотрят и на то, как человек себя ведет, как общается с окружающими и позиционирует себя, интересно ли ему заниматься этими задачами.
Когда я начинаю интервью, не имею представления о человеке. Предполагаю, что он умный, но хочу сразу определить его уровень. Первым делом даю очень простую, прямо-таки позорную задачу — и рассчитываю на то, что он решит ее за минуту. Кто-то начинает возмущаться: «Что это за ерунда? Зачем ты мне это даешь? Я что, первоклассник?» Все, такого можно сразу вычеркивать. Его больше беспокоит не работа, а собственный престиж, он будет «качать права» и требовать к себе особого отношения, а хорошо работать не будет. Это наблюдение из опыта. С подобными ребятами я работал в других компаниях. До Google они, как правило, не добираются, но на интервью их временами можно встретить.
Мораль тут простая: не надо пытаться на интервью строить из себя крутого спеца. Если вам дали задачу — решайте ее. В реальной работе именно так и будет — большинство задач тупые и скучные, но их надо выполнить. Покажите, что не боитесь «черной работы» и готовы браться за любые проблемы.
Потом сложность «накручивается». Задача может показаться простой, и человек радуется — сейчас я ее в момент решу! Решил, отлично. А теперь то же самое, но для другого случая. Или сделай, чтобы работало быстро — а оптимизировать скорость выполнения иногда бывает непросто.
Таким вещам можно научиться только через практику, опыт. По-быстрому «натаскать» человека перед интервью невозможно. Тут нужна голова на плечах и знания — теорий компиляторов, сложности, алгоритмов, основы структур данных. Это стандартные вещи, которым обучают в колледже — и эти понятия должны отлетать от зубов, на каком бы языке вы ни программировали.
Предположим, молодой человек прослушал курс в университете, сдал экзамены и все благополучно забыл. Потом начинает программировать. Написал алгоритм, запустил: расчетное время до окончания работы — сто миллионов лет. Начинает вспоминать: что-то такое нам профессор рассказывал, был способ ускорить, какая-то математическая хитрость. Подумал, вспомнил, допилил — и все стало решаться за секунду. Вот это — отличительная черта хорошего программиста.
Мой знакомый математик хотел сделать программу для расчетов. Он не программист, но что-то все же написал. Запустил. Программа «висит» и ничего, вроде бы, не делает. Попросил меня посмотреть, в чем дело.
Программа оказалась правильно составленной, задачу она решала. Только вот в ней 13 уровней расчетов, и в каждом по 56 вариантов следующего уровня, то есть 13 в 56 степени. На выполнение требовалось невероятное количество времени. Хороший программист заметит такие вещи сразу и сумеет оптимизировать. Это знание теории и опыт, который можно получить, только программируя. Например, в процессе обучения.
— Если претендент выполняет все задачи, он поступит на работу?
— Это не единственный решающий фактор. Смотрят, какие интервью человек прошел и насколько успешно, сравнивают разных претендентов. Анализируют, насколько уверенно он справлялся с задачами, сколько времени затратил, как себя вел.
На работу принимают далеко не всех, кого пригласили на интервью. Счет идет на единицы процентов — точную цифру не назову. Но в Google принято так: если есть хоть небольшое сомнение в человеке — лучше сразу отказать. И это на пользу не только компании, но и соискателю. Он пойдет в другое место, а там отлично знают, как хорошо в Google фильтруют претендентов. Сам факт, что кандидат побывал на интервью в Google — большой плюс при трудоустройстве. К нему присмотрятся.
Подыскивая работу в американской компании, вполне можно упомянуть — был на интервью в Google, но не взяли. Конечно, если интервью правда было — могут и проверить. Если человек написал заявление в Google, а ему даже не ответили — о таком не стоит говорить. Но если компания оплатила билет на самолет, чтобы пообщаться с претендентом — это уже повод похвастаться.
— Чем ты занимаешься в Google?
— Я работаю в отделении Google Chrome, если конкретнее — Chrome operations. Это IT-поддержка разработчиков Chrome.
Chrome работает на множестве устройств под управлением различных систем — это и PC, и Mac, и смартфоны. На каждом типе архитектуры нужно прогнать кучу тестов. Все тестирование выполняется в облаке. Используется большое количество софта для тестов, много виртуальных машин. Вот эту систему мы и поддерживаем в работоспособном состоянии.
Сейчас у нас большой отдел, за сотню человек. Но Chrome вообще масштабный проект. Если посмотреть статистику, сколько людей вносили в его код правки в недавнем прошлом, можно насчитать более 1000 — и это только разработчики!
— Разработка таких крупных проектов ведется удаленно? Есть ли возможность работать, не выезжая из России?
— Chrome — довольно распределенная команда, они работают во многих частях мира: кто-то есть в Европе, кто-то даже в Индии. Но наш отдел, Chrome operations — в основном в Маунтин-Вью. (Mountain View — город, в котором находится главный офис Google — А.Б.)
К сожалению, в России инженеров Google не осталось, разработки там больше не ведутся. Есть офис, занимающийся продажами, но софт-инженеров больше нет.
— Какие еще подразделения есть в Google? Если человек устраивается работать, нужно ли ему знать их специализацию?
— У клиентов есть проблемы и задачи, и все IT-компании предоставляют им решения. Внутри Google работа организована с разбивкой по классам этих решений, по проектам.
Один из самых старых отделов Google — рекламный. Он первым начал зарабатывать деньги, да и по сей день делает больше всех выручки. Там много и продуктов, и программного обеспечения. В каком-то смысле Chrome — тоже часть этой экосистемы.
Но тому, кто хочет устроиться в Google, об этом думать рано. Главное — попасть «внутрь», а дальше специалисты разберутся, к какому делу его приставить.
У меня вообще не было предпочтений по поводу конкретной работы. Мне просто позвонили и спросили: «А не желаешь ли поработать в Google?» Я подумал: «Почему бы нет».
Рекрутеры даже не сообщили, в каком отделе они предлагают мне работу. Так что устраивался я фактически просто в Google. А уже потом команды, работающие над разными проектами, смотрят портфолио и решают, кому ты нужнее. Дерутся за тебя. Нет, не буквально — в переносном смысле.
— То есть это не ты устраивался в Google — это Google предложил тебе работу? Так тоже бывает?
— Бывает и так. Меня кто-то «продал» внутри Google. Это обычная практика у крупных компаний: как только ты туда попадаешь, к тебе подходит HR-менеджер и мягко вытягивает контакты знакомых хороших айтишников.
Правда, если ты перешел из конкурирующей компании, примерно в течение года не имеешь права порекомендовать кого-то оттуда. Это просто дурной тон — переманивать людей. А через год уже можно.
Получилось так, что из компании, где я раньше работал, несколько человек ушли в Google. И как раз через год с небольшим мне оттуда позвонили с предложением. Подозреваю, кто меня «сдал», но не обижаюсь.
— Предположим, соискатель получил работу. Следующий логичный шаг — гражданство. Работодатель может помочь с этим?
— Попробую вкратце объяснить систему. Сначала нужно получить рабочую визу. Максимальный срок ее действия — 6 лет. Если человек отработал этот срок и не получил других оснований оставаться — придется выехать из страны, и новую визу он сможет оформить только через год.
Это неудобно компаниям — терять работника на год. Поэтому они частенько сами начинают оформление грин-карты, когда принимают на работу иностранца. Процесс недешевый, так что такой сотрудник обходится компании дороже, чем американец. Но если грин-карта есть, уже не нужна виза, чтобы жить и работать в США. На ее оформление в среднем уходит около 3 лет.
Через 5 лет после получения вида на жительство можно подавать на гражданство. В этом компания вряд ли будет оказывать помощь. Можно этого и не делать, потому что жить с грин-картой в стране можно фактически неограниченное время.
— Зависит ли шанс на получение гражданства от профессии, места работы?
— Вряд ли тут большая зависимость. Но есть факторы, влияющие на получение гражданства.
Если уже есть вид на жительство — гражданство могут дать практически «автоматом». Но можно и тут все испортить — например, если человек совершенно не говорит по-английски. Например, он китаец и все время проработал в китайской компании. Но подобное совсем маловероятно в IT-сфере.
Необходимо сдать тест на гражданство — это сотня вопросов в основном по истории Штатов. Их нужно просто знать. Это не так уж сложно.
Самое важное — отсутствие криминала в личном деле. Речь о серьезных правонарушениях. Если просрочил библиотечную книжку или однажды неправильно запарковался — не повлияет. А из-за ареста за неаккуратное вождение могут быть проблемы. Не говоря об уголовном преследовании или розыске ФБР.
В целом, если ты честный труженик и ведешь себя по-человечески — все будет хорошо.
— Сергей, спасибо за обстоятельный рассказ! Какое напутствие ты можешь дать молодым специалистам, обучающимся в России и желающим работать в США?
— Учитесь тому, что любите делать, и радуйтесь неудачам — ошибки, как правило, лучшие учителя!
Есть английская поговорка: good judgement comes from experience, and experience comes from bad judgement. :)
Удачи!