• Veronica Lee

Инженер-программист из России о том, как в 22 года устроиться на работу в Амазон.

Сегодня мы познакомимся с Айтой - разработчиком из Amazon Tokyo, который к своим 22 годам успел поработать в трех гигантах IT индустрии: Mail.ru, Rakuten и Amazon. Айта рассказал нам о своем опыте поиска работы, сложностях адаптации, а также поделился советами для начинающих программистов!



1. Начнем с образования: расскажи где ты учился, какой университет закончил и на какую специальность?


Я закончил бакалавриат МГУ им. Ломоносова факультет Вычислительной Математики и Кибернетики (ВМК). Этот факультет в своем роде гибрид математического и computer science образования.


Первые два курса довольно исчерпывающе покрывают азы высшей математики и программирования. Более специфичное направление выбирается на 3 курсе при поступлении на одну из 16 кафедр. В свое время я довольно случайно выбрал кафедру Системного Программирования, где мы изучали такие курсы, как: ядро операционной системы, базы данных, компиляторы, обработка естественного языка, веб программирование, машинное обучение и компьютерная графика.

Если интересно, более подробная информация может быть найдена тут.



2. Какой опыт работы у тебя был до компании Амазон?

  • Mail Ru Group в Росии: 1.5 года. На полставки, так как я совмещал работу с учебой на 3, 4 курсах. Именно здесь я получил полезный опыт работы в качестве начинающего разработчика, который помог мне в дальнейшем.

  • Rakuten в Японии: 6 месяцев. Я проработал в Ракутене всего полгода и могу сказать, что я прогадал с командой, в которую устроился. Но из любой ситуации можно чему-то научиться.



3. Можешь рассказать подробней о том, как ты устроился в Амазон?


Процесс подачи заявки:


Процесс подачи был достаточно стандартный – написал свое резюме, создал LinkedIn профиль, начал добавлять в друзья своих знакомых и их знакомых из своей индустрии. В итоге со мной связалось агентство, которое начало процесс подачи моего резюме в Amazon и Indeed. Помимо этого, я также подавался в Google через их официальный сайт.


Общая рекомендация здесь – наращивать связи внутри своей индустрии, так как они помогут вам найти работу в дальнейшем.


В большие компании желательно подаваться через рефералы (внутренние рекомендации сотрудников), так как это помогает вашему резюме пройти первичный автоматический скрининг резюме.


Подготовка к собеседованию:


Следующий этап - это собеседования, которые обычно состоят из 3 частей:

  1. Задачи по спортивному программированию.

  2. System design.

  3. Вопросы на soft skills.

Спортивное программирование. Для подготовки к данному типу собеседований хорошо подходит книга “Cracking the coding interview”, а также прорешивание задач на leetcode (раздел “Top interview questions”). Помимо этого базовые и продвинутые алгоритмы на русском можно найти на сайте e-maxx. Можно также посмотреть codeforces, algoexpert (платный), помимо этого есть много ютуб каналов, где объясняют алгоритмы.


System design. Здесь посложнее. Опять же можно посмотреть книгу “Cracking the coding interview”, но в основном я гуглил задачи на System Design interview.

Soft skills. Здесь я советую расписать все свои более-менее большие и значимые проекты по методике STAR, чтобы вы были способны быстро приводить примеры разных ситуаций из своего профессионального опыта. Например, “Приведите пример случая, когда вы были не согласны с менеджером, как вы поступили?”, “Приведите пример случая, когда у вас были очень жесткие дедлайны, и вы не успевали закончить проект, что вы сделали?” и тд.


Собеседование:


Процесс собеседования довольно стандартный для всех больших международных компаний (FAANG companies) и состоит из:

  1. Созвон с рекрутером, в котором вы обсуждаете вашу текущую ситуацию, чем занимаетесь сейчас, какие страны рассматриваете, какие направления работы интересуют.

  2. Онлайн тестирование, обычно вам дается 1.5 часа, за которые вам необходимо решить 2 задачи спортивного (competitive) программирования. Пример площадки, на которую вас отправят -- codility.

  3. Собеседование по видео (phone screening). Собеседование идет 45-60 минут. В течение собеседования вам дают две задачи по очереди, и вы должны объяснить ход своих мыслей, описать решение, назвать правильные сложности вашего алгоритма и написать код. В Амазоне также в течение 15-20 минут вам задают вопросы на soft skills.

  4. Очные собеседования (onsite). Вы приходите в офис компании в один из рабочих дней и проходите 4-5 собеседований подряд с обедом после 2-го собеседования. Чаще всего одно из собеседований на System Design, а все остальные примерно похожи на phone screen только в этот раз уже очно. На обед вас ведет один из сотрудников, которому вы можете задать вопросы о компании, которые вас интересуют.



