Интервью: Разработчик Instagram Вадим Пинчук | robot_dreams
Для отслеживания статуса заказа — авторизируйтесь
Введите код, который был выслан на почту Введите код с SMS, который был выслан на номер
 
Код действителен в течение 5 минут Код с sms действителен в течение 5 минут
Вы уверены, что хотите выйти?
Сеанс завершен
На главную
Первая работа в Samsung, потом — Meta и Instagram: украинский разработчик — о том, кому не понравится бигтех

Первая работа в Samsung, потом — Meta и Instagram: украинский разработчик — о том, кому не понравится бигтех

И чем Flutter перспективнее React Native (и есть ли смысл его изучать новичку)

В студенческие годы Вадим Пинчук случайно увлекся языком программирования Java. Потом он устроился в Samsung, где так же случайно стал мобильным разработчиком. После этого Вадим сменил не одну компанию, пока не задался целью попасть в бигтех. Последние два года он работает над приложением Instagram в Meta.

В интервью robot_dreams Вадим Пинчук рассказал о самом эффективном пути в бигтех, подходах к работе в Instagram, а также о технологиях Flutter и Dart, которые понемногу захватывают мир мобильной разработки.

Все взгляды и мнения, высказанные в этом тексте, отражают личный опыт Вадима и не представляют позицию компании Meta или ее дочерних компаний.

Досье:

Вадим Пинчук — Mobile Software Developer в FAANG, с 2021 года разрабатывает приложение Instagram. Живет и работает в Лондоне.

Лектор курса-профессии Flutter Mobile Developer у robot_dreams. Имеет 8 лет опыта Android-разработки и 3 года кроссплатформенной мобильной разработки Flutter. Ведет технические блоги на HackerNoon и Medium, менторит начинающих программистов на ADPlist.org.

Вадим Пинчук — лектор курса Flutter Mobile Developer

«Реферальные программы — самый эффективный путь в FAANG»

— Сразу после выпуска из университета вы попали в Samsung. Сознательно ли еще со старта хотели работать именно в крупных международных компаниях?

Нет, на самом деле и мой выбор стать программистом не был очень сознательным. В вузе я учился по специальности «Защита информации в компьютерных системах и сетях» — это скорее о криптографии и алгоритмах. А программирование мне казалось скучной работой: писать код, который никто не видит, но он как-то работает (смеется).

Но так получилось, что у меня было немного свободного времени после выпуска из университета. У меня уже были базовые знания по Java, и благодаря вдохновению, полученному от лучшего преподавателя по программированию Каплун В. А., и следуя примеру некоторых друзей, я начал изучать этот язык глубже. И Java меня заинтересовала: достаточно простая и в то же время красивая. Лишь позже я узнал, что она может работать как на бэкенде, так и на фронтенде.

В киевский R&D-офис Samsung я пришел в 2012 году, это была моя первая работа. Компания тогда активно расширялась, и я благодарен за то, что они нанимали вчерашних студентов. На интервью проверяли в основном теорию и дали несколько легких алгоритмических и математических задач.

Поскольку у меня не было никакого опыта, компания могла назначить меня на любую Junior-роль — в зависимости от своих потребностей. Уже в команде мне сказали, что я буду Android-программистом. Я удивился, ведь почти ничего не знал о мобильной разработке. Но постепенно научился и сейчас рад, что все сложилось именно так.

— Что было дальше? Как развивалась ваша карьера?

Samsung был довольно интересным стартом. Впрочем, потом я увидел, что мое развитие затормозилось. Тогда начал экспериментировать с технологиями. К примеру, попытался самостоятельно написать мобильное приложение — без каких-либо дополнительных библиотек. Мне удалось, и это дало толчок и дальше повышать свой уровень.

В 2015 году я ушел из компании и в течение следующих лет сменил еще несколько мест работы как Android-разработчик. С середины 2018 года перешел на кроссплатформенную разработку — меня увлек этот путь после того, как на конференции Google I/O презентовали фреймворк Flutter.

В конце концов, в 2021 году устроился в Meta (тогда еще Facebook) — для этого снова вернулся к нативной разработке под Android.

