Как я переучился на программиста и через два года стал разработчиком в «Тесле»

Каково перейти в ИТ после семи лет на госслужбе и в бизнесе
118
Как я переучился на программиста и через два года стал разработчиком в «Тесле»
Аватар автора

Сергей Галич

работает в «Тесле»

Аватар автора

Иван Жилин

звонил в Калифорнию

Страница автора

Сергей несколько лет провел на госслужбе и в консалтинге, но решил стать программистом.

До 27 лет он не планировал идти в ИТ. После школы учился на госслужащего и собирался сделать карьеру чиновника. Три года Сергей проработал в Москве, в Федеральной антимонопольной службе, занимаясь рассмотрением жалоб на госзакупки. Затем на год перешел в администрацию подмосковного Наро-Фоминска, где занимался подготовкой документов для муниципального заказа.

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

Сергей рассказал, с какими трудностями столкнулся, осваивая профессию, сколько потратил на курсы программирования, как проходили собеседования в ведущие компании мира и сколько стоит жизнь в Кремниевой долине.

У входа на завод «Теслы» во Фримонте
У входа на завод «Теслы» во Фримонте

Чем я занимался до ИТ

Поступая в университет, не всегда понимаешь, какой будет твоя работа. Представления могут быть одними, а реальность — совершенно другой.

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

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

Работа в ФАС — это серьезная база: за два года я понял, как на практике применяются законы и нормативные акты. Профессионально вырос. Но все-таки это была рутина, ежедневная монотонная работа с документами. Никакого разнообразия, это угнетало.

В 2014 году я перешел из контролирующего в исполнительный орган власти — в администрацию Наро-Фоминского района Подмосковья. И снова госзаказ, только теперь уже не рассмотрение жалоб, а подготовка документов для закупок. Мы делали важное: ремонтировали школы, строили дороги и благоустраивали улицы. Но удовлетворения это все равно не приносило, и я решил уйти с госслужбы.

В 2015 году я открыл свое ООО и занялся консалтингом: читал лекции о закупках, писал статьи в профильные журналы о том, как понимать тот или иной пункт закона, готовил обзоры решений ФАС для системы «Консультант-плюс», помогал участникам аукционов и заказчикам с подготовкой документации. Так продолжалось два года.

За работой в консалтинге. Сентябрь 2015 года
За работой в консалтинге. Сентябрь 2015 года

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

Но там меня ждало разочарование. Сложно работать, когда вокруг тебя непрофессионализм и тотальная коррупция. Ко многим «коллегам» приходили силовики. Спустя полтора года мое терпение закончилось, и я не просто уволился, а решил окончательно уйти из госслужбы.

За все пять лет на госслужбе моя зарплата составляла от 7000 до 70 000 ₽. На консалтинговых услугах я зарабатывал в среднем 100 000 ₽ в месяц, но бывало всякое: мог не получать вообще ничего, а в один месяц — 400 000 ₽.

Смена профессии

После увольнения из администрации Пермского края в моей жизни начался тяжелый период. Не в финансовом плане — я уже успел кое-что накопить, и это позволило мне уволиться в никуда. Денег было достаточно, чтобы прожить 10 лет в квартире у родственников, тратя по 50 тысяч рублей ежемесячно, — это наши обычные расходы. Да и консалтинг продолжал приносить около 30 тысяч рублей в месяц. Но произошла переоценка ценностей: у меня появилось желание работать, не имея начальника и строгого распорядка дня.

После месяца депрессии и ничегонеделания я решил заняться инвестированием на фондовом рынке. Начал читать книги и торговать, используя свои накопления. Особенно интересными, на мой взгляд, были книги «Биржевой трейдинг: системный подход» Александра Кургузкина, «Игра на понижение» Льюиса Майкла и «Воспоминания биржевого спекулянта» — биография Джесси Ливермора.

Я даже задумался получить сертификат CFA — международный сертификат финансового аналитика — и уже начал изучать материалы. Но, несмотря на все это, результаты были удручающими: за полгода активной торговли я оказался в минусе примерно на 20%.

В какой-то момент я узнал, что можно торговать на фондовом рынке, используя торгового робота. То есть разработать программу, которая бы проанализировала рыночные данные, выработала четкий алгоритм действий и сама делала прибыльные операции. Звучало заманчиво. Так у меня появилось желание научиться программировать.