4. Какие думаешь, какие скиллы нужно развивать для эффективной работы в инновационных компаниях?


Если вы только в начале своей профессиональной карьеры (не важно программист вы или нет), Настоятельно рекомендую прочитать этот facebook пост.

Полезные скиллы:

  • Умение смотреть в корень проблемы, а не тупо пытаться решить задачу, которую перед тобой поставили. Почему твоя задача вообще появилась? Может быть она пытается решить частный случай, который ты можешь обобщить и решить группу проблем? Не ограничивайте свои размышления задачей, которую вам дал менеджер. И тд.

  • Своевременная коммуникация. Помните, что вы работаете в команде, и здесь очень важно своевременно доносить информацию о статусе вашей задачи, так как вы можете затормозить прогресс всей команды.

  • Автономность. Важно быть автономным программистом, которому не нужен микроменеджмент. Вы должны уметь самостоятельно получать ответы на большинство вопросов, которые у вас возникают. НЕ ПУТАТЬ с замалчиванием проблемы. Если вы встретились с проблемой, которую вам не удается решить самостоятельно (вы уже перебрали возможные варианты, доступные вам), то вовремя обратитесь к менеджеру или ментору за помощью.

  • Умение просить и получать фидбэк. Перед принятием ключевых решений во время работы над проектом, постарайтесь рассмотреть разные подходы и перечислить плюсы и минусы этих подходов. Покажите ваши мысли своим коллегам и узнайте, что они думают на этот счет. Отсюда вытекает следующий пункт.

  • Умение доносить информацию. На любом этапе своей карьеры вам придется обсуждать, предлагать свои идеи разным людям. Важно уметь кратко и понятно доносить свою точку зрения. Еще лучше, если вы сможете хорошо её задокументировать письменно.


Более специфичные для программистов знания:

  • System design. Работая над зрелым проектом, постарайтесь понять, как работает система в целом, как и почему были приняты ключевые решения в ее дизайне? Проектирование архитектуры систем один из самых ключевых навыков программиста. Кэшируете ли вы данные? Как происходит балансировка нагрузки? Что будет, если один из ваших серверов выйдет из строя? и тд?

  • Deployment process. Выкатка очень важная часть процесса разработки. Как выкатить систему так, чтобы ваш сервис не перестал обрабатывать запросы клиентов?

  • Stress testing. Нагрузочное тестирование очень полезное для систем с высокой нагрузкой. Если вы работаете над одной из таких, то рекомендую узнать побольше на эту тему.

  • Log analyzing. Обычно этому не учат в университетах, но это очень важный навык. Почему ваша система выдает неправильные результаты на некоторых входных данных? Как понять в каком месте ошибка? Как правильно парсить логи и обрабатывать их?

А также:

  • Собеседуйте своего работодателя. До этого момента я особо не задумывался об этом, но собеседование это двусторонний процесс. Не только компания пытается понять подходите ли Вы им, но и Вы должны определить, хотите ли Вы работать на эту компанию. Хорошенько подумайте над вопросами, которые вы зададите своему потенциальному менеджеру. Вам нужно понять, квалифицированные ли работники в этой компании? Комфортная ли среда для работы? Отлажены ли процессы внутри компании?



5. Сложно ли было начинать? Как ты адаптировался в Японской (довольно строгой) рабочей культуре?


Моя первая компания в Японии (Ракутен) считается одной из самых передовых японских компаний с точки зрения создания международной рабочей атмосферы. Поэтому я думаю, что адаптация к японской культуре у меня прошла намного проще, чем если бы я работал в типичной японской компании (там, насколько я слышал, совсем все плохо).

Несмотря на вышесказанное, я все равно столкнулся с неэффективным японским менеджментом. Характерные отрицательные черты японской рабочей культуры:

  • Сильная иерархическая система. Начальник всегда прав.

  • Направленность не на результат, а на процесс. Это приводит к тому, что люди засиживаются на работе по 12 часов, работая ну оооочень не эффективно. Многие люди приходят отсиживаться на работе от звонка до звонка.

  • Размытие ответственности. В японской рабочей культуре очень сложно заставить человека взять ответственность за что-либо.