— Как попали в Meta? Почему выбрали именно эту компанию?

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

К интервью я интенсивно готовился около 4 месяцев, а в целом весь процесс до получения оффера занял где-то 9 месяцев. Обычно интервью в FAANG состоят из нескольких этапов:

  • Coding — проверяют подход к нечетко поставленным задачам, умение уточнять нужные детали, озвучивать мысли и писать читаемый и работающий код;
  • System Design — определяют ваш масштаб мышления, умеете ли вы думать вне рамок и проектировать большие системы, имея ограниченные входные данные;
  • Behavioral — смотрят, как вы работаете в команде, можете ли общаться со стейкхолдерами, как разрешаете конфликты и работаете над фейлами.

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

Подготовившись, я попросил друзей из Amazon, Google и Meta отправить мое CV рекрутерам через внутренние реферальные программы. Это самый эффективный путь в FAANG, ведь он увеличивает шанс отбора кандидата на собеседование как специалиста, за которого готовы поручиться текущие работники компании.

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

В Google я прошел все этапы интервью, но остановился на этапе выбора команды — в то время было мало команд с позициями Android. Та команда, в которую я хотел, к сожалению, наняла кого-то из текущих работников Google, который перешел из другого проекта.

В то же время я получил оффер от Meta, которая тогда нанимала не в конкретную команду, а в компанию в целом. Уже потом кандидат мог выбрать проект, который больше по душе. Так что я принял предложение.

«У вас появляется возможность влиять на жизни миллионов пользователей. Но это не всегда преимущество»

— Как вы стали частью команды, создающей Instagram? Что именно разрабатываете?

Моя работа в Meta началась с буткемпа, где я мог познакомиться с разными проектами и выбрать свой. У меня сразу было два фаворита — WhatsApp и Instagram. Сначала я больше склонялся к WhatsApp, там была классная команда и крутой менеджер.

Но жена посоветовала идти в Instagram, потому что это про современные тренды. Она в нем разбиралась лучше меня, поэтому у нее было много идей, которые можно воплотить в жизнь. И я думал, что действительно смогу это сделать. К тому же и в Instagram тоже отличная команда. Взвесив все за и против, я решил присоединиться к этому проекту.

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

О ежедневных задачах рассказать не могу из-за NDA, но обычно они зависят от этапа проекта:

  • на начальных фазах всегда много митингов, согласований, построения роадмапов;
  • потом — разработка, отчет о прогрессе, доставка новой фичи пользователям, а также анализ того, насколько успешным оказался проект

Должен отметить, что скоро Meta переносит команду Instagram из Лондона в США — для более эффективного сотрудничества между разными командами. Я рад был работать со всеми коллегами в течение двух лет, они невероятны. Но пока не знаю, что буду делать дальше: перейду на другой проект среди доступных в Лондоне или буду искать другую компанию.

— В чем особенности работы в бигтех? Какие преимущества и недостатки?

В Instagram довольно интересные и необычные подходы к работе, отличные от украинского IT. Главная особенность состоит в том, что инженеры тесно сотрудничают с коллегами как по вертикали, так и по горизонтали.

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

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

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

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

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

— Расскажите подробнее о технологиях, с которыми работаете. Какой стек используете?

В основном я работаю со стеком Android. Также, как и везде в бигтех, в Meta много внутренних языков программирования и фреймворков. Некоторые фреймворки имеют открытый код и могут использоваться публично, на мой взгляд, в чем-то даже превосходя такие технологии, как Jetpack Compose. Но адаптация декларативного пользовательского интерфейса, такого как Compose, происходит постепенно и все инструменты тесно взаимодействуют друг с другом.

Конкретный стек зависит от проекта и команды. Сейчас существует общая тенденция обновления кода с Java на Kotlin, и на сегодня код почти полностью преобразован в Kotlin. Ведь Java — уже довольно устаревшая речь, тянущая за собой много ненужных вещей, которые не используются в современном мобильном мире.

Kotlin — более быстрый и интуитивный. Здесь уже есть настроенные процессы преобразования данных из одного формата в другой. Например, если мы говорим о работе с коллекциями, это можно сделать фактически несколькими строками кода вместо стандартных оберток. Так что код выглядит намного чище и понятнее, а также имеет более простые и безопасные механизмы работы с многопоточностью.

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