До этого с программированием я сталкивался лишь один раз — когда делал сайт для своей консалтинговой компании. Я собрал его сам, просто следуя инструкциям в интернете. Он получился ужасным в плане дизайна, но функционировал. Конечно, тогда у меня и мысли не было, что это может стать моим основным родом деятельности.

От моего первого сайта сейчас остался только бумажный макет
От моего первого сайта сейчас остался только бумажный макет

На вопрос, какой язык программирования выбрать, я очень быстро нашел ответ в интернете — С++. Он один из наиболее востребованных и в то же время сложных — если освоить его, остальные точно будут по зубам. Начав с книги Бьерна Страуструпа «Язык программирования С++», я потратил сутки, пытаясь вывести на экран фразу Hello, World. Но ничего не вышло! Это меня так демотивировало, что я отбросил идею научиться кодить.

Прошел месяц, и я решил посмотреть, может, есть языки попроще. Поглядел на «Ютубе» видео о том, что можно запрограммировать новичку, и так узнал о существовании Python. Не прошло и минуты, как я начал кодить — и на моем экране появилось Hello, World.

То, что я не смог сделать за сутки на С++, на Python мне далось за мгновение!

Причем буквально: чтобы вывести на экран нужную фразу, оказалось достаточно открыть приложение Terminal, напечатать python, нажать Enter, написать print('Hello World!') и еще раз нажать Enter.

Кот ругается, когда находит баги в моем коде
Кот ругается, когда находит баги в моем коде

Я прочитал «Грокаем алгоритмы» — базовую книгу для начинающих программистов. А позже узнал, что у каждого языка свои сферы применения. Например, C++ нужен для написания драйверов, операционных систем и другого низкоуровневого ПО для оборудования и техники, что меня не очень привлекало. Тогда как Python позволяет делать сайты, анализировать данные, разрабатывать торговых роботов. И я понял: Python стоит попробовать, он подходит для моих целей.

Все оборудование, чтобы начать кодить, у меня было еще со времен, когда я вел свой бизнес. Макбук-про за 70 000 ₽ и Аймак за 115 990 ₽. На Макбуке я работаю и до сих пор. Программное обеспечение бесплатное.

Я поставил перед собой две практические задачи: написать торгового бота и научиться парсить информацию. Парсер — это программа, собирающая данные с веб-ресурсов и представляющая их в требуемом формате. Для этого я взял книгу Марка Лутца «Изучаем Python» и начал по ней изучать, как писать код. Честно сказать, книгу я не дочитал, потому что параллельно стал кодить — решать примеры на сайте с задачами проекта Эйлера — и практика оказалась намного интереснее теории.

Примеры задач. Источник: проект Эйлера
Примеры задач. Источник: проект Эйлера

Сначала задачи были элементарными, затем становились все сложнее и сложнее, над некоторыми я мучился целыми днями. По совету супруги пошел на курсы Learn Python. Для меня было важно, чтобы занятия были очными: когда ты за них заплатил, а они стоили 40 тысяч рублей за два месяца, потратил время на дорогу, просидел на лекции, вживую пообщался с преподавателем — ценишь этот опыт больше, чем если просто посмотрел видео в интернете.

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

В нашей группе было пять человек. Ее куратором стал разработчик из X5 Retail Group. На первом занятии, которое длилось шесть часов, он рассказывал об основах Python, и 80% из рассказанного я уже знал.

На курсах мне сразу дали важное понимание: программирование заключается не только в овладении Python, а в освоении целой среды. Есть технологии, которые ты должен уметь использовать, чтобы чувствовать себя уверенно в программировании. Например, командная строка, Git, SQL. С одним только Python в профессию не войдешь. Я очень удивился, когда преподаватель начал говорить, что сейчас мы зарегистрируемся на сайте GitHub, будем изучать Git, потом «я вам чуть-чуть про SQL расскажу». Я думал: «Постойте, у нас же курсы по Python! Какой Git?» А потом решил: раз нужно, значит, нужно.

Основу обучения составляли так называемые треки. Трек — это набор видеолекций по трем темам: созданию чат-бота, анализу данных и веб-разработке.

В треке «Анализ данных» говорили о библиотеках — сборниках заранее заготовленных программ для часто встречающихся операций. Познакомили с Jupiter Notebook — средой разработки, где можно сразу увидеть результат выполнения и всего кода, и его отдельных фрагментов.