Несмотря на это, есть и плюсы:

  • Высокое качество работы. Японцы сделают все так, как им сказали, они строго следуют инструкциям. Скорее всего это будет медленно, но перепроверено по 100 раз.

  • Меньше споров, так как решения начальства чаще всего не оспариваются.

Со всеми вышеприведенными пунктами я встретился, но благодаря Ракутену в более мягкой форме.


С точки зрения самой работы, никаких особых проблем у меня не возникало. Ничего сверхординарного, что отличалось бы от моей работы в Мейле, не было. Единственное неудобство – пришлось адаптироваться к работе на английском языке.


Стоит сказать, что в таких больших компаниях, как Ракутен, Амазон, Мейл очень многое зависит от команды, в которую ты устроился. В двух соседних командах все может быть устроено абсолютно по-разному.


В случае Амазона, ситуация совсем иная. Так как я работаю в отделе, главный офис которого находится в Кремниевой Долине, атмосфера у нас очень “западная”. Я не встречал никаких признаков японской рабочей культуры.



6. Как проходит твой типичный день в Amazone? Сколько часов в день работаешь? Насколько свободный у тебя график?




Рабочие часы. До того, как началась вся история с коронавирусом, работал я обычно примерно с 11 утра до 7-8 вечера, при этом два раза в неделю у нас есть утренние встречи с частью нашей команды, которая находится в Кремниевой долине, поэтому приходилось начинать в 9 утра.


Рабочие встречи. На данный момент в нашей команде есть только 2 еженедельные встречи, на одной из которых мы отчитываемся по текущим статусам задач, над которыми работаем. Для визуализации используется Kanban Board, также некоторые задачи разбиваются по спринтам scrum’а. А на второй -- делимся знаниями, приобретенными во время работы, которые могут быть полезны коллегам. Зачастую на этих встречах мы обсуждаем возможные решения проблем, которые касаются всех членов команды.

Помимо этого, у меня есть еженедельные встречи один на один (так называемые one on one) с моим менеджером и ментором, на которых мы можем обсуждать что угодно -- от того, какая сегодня погода до плана на следующий год, чтобы получить повышение.


Рабочие обязанности. Все команды устроены по-разному, но конкретно в моем случае, каждый из разработчиков работает над своим проектом, иногда 2 разработчика над одним проектом. Помимо этого, у нас есть обязанности, которые делятся равномерно между всеми членами команды. Например, обновление конфигурации некоторых систем. У каждой команды Амазон есть такое понятие, как oncall -- это человек, который ответственен за обработку всех запросов, поступающих в команду. Это может быть просьба объяснить, как работает ваша система, или проверка почему одна из ваших компонент вышла из строя. Обычно oncall duty ротируется раз в неделю, то есть каждую неделю меняется oncall person в команде, и так по кругу.


Тренажерный зал. При этом 2-3 раза в неделю я стараюсь ходить в тренажерный зал перед работой. Благо живу я в 12 минутах ходьбы от офиса и по пути есть тренажерный зал, поэтому я не трачу много времени на проезд (это было одним из основных критериев выбора квартиры).


Кафетерии. Что что, а еда в Японии очень вкусная и низкокалорийная. Поэтому чаще всего я питаюсь в двух внутренних кафетериях, которые есть в нашем офисе (только для сотрудников).


Сколько часов в день я работаю. Обычно это зависит от дедлайнов проекта, над которым я работаю. В основном рабочий день это 9-10 часов (учитывая обед), но во время дедлайнов он может доходить до 12-15 часов и работе по выходным. Опять же, многое зависит от команды, в которой ты работаешь.


График. График абсолютно свободный. Главное, что от тебя требуется – это результат твоей работы. До тех пор, пока ты выполняешь все свои рабочие обязательства, никто не будет указывать тебе на твой график.


Конечно, желательно, чтобы ты пересекался со своими коллегами во время работы, так как ты можешь понадобиться для срочного обсуждения каких-то рабочих моментов, к тому же, было бы неплохо поддерживать хорошие отношения со своими коллегами и проводить с ними больше времени ;) Обычно я прихожу на работу в промежуток времени с 9 до 12.



7. Расскажи вкратце о проектах, над которыми сейчас работаешь.

Не думаю, что я могу раскрывать подробности о проектах, над которыми мы работаем.