«Есть тренд, что все больше нативных разработчиков переходят на кроссплатформу»

— В robot_dreams вы преподаете Flutter и Dart. Чем интересны эти технологии?

  • Flutter — это кроссплатформенный фреймворк, созданный в Google. Он позволяет разрабатывать приложения под Android, iOS, web, Windows, Linux и macOS. Для первых двух приложений будет точно работать отлично, для других — довольно неплохо. Для десктопа нужно будет дополнительно настраивать. Создатели Flutter вдохновлялись React Native, но во многих вещах он более совершенный и существенно более быстрый.
  • Dart — язык программирования, который используется во Flutter. Его тоже создали в Google еще в 2011 году — как внутренний язык. Сначала он использовался на чистом бэкенде, а впоследствии распространился и на фронтенд. Dart не всем нравится, ведь выглядит довольно странно — как гибрид JavaScript, Kotlin и Java. В то же время он не похож ни на один из старых понятных языков.

Одна из особенностей Dart состоит в том, что это однопоточный язык. С одной стороны, это минус — невозможно выполнять обработку данных в параллельных потоках. С другой — плюс, ведь не нужно управлять доступом к одному объекту в памяти из разных потоков, а потому меньше требований к знаниям разработчика. К тому же можно запустить отдельный Isolate (нечто вроде Worker или Service из Android-мира) для обработки данных в отдельном процессе, и тем самым разгрузить главный процесс, в котором работает приложение.

И Flutter, и Dart стремительно развиваются. Эти технологии широко используются в Google, Alibaba Group, BMW, eBay и других меньших, но не менее известных компаниях.

— Начинающим мобильным разработчикам есть смысл сразу учить Flutter? Или лучше начать с нативных фреймворков?

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

Задача начинающих — хорошо понять, как это все работает. Поэтому для начала стоит попробовать написать несколько нативных приложений.

Но можно начать свою карьеру как кроссплатформенный разработчик, в этом нет ничего плохого. Тогда я рекомендую обратить внимание именно на Flutter или React Native. На мой взгляд, Flutter более перспективный, ведь React Native уже не так интенсивно поддерживается со стороны сообщества разработчиков.

— А за счет чего Flutter вытесняет React Native?

React Native был первым фреймворком с декларативным UI. К примеру, старый нативный Android требует использовать язык XML для описания UI, а также Java или Kotlin для описания бизнес-логики между UI-компонентами.

Наверное, разработчики Flutter вдохновлялись React Native. Но у него совсем другие принципы работы. А главное преимущество — в том, что он новее. И сообщество не перестает его развивать.

Flutter появился в Google и активно развивается как опенсорс-проект — благодаря тому, что Google поддерживает Flutter-сообщество.

Впрочем, согласно последним данным, сотрудники Google составляют всего 1% от всех разработчиков, которые вносят активный вклад в улучшение фреймворка. Остальные 99% — это программисты из разных компаний по всему миру, которые являются частью большого сообщества. Благодаря такой вовлеченности большинство проблем решается быстро. Однако есть и обратная сторона медали, присущая любому опенсорсу, — не все люди пишут хороший код или решают проблемы правильно.

— Каким вы видите будущее мобильной разработки? Оно — за кроссплатформенными фреймворками?

Google с самого начала позиционировал Flutter как инструмент для будущей единой операционной системы Fuchsia, которая должна прийти на замену Android и iOS. Но в последнее время я не слышал никаких новостей по этому проекту.

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

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

В то же время есть тренд, что на кроссплатформу переходит все больше нативных разработчиков со всех платформ — iOS, Android, веб. Кстати, недавно JetBrains выпустили Compose Multiplatform и Kotlin Multiplatform. Поэтому разработчики Android, которые знают Jetpack Compose и Kotlin, теперь могут писать кроссплатформенные приложения с помощью этих фреймворков.

Ещё статьи
Экспертки о том, как оценивают кандидатов на нетехнических интервью
Часть 2. Работа с записями: вставка, чтение, изменение и удаление