В треке «Чат-боты» разбирали, как создать бот для «Телеграма», как научить его запоминать пользовательские данные, как добавить в него эмодзи и так далее. В треке веб-разработки рассказывали об основах HTML, учили работать с базами данных и парсить информацию.

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

Если при изучении треков мне было что-то непонятно, я задавал вопросы в телеграм-чате. Отвечали там как кураторы групп, так и основатели курсов.

На самом деле веб-разработка, анализ данных и чат-боты — это слабо связанные между собой направления. Большинство учащихся выбирали какой-то один трек и изучали только его. Я же сначала решил изучать все. Сидел и повторял за преподавателем все, что он делал на видео. Но уже через месяц понял, что распыляю внимание и нужно сконцентрироваться на той задаче, которая передо мной стояла изначально, — написать торгового бота. Собственно, на курсах сразу сказали: «Если у вас есть свой проект, занимайтесь в первую очередь им».

Во время обучения я занимался программированием около восьми часов в день на протяжении двух месяцев. Без выходных. В итоге даже еще до окончания курсов я сумел написать код для торгового робота. Одна из главных целей была достигнута. Это очень воодушевило — настолько, что я решил заниматься программированием профессионально, набрался смелости и разместил на «Хедхантере» свое резюме Python-разработчика. Произошедшее дальше было чистым везением.

Термины

Python — высокоуровневый язык программирования. Это универсальный язык, который можно использовать для самых разных задач: создания веб-сайтов, анализа данных, машинного обучения и разработки игр.

Парсер — программа, которая собирает данные с веб-ресурсов и систематизирует их заданным образом. Процесс сбора информации называется парсингом.

SQL (от англ. structured query language — язык структурированных запросов) — язык запросов, с помощью которого можно управлять данными в реляционной базе.

Git — система, которая позволяет разработчикам отслеживать изменения в истории и версиях файла в проекте.

Библиотека — сборник подпрограмм или объектов, инструмент для решения задач разработчика.

Docker — это открытая платформа для разработки, доставки и запуска приложений.

Списковое включение (в переводе с английского list comprehension) — это способ компактного описания операций обработки списков.

Первая работа в ИТ

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

Оказалось, что они откликнулись на мое старое резюме — специалиста по госзакупкам. Говорят: «У нас есть вакансия — нужно ездить по регионам, читать лекции о госзаказе». Я посмеялся: «О нет, извините, может быть, еще месяц назад я бы и согласился, но теперь я программист». Рекрутер пообещал направить мое резюме в другой департамент. И действительно, через некоторое время меня позвали на собеседование на позицию Python-разработчика.

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

Даниил попросил перейти на «ты», потому что так принято среди программистов. На госслужбе, где господствует субординация и строгая иерархия, такое невозможно и представить. Он рассказал о компании, выслушал, что я уже умею делать и чем меня так заинтересовало программирование, и затем задал десяток разнообразных вопросов.

Сейчас я могу сказать, что вопросы были элементарные, например: «Какие виды сортировки ты знаешь?», «Что такое list comprehension?», «Как ты получишь из SQL-базы данных все записи вот такой-то таблицы?» Я едва смог ответить на половину. Вопросы, на которые я не знал ответа, записывал в блокнот, принесенный на собеседование, и говорил что-то вроде: «Извини, за пару месяцев я научился очень многому, но узнать про это я, видимо, еще не успел. Сегодня же эту тему изучу и завтра уже смогу подробно ответить на твой вопрос».

Оффер мне прислали через неделю после собеседования.

По сути, это невероятное стечение обстоятельств: я получил работу программистом в России, потому что кто-то открыл мое старое резюме специалиста по госзакупкам. Кажется, такого не может быть.

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

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

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

В OTC мне пришлось осваивать многие технологии: JavaScript, SQL, Docker. Я научился использовать различные библиотеки типа Scrapy, Pandas, Selenium, Puppeteer. Существенно расширил свои компетенции.

Работа сама меня учила. Например, потребовалось спарсить сайт, который имел серьезную защиту и не поддавался парсингу ни одним из известных мне методов с использованием Python. Тогда я узнал, что можно использовать браузер Puppeteer, но придется писать код на JavaScript. И мне пришлось начать изучать этот язык, чтобы написать конкретный парсер. Впрочем, была и другая мотивация: JavaScript — самый популярный язык программирования, его код присутствует почти в каждом современном сайте. А я, сталкиваясь с ним, не мог понять этот код, было обидно.

