Сегодня я хочу представить вам интервью c программистом, а точнее программисткой из Кремниевой долины, голос которой многим из вас хорошо знаком. Ведущая самого популярного в России технологического подкаста Radio-T Ксения Покровская 5 лет живет в США, и почти 3 из них она занимается мобильной разработкой в Facebook.
В интервью мы поговорили о ее личном опыте поиска работы в США и рабочем процессе в Facebook.
— У меня классическое образования для программиста: я закончила факультет Программного Обеспечения в Московском Институте Электронной Техники. Выбор специальности не был просчитанным и до конца осознанным, я пошла учиться тому, что мне нравилось и получалось, и это была математика. Я пошла на факультет ПО, не имея компьютера. Заработала я на свой первый компьютер после первого курса – тогда и началось мое осознанное программирование.
Учебная программа в российских вузах была построена не очень эффективно, поэтому после его окончания достаточно сложно было сразу найти работу программистом.
Предвидя это, на 4 курса я решила приобщиться к технологиям и пошла работать инженером технической поддержки в компанию Parallels, которая сейчас довольно известна в Москве среди программистов, а тогда в ней работало всего человек 40. Поддерживала пользователей я недолго: примерно через две недели мне стало скучно, я подняла apache на своем компьютере, начала делать сначала статические web-странички, потом более сложные вещи: расписание нашего отдела с возможностью редактирования. Инициативы такого плана дали мне возможность довольно быстро перейти из отдела техподдержки в отдел разработки. Сначала я программировала на Perl, потом Python. А дальше вышел iPhone, мне стало интересно, попробовать написать что-то для этой платформы, я около года изучала эту платформу в свободное время, а потом осуществился еще один переход внутри компании – и я стала мобильным разработчиком.
— Как ты оказалась в США?
— Главным поводом для переезда были семейные обстоятельства, а я продолжила работу в Parallels, но теперь уже в Сиэттловском офисе. Спустя какое-то время мне захотелось попробовать свои силы в одном из американских технологических гигантов, и я начала активно готовиться к собеседованиям – и вот уже несколько лет работаю в Facebook.
— До того, как ты получила offer от Facebook. В скольких компания ты проходила собеседование?
— В прохождении собеседований, как и в любом деле, тренировка – это залог успеха, поэтому прежде чем отправлять резюме в компанию мечты, нужно испытать себя на интервью с другими компаниями. Так я и поступила: поскольку я хотела работать именно в Facebook, то до того, как идти к ним, я прошла еще несколько собеседований. И с каждым разом мои способности прохождения технических интервью росли. От пары первых компаний я, конечно, не получила предложения о работе, но те собеседования, что проходили примерно в одно время с Facebook, закончились офферами.
— Как устроен процесс собеседований в американские компании?
— Все собеседования для программистов в больших американских технологических компаниях устроены приблизительно одинаково. В стартапах немного другая организация рабочих интервью. Если говорить про Apple, Google, Facebook, Amazon, то все довольно типично: собеседование проходит в три этапа. Первый – это телефонный разговор со специалистом по найму, второй – так называемый, phone screen (удаленная техническая проверка длительностью от получаса до часа), и последний этапа – этой очное собеседование (или, как его называют в США, onsite interview).
—Расскажи подробнее, как проходят onsite-интервью?
В Facebook этот процесс имеет некоторые отличие от других компаний: мы выбираем человека не в определенную команду, а в принципе в компанию. Например, в Google или Apple тебя будут собеседовать именно те люди, которые будут работать с тобой в одной команде. Вопросы выбираются ими же на их усмотрение. В Фейсбуке, так как мы набираем людей в компанию в целом, процесс достаточно откалиброван: есть определенный набор задач, которые прежде чем попасть на собеседования с кандидатами проверяются на действующих программистах фейсбука.
Первое, что обычно поражает программиста, только переехавших из России, – это то, что на очную встречу с компанией придется потратить целый рабочий день. В США все onsite-интервью (их как правило 5-6) проходят в один день и делятся на 2 типа: технические и поведенческие. Технические часть обычно состоит из кодинг-интервью (задачки на алгоритмы и структуры данных) и дизайн-интервью, на котором задаются открытые вопросы, а цель интервьюера – понять, как вы мыслите и насколько готовы к решению сложных производственных задач.
Поведенческие собеседования в Facebook направлены на то, чтобы распознать, будет ли вам комфортно работать в культуре компании.
— Как принимается в Фейсбуке финальное решение по кандидатам?
— Каждый из интервьюеров составляет стандартизованный отзыв на кандидата. При это внимание обращается на, так называемые, red flags. Например, если кандидат справился с задачей, но в процессе решения были моменты, которые могут мешать эффективности работы, то об этом интервьюер должен написать в своем отзыве. Помимо развернутого отзыва, интервьюер дает свою рекомендацию, нанимать или не нанимать кандидата. Финальное решение принимать специальным нанимающим комитетом на основании отзывов и рекомендаций интервьюеров.
— Знанию каких языков программирования и технологий отдают предпочтение в Фейсбуке и вообще в Кремниевой долине?
— Как я уже говорила, в Facebook люди набираются не в конкретную команду, а в компанию в целом, а в компании очень много разных проектов, поэтому практически любые языки и технологии найдут применение. Собеседование можно проходить на любом языке программирования, но, конечно, может так сложиться, что интервьюер не будет знать вашего языка достаточно, чтобы оценить ваши глубокие знания. Php или Hack – неплохой вариант для Facebook, а Python хорош для любой компании. Если вы мобильный разработчик, то собеседование будет проходить на Java для Android или Objective-C/Swift для iOS программистов, и интервьюер точно будет знать этот же язык.
— Насколько важен предыдущий опыт работы для успешного прохождения собеседования?
Если на чаши весов поставить опыт и знания, то большинство технологических компаний однозначно делает выбор в пользу знаний. Философия такая: например, Вы давно в индустрии, но так сложилось, что у Вас не было никаких впечатляющих проектов, при этом у Вас очень хорошие знания и Вы способны на большее. Никто не хочет пропустить такого кандидата.
Такой подход, конечно, не идеален, потому что собеседуют обычно по алгоритмам и структурам данных – эти знания свежи у недавних выпускников вузов, но не у людей с опытом.
— Представим, что кандидат успешно прошел собеседования и получил оффер от Facebook, но через пару месяцев понял, что ему не интересен проект или некомфортно работать в команде. Может ли он поменять проект/команду? Как устроен этот процесс?
— Вообще в Facebook на первые 4-6 недель новый сотрудник попадает в условный bootcamp и проходит “курс молодого бойца”, решая реальные задачи, которые идут в продакшн, с помощью ментора. В это же время новый сотрудник активно общается с менеджерами разных команд, чтобы сделать выбор,
Если ты через какое-то время понимаешь, что это не твоя команда, не твоя технология и как-то всё тебя уже не радует, то процесс поиска команды, который был опробован в bootcamp, просто повторяется.
— Над каким проектом ты работаешь в Facebook?
— Я работаю над библиотекой, которая упрощает создание высоко оптимизированного UI в приложениях для iPhone. Идеология очень похожа на React, но фреймворк абсолютно нативный.
— Как устроен в целом рабочий процесс в Фейсбуке: от постановки задачи до выхода в продакшн?
— Я не возьмусь говорить за компанию в целом, расскажу о своем опыте. Как уже упоминалось, я занимаюсь разработкой библиотеки и мои конечные пользователи — это разработчики. В этом случае, рабочий процесс очень сильно определяется самой командой. Мы предлагаем и обсуждаем идеи внутри команды и с нашими пользователями, решаем, какие имеют больший приоритет и согласно этим решениям формируем план и дедлайны. Далее уже действуем по намеченному плану, решаем, сколько человек нужно для выполнения проекта и как координировать всех вовлеченных.
Другой момент, который очень сильно влияет на рабочий процесс и помогает нам понять, что мы идем в правильном направлении — это сбор метрик. Google, если я не ошибаюсь, была одной из первых компаний, кто внедрил такой подход. В мы в Facebook активно его используем.
— Расскажи об основных технологиях в Фейсбуке?
— Facebook – огромная компания с широким технологическим стеком. Например, у соцсети Facebook backend написан на C++, у Instagram – на Python, а у WhatsApp на Erlang. Конечно, у каждой компании есть флагманы, Facebook, например, уже несколько лет работает над собственным диалектом PHP, который называет Hack, если очень упростить, это статически типизированный PHP, этот язык довольно активно используется внутри. Но общая тенденция в большинстве крупных технологических компаний заключается в том, что проект, где используется любая из более-менее популярных технологий или языков, всегда есть.
— Насколько быстрый карьерный рост у разработчиков в Facebook? За какое время в среднем разработчик проходит путь от Junior до Senior?
— Это очень сильно зависит от человека. Я работала с очень талантливым программистом, который за год вырос от Intern до Senior, но это скорее исключение. Путь от Junior до Senior вполне реально пройти за несколько лет, если продолжать двигаться внутри одного технологического стэка. Если например, вы начинали как backend разработчик, но через пару лет вам надоело и вы решили занятся машинным обучение, учитывайте, что первое время, вы скорее всего будете не так полезны компании, потому что находитесь в периоде накопления знаний.
— Расскажи о своих планах на карьеру. Ты уже работаешь в компании своей мечты. Что дальше?
— Я думаю, что работа в Facebook – это не конечный этап. Сейчас я как раз в раздумьях, куда и как развиваться дальше. В данный момент, я занимаюсь не только программированием, но и созданием эффективного взаимодействия между командами, которые вовлечены в мой проект, моя позиция называет tech lead и она на перепутье между менеджерским путем развития и программерским.
Если в скором времени, я пойму, что организация процессов мне интереснее, то начну смотреть в сторону позиции менеджера, возможно, наоборот, снова погружусь в программирование по полной. Пока программирование для меня понятнее и удовольствие от результата больше. Написал код, обсудил его на ревью, закоммитил — результат от каждого шага заметен и по капельке дает чувство выполненной работы, тогда же в случае координирования и организации других людей, можно вложить очень много сил, но не получить результата по независимым от тебя причинам. В общем, это для меня сейчас нерешенный вопрос.
Автор: progblog