Но в общих чертах -- мы разрабатываем внутренние сервисы/инфраструктуру, которые позволяют контролировать поведение клиентов нашей платформы поиска в соответствии с условиями пользования. Когда я говорю клиенты, я имею в виду внутренние бизнесы/сервисы Амазона такие, как Алекса, Fresh, Kindle и так далее, то есть все сервисы, которым так или иначе необходимо производить поиск по каталогу товаров.


А также сервисы, направленные на оптимизацию использования внутренних ресурсов нашей платформы. Эти сервисы создаются с целью экономии денег, выделяемых на поддержку поиска, так как довольно важно не только зарабатывать больше денег, но и держать под контролем расходуемые ресурсы такие, как серверное время например.



8. Устраивает ли тебя зарабатная плата в довольно дорогом Токио?


Конкретную сумму я разглашать не могу, но что касается Токио, довольно точные зарплатные вилки можно найти на https://japan-dev.com/companies. Если интересуют другие города, то советую посмотреть примерные зарплаты на glassdoor.

Зарплаты хватает на комфортную жизнь мне и моей жене в Токио. Сюда входит аренда квартиры в одном из центральных районов, еженедельные встречи с друзьями, походы в кафе и караоке :) При этом, в месяцы без экстраординарных трат удается откладывать до 30-40% от зарплаты.



9. Много ли иностранцев в Amazone? С кем ты больше всего сблизился?

Иногда у меня появляется ощущение, что в японском Амазоне работают одни иностранцы, если говорить о программистах (с бизнес стороны, конечно, много японцев). Например, на данный момент в нашем отделе поиска из порядка 40 человек всего 5 японцев. Год назад, когда я только устроился в Амазон, в нашем отделе было 5 русскоговорящих разработчиков. Так что могу сказать, что у нас работают одни иностранцы :)


Сложно как-то обобщить людей, с которыми я сблизился на работе. Думаю, что больше всего я общаюсь с людьми, которые ближе ко мне по возрасту -- соответственно больше общих интересов. Вне работы я заметил, что многих экспатов тянет в окружение таких же экспатов, говорящих на родном тебе языке. Я не исключение :)



10. Что нравится больше всего и меньше всего в своей работе?


Больше всего в моей работе мне нравится тот факт, что каждый день я учусь чему-то новому. И это не обязательно какие-то инновационные технологии, зачастую ты учишься очень важным софт скиллам -- ведение проектов, уточнение бизнес требований, согласование людей между собой, чтобы получить наиболее полный фидбэк и тд.

Помимо этого никто не запрещает тебе проявлять инициативу в выборе проектов, над которыми ты работаешь. Интересует высоконагруженные системы? Менеджер постарается найти для тебя наиболее подходящую задачу, а в крайнем случае поддержит тебя при переходе в другую команду внутри компании.


Думаю, как и всем, мне не очень нравится работать над повторяющимися задачами, которым приходится уделять какое-то количество времени еженедельно. Это задачи, которые довольно сложно автоматизировать.


Также в ситуациях, когда ты работаешь над важными проектами, ты можешь столкнуться с бюрократией в том или ином её проявлении, которая несомненно тормозит твою работу.



11. Что бы ты посоветовал начинающему программисту? Какой язык начать изучать?


Думаю, что мыслить в рамках того, какой язык стоит выучить в первую очередь, это не совсем правильно. Вам нужно понять, что привлекает именно вас, и для чего конкретно вы хотите заниматься программированием. Вам нравятся сайты? Начните с создания простенькой странички! Всегда хотели бы заниматься разработкой игр? Попробуйте реализовать простейшую игру. Сейчас в интернете настолько много информации, нужно лишь захотеть ею воспользоваться. Я не смогу раскрыть тему лучше, чем это сделано в этом посте, поэтому переходите по ссылке и узнавайте с чего начать!

12. Какие у тебя планы на будущее? Хотел бы перебраться в головной офис в Кремниевую Долину?

Четких планов на будущее пока нет. На самом деле я уже обсуждал вариант переезда в Кремниевую Долину с моим менеджером, но пока меня останавливает тот факт, что Кремниевая Долина - это деревушка. С другой стороны, она является одним из центров инноваций, который открывает тебе огромные возможности для карьерного роста. Всю ситуацию также усложняет пандемия коронавируса.


P.S. После просмотра фильма Дудя о Кремниевой Долине я очень вдохновился, так что посмотрим может быть и поеду :)



Есть вопросы?

По вопросам и предложениям :

nikulyaleework@gmail.com

  • Instagram

© Veronica Lee 2020