Я записался на бесплатные трехмесячные курсы фронтенд-разработчика от «Яндекса» на «Курсере» — фронтенд-разработчики часто применяют JavaScript, — но не доучился. В целом курсы были интересными, но мне не понравилось, как подносили информацию: подход был не мотивирующим, как в школе. Примерно через месяц набрал достаточное количество навыков и решил перейти к практике. Парсер у меня получился!

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

Прежде чем чинить баг, необходимо найти его источник. Начинаю смотреть, что у нас в базе данных, а для этого нужно писать код на SQL. Туда-сюда, как детектив ищу виновного. Так и подтягиваются скиллы: с одной стороны, когда разрабатываешь что-то новое и знакомишься с технологией, а с другой — когда чинишь что-то существующее, применяя уже полученные ранее навыки.

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

Термины

Библиотека — сборник подпрограмм или объектов, инструмент для решения задач разработчика.

JavaScript — динамический язык программирования, который тоже может встраиваться в HTML. Он дает возможность сделать сайт более интерактивным, интересным и динамичным. Например, когда пользователь нажимает «лайк» на фотографии, а у автора снимка выскакивает сердечко — это все JavaScript.

Docker — это открытая платформа для разработки, доставки и запуска приложений.

Списковое включение (в переводе с английского list comprehension) — это способ компактного описания операций обработки списков.

Дорога в «Теслу»

Мы с женой решили выбрать для жизни Бейкерсфилд — небольшой, тихий и относительно недорогой город в Калифорнии. Хотя мы претендуем на политическое убежище, уезжали из России все-таки не в панике: например, успели оставить моей маме нашу машину, Фольксваген Поло, с доверенностью на продажу. Она продала авто за 400 тысяч рублей — деньги перечислила нам, и это нас финансово поддержало.

Кроме того, мне удалось договориться с OTC об удаленной работе: еще год я получал российскую зарплату — совершенно небольшую для Штатов. Сначала она составляла 1100 $, потом из-за снижения курса рубля стала порядка 900 $, но все-таки помогала держаться на плаву.

Вид на мост «Золотые ворота»
Вид на мост «Золотые ворота»

За первые два месяца в США мы потратили 26 000 $ (1 705 600 ₽ по курсу 2020 года):

  • 12 000 $ (787 200 ₽) из них ушли на авто — мы купили Форд Фьюжн. В Америке не очень хорошо с общественным транспортом, и автомобиль здесь — не роскошь, а реальная необходимость.
  • Аренда однокомнатной квартиры в многоквартирном доме в Бейкерсфилде, городке в полутора часах езды от Лос-Анджелеса, обошлась в 7595 $ (498 232 ₽) за шесть месяцев — то есть 1085 $ (71 176 ₽), в месяц. Поскольку к тому моменту y нас не было ни кредитной истории, ни номера социального страхования, SSN, нам пришлось оплатить съем жилья на полгода вперед. Это было условие компании, сдающей апартаменты.
  • На компьютер и другие товары, связанные с производственной необходимостью, потратили 3000 $ (196 800 ₽).
  • На оплату всевозможных счетов — за бензин, отопление и других — уходило 190 $ (12 464 ₽) в месяц.
  • На еду, включая кафе, — 286 $ (18 761 ₽) в месяц.
  • Остальные деньги, около 2500 $ (164 000 ₽), ушли на обустройство апартаментов, поскольку их сдавали пустыми, и на ситуативные расходы.

Должен сказать, что мои траты не совсем репрезентативны. Все-таки большинство программистов, приезжающих в Калифорнию, не селятся в маленьких городах за 180 километров от ближайшего мегаполиса. И, соответственно, расходы на съем жилья у них куда выше — примерно 3000—5000 $ в месяц.

Так в марте выглядит улица, на которой я живу в Бейкерсфилде
Так в марте выглядит улица, на которой я живу в Бейкерсфилде

Как бы то ни было, мы экономили, я работал на российскую компанию, пытался подрабатывать парсингом как фрилансер, собирая данные для магазина искусственных бриллиантов и для предпринимателя, занимавшегося маркетингом. За несколько дней работы получил 150 $.

Несмотря на это, наши сбережения постепенно таяли. Через полгода после въезда в США мы подготовили и подали документы на соискание политического убежища, а еще через полгода я получил разрешение на работу. К тому моменту денег у нас оставалось на пять-шесть месяцев.

Нужно было искать новую работу.

Мне очень хотелось стать программистом в Америке, но я был готов и к тому, чтобы пойти в такси. Насколько знаю, там можно зарабатывать достаточно, чтобы закрывать базовые потребности: около 3000 $ в месяц — вполне реально. Жена еще шутила: «В „Убер“ тебя в любом случае возьмут — не разработчиком, так водителем». И я действительно подавал резюме программиста в эту компанию — и даже получил приглашение на собеседование. Но в итоге не прошел дальше третьего кодинг-интервью.

Этапы собеседования на программиста в США

По опыту Сергея Галича, проходившего интервью в десятке американских компаниях, включая «Амазон», «Убер» и «Теслу», а также по опыту других программистов:

  1. Беседа с рекрутером. Созвон продолжительностью около получаса, в ходе которого рекрутер рассказывает о компании и задает стандартные поведенческие — behavioral — вопросы: например, об опыте работы, реализованных проектах, о том, что соискателю нравится и не нравится делать, о его слабостях, о том, что соискатель считает своим достижением.
  2. Решение задач. Компания дает соискателю задачи, связанные с программированием, и просит решить их онлайн. Соискатель пишет код под контролем сотрудника. Обычно проводят от двух до четырех таких испытаний.
  3. System design — этап собеседования, в ходе которого нужно спроектировать в общих чертах архитектуру того или иного приложения либо сайта, например аналог «Твиттера».
  4. Коллективное интервью — общение с членами команды, в которой предстоит работать. Члены команды в ходе интервью могут предложить решить ту или иную задачу, могут интересоваться компетенциями. Их главная задача — убедиться, что вы сможете комфортно и эффективно взаимодействовать.

Есть большая разница между наймом сотрудников в США и России. В России принято красочно писать в резюме о своих достижениях, а с начальником можно сойтись на основании взаимного увлечения рыбалкой. В Штатах же вся процедура приема на работу скорее напоминает ЕГЭ. Есть определенный набор вопросов, определенный набор задач и «хорошие» либо «плохие» ответы на них.

Собеседования в США очень предсказуемые. Подготовиться к ним можно, изучив материалы на teamblind.com — это сайт анонимных отзывов сотрудников о компаниях и glassdoor.com — здесь можно посмотреть вакансии и вилки зарплат. Там публикуется много информации о компаниях, включая даже вопросы, которые могут быть заданы на собеседовании.

Резюме, которое я отправлял в американские компании
Резюме, которое я отправлял в американские компании

Тестовые задачи. Главное, что составляет 99% успеха при прохождении интервью в США для начинающих программистов, — это умение уверенно решать задачи на LeetCode.

Это большой репозиторий с задачами, которые дают на технических собеседованиях в американских компаниях. Там же опубликованы их решения. Я решал эти задачи два месяца в ежедневном режиме, в среднем по паре часов в день, а потом смотрел, как это делали другие. Всего решил 270 задач: 170 простого уровня, 90 — среднего и 10 — сложного. Это очень хорошо систематизирует информацию и знания в голове, а кроме того, наверное, все задания, которые дают на собеседованиях, есть на LeetCode.

Собеседования. Эти советы я подсмотрел в интернете — на Glassdoor и Teamblind. И они действительно мне помогли.

На собеседовании с рекрутером, отвечая на поведенческие вопросы, не нужно говорить о себе как о личности. Рассказы о семье, увлечении музыкой и тому подобное не просто пойдут вам в минус — на этом собеседование закончится. Вы должны вести с рекрутером исключительно профессиональный разговор. Рекрутер говорит: «Расскажите о себе».

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

Если спрашивают о слабостях — это часто задаваемый вопрос, — ни в коем случае не надо уходить от ответа, говоря, что вы слишком много времени уделяете работе и не успеваете что-то делать для себя, что вы трудоголик. Один из приемлемых вариантов ответа таков: «Я слишком много внимания уделяю деталям, иногда трачу на них много времени». Это ответ о манере работы и в то же время — о слабости. Я сам так отвечал на собеседовании в «Теслу».

Еще, например, сразу в нескольких компаниях меня спрашивали, чем я горжусь. Тут тоже нужно рассказывать исключительно о рабочих ситуациях. Я рассказывал о случае, когда пытался сделать свой парсер, но он никак не работал. Тогда я решил сделать его нетривиальным путем: применил технологию Puppeteer, которую используют обычно не для парсинга, а для тестирования. И тогда же мне впервые в жизни пришлось писать код на JavaScript. И парсер действительно заработал!

Рекрутерам важно, чтобы рассказ соответствовал концепции STAR: situation — ситуация, task — задача, action — действие, result — результат. Моя ситуация — не работает парсер, моя задача — починить парсер, мое действие — Puppeteer плюс JavaScript, мой результат — парсер заработал.

Когда я искал работу в США, откликнулся более чем на тысячу вакансий. В результате получил шанс пройти интервью в десятке различных компаний. Из известных, кроме «Убера», был еще «Амазон». Там я тоже остановился на третьем кодинг-интервью.

Моим приоритетом была «Тесла». Я с детства увлекаюсь автомобилями, и для меня было два типа работодателей: «Тесла» и все остальные. И за рекрутеров своей нынешней компании я взялся очень основательно.

Собеседование, оффер, работа

Я нашел в «Линкедине» все аккаунты рекрутеров из «Теслы» и начал писать им в личные сообщения. Просил рассмотреть мое резюме. Кто-то отвечал, кто-то — нет, но на собеседование меня не приглашали.

Тогда я написал за полчаса парсер и собрал с его помощью имейлы всех рекрутеров из «Теслы» c «Линкедина» и сайта Crunchbase — это база данных о компаниях. И начал рассылку. Написал первой трети человек из списка — трем десяткам. И о чудо! Получил ответ от одного из рекрутеров: она сказала, что в компании есть вакансия с подходящим мне стеком технологий. И пригласила на интервью.

В Америке очень важно быть готовым к отказам и молчанию рекрутеров. И важно понимать: если тебя не приглашает на собеседование один, это не значит, что не пригласит другой. Если бы мне никто не ответил после имейл-рассылки, я бы начал им звонить, а если бы не получил окончательного ответа и по телефону — пошел бы в «Теслу» ногами, положил свое резюме на стол и сказал: «Рассмотрите».

Парковка у офиса «Теслы»
Парковка у офиса «Теслы»

К сожалению, сейчас я не имею права рассказывать в подробностях о том, как проходило собеседование. Только некоторые, самые общие детали.

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

На втором этапе собеседования дали домашнее задание — написать программу для анализа реальных данных компании. Я понимал, что нельзя упускать шанс попасть в «Теслу», поэтому постарался сделать работу идеально. Специально ради такого случая даже впервые написал тесты: решил задачу другим, менее эффективным способом и проверил, идентичные ли результаты у обоих методов. А недавно коллега рассказал, что, увидев тогда мой код, они с начальником шутили: «Этого парня можем больше не собеседовать». Решение нанять меня они приняли, именно посмотрев мое домашнее задание.

После очередных трех раундов интервью я наконец дошел до финального собеседования с коллективом. Могу сказать, что интервью с членами команды прошли тепло, потому что я сам еще до встречи пробросил «мостики».

Есть такой лайфхак: рекрутер — так принято — заранее предупреждает, кто и в какое время будет проводить следующий этап собеседования. Можно найти в «Линкедине» этого человека, его подчиненных и расспросить их, что этому человеку нравится, какие профессиональные навыки ему важны.

На финальном этапе я нашел своего нынешнего шефа. Не добавлял его в друзья и вообще никак с ним не контактировал, но нашел членов команды и начал им писать: «У меня скоро собеседование. Очень хочу с вами работать. Как впечатлить начальника?» Никто, конечно, не дал конкретных ответов на эти вопросы, но людей это расположило ко мне. И когда мы созванивались для интервью, со мной общались уже не совсем как с человеком с улицы. Говорили: «О! Ты мне писал! Ну как ты?»

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

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

Уже год как я Python-разработчик в экономическом подразделении «Теслы». До 1 июня, когда Илон Маск запретил удаленку для сотрудников, работал из дома — за год приезжал в офис лишь несколько раз.

Занимаюсь веб-разработкой. В основном бэкендом, в меньшей степени — фронтендом. К сожалению, не имею права раскрывать подробности о проектах, которыми занимаюсь. Замечу, что меня сразу взяли на позицию мидл-разработчика, потому что позиции джуниоров в «Тесле» в основном для студентов: они проходят практику и в это время занимают стартовые должности. Чтобы занять позицию сениор-разработчика, нужно иметь опыт не менее четырех лет.

До недавнего времени я работал на удаленке. Фото: Кремниевая долина, США. Февраль 2022 года
До недавнего времени я работал на удаленке. Фото: Кремниевая долина, США. Февраль 2022 года

Я не могу называть свою точную зарплату, но, по данным сайта levels.fyi, для моей позиции в «Тесле» она составляет 161 615 $⁣ (8 541 745 ₽) в год. При этом нужно понимать, что эта сумма — до вычета налогов, а они съедают здесь примерно 30%. Кроме того, приблизительно пятую часть дохода выдают не долларами, а акциями. И чем старше должность в компании, тем большую часть зарплаты выдают именно в акциях. Дальше ты можешь их продать, а можешь хранить — на твое усмотрение.

В «Тесле» не так много «плюшек», как в других корпорациях. Всем известно, что в «Гугле», «Нетфликсе», «Эпле», «Амазоне» есть бесплатное питание, бесплатный фитнес, «Убер» оплачивает своим разработчикам такси. В «Тесле» этого нет. Илон Маск говорит: «Никогда — я имею в виду никогда — не может быть скидки на новый автомобиль, выходящий с завода в первозданном состоянии. Я всегда плачу полную цену, когда покупаю машину, и то же самое относится к друзьям моей семьи, знаменитостям, независимо от того, насколько они известны или влиятельны».

Коротко о том, как я вошел в ИТ

  1. Для старта в профессии я читал «Грокаем алгоритмы» Адитья Бхаргавы и «Изучаем Python» Марка Лутца, смотрел канал «Хауди Хо» на «Ютубе». Но больше всего навыков дают курсы, решение задач на LeetCode и, конечно, рабочая практика.
  2. Я учился программированию на двух курсах: Learn Python и на курсах фронтенд-разработки от «Яндекса» и МФТИ на «Курсере». Learn Python дали мне большинство стартовых навыков. Многие я применяю и сейчас. На курсах хороший преподавательский состав и программа обучения. А чтобы получить сертификат об окончании, нужно защитить свой проект. Единственный минус в том, что они платные: 40 000 ₽ за два месяца.
  3. Фронтенд-разработка от «Яндекса» и МФТИ — это бесплатные онлайн-курсы продолжительностью два месяца. Я пришел на них, чтобы решить конкретную задачу — написать парсер на незнакомом мне в тот момент языке JavaScript. Отучился около месяца, получил нужные для решения своей задачи навыки и прекратил обучение. На обучение программированию потратил 40 000 ₽ — на двухмесячных курсах Learn Python. Курсы фронтенд-разработчика от «Яндекса» на «Курсере» были бесплатными.
  4. Английский во время курсов я не подтягивал, хотя он у меня был всего лишь на школьном уровне — Intermediate. Начать путь в профессии с такими знаниями реально. Можно даже вовсе не знать языка и пользоваться онлайн-переводчиками. Но чтобы развиваться и заниматься действительно серьезной работой, английский необходим на уровне, достаточном для чтения документации. Потому что вся документация — имею в виду не бумаги от заказчика, а справочники о том, как пользоваться языком программирования и его различными библиотеками, — на английском.
  5. Приглашение на первое собеседование я получил спустя два месяца после того, как начал учиться кодить, имея базовые навыки использования Git, Bash, Python и его библиотеки Pandas, а также Jupyter Notebook. Чтобы стать программистом с нуля, нужно быть готовым тратить на это много времени, а лучше все свое время. Как говорится, eat, sleep, code, repeat. А еще я понял, что не нужно бояться ошибаться. Баг — это основной двигатель развития в программировании. Большую часть программистских будней занимает не разработка нового кода, а исправление и доработка старого.
  6. Собеседования на программиста в США стандартизированные. К ним можно подготовиться, изучая материалы teamblind.com и glassdoor.com. Там публикуется много информации о компаниях, включая даже вопросы, которые могут быть заданы на собеседовании.
  7. Сейчас я периодически получаю сообщения от программистов из России: они просят помочь им устроиться в «Теслу». Хочу сразу честно сказать: устроиться в «Теслу», находясь в России, невозможно. По тому, что я вижу, для американских эйчаров очень важно, чтобы человек уже находился в Штатах. Практика подсказывает: шанс устроиться есть, если сначала переехать в США — и уже тут искать работу.
Иван ЖилинКруто изменили свой профессиональный путь? Расскажите об этом: