Эта статья написана Андреа Феррандо, разработчиком программного обеспечения (Meta), и Шоном Киганом, консультантом разработчиков (Meta).
Сегодня мы поговорим с Андреа Феррандо, frontend-разработчиком в Meta. Его команда работает над приложением Ads Manager, в котором пользователи могут создавать, редактировать и отслеживать рекламные кампании.
Меня зовут Андреа Феррандо, я разработчик программного обеспечения. Я обожаю создавать цифровые продукты высокого качества, которыми удобно пользоваться. Сейчас я работаю над приложением Ads Manager (AMA), с помощью которого рекламодатели могут создавать, отслеживать и контролировать свои кампании на всех платформах Meta. В приложении можно найти всё, что нужно рекламодателям, чтобы охватить целевую аудиторию. Оно необходимо всем, кто хочет, чтобы реклама была эффективной. Я работаю над AMA всего около года, но мне уже удалось серьезно продвинуться в его разработке.
На использование React Native меня вдохновили его возможности создать удобный и эффективный интерфейс как для пользователей iOS, так и Android. В React Native есть многократно используемые компоненты, а ещё в нем легко управлять статусом, поэтому мы можем быстро и эффективно создавать новые высококачественные приложения. Из дополнительных преимуществ отмечу возможность написать код один раз, а затем запускать его на нескольких платформах. Так мы можем охватить большую базу пользователей и создать приложение, которое будет исправно работать на любых устройствах.
Я использую React каждый день, и он уже стал неотъемлемой частью моей работы в этой роли. На мне как на техническом руководителе по продуктам для клиентов в Meta лежит большая ответственность за управление всем циклом разработки, постановку целей и работу с командами из разных подразделений. В то же время я могу активно работать над AMA, разрабатывать особенно важные функции и вносить практический вклад.
С тех пор как я стал частью Meta, я работаю только над приложением Ads Manager. Нашей команде принадлежит весь процесс разработки этого продукта, в который входит и backend-функциональность, но AMA — это единственное приложение, над которым я работаю с применением React.
Мы гордимся тем, что приложение Ads Manager стало одним из первых в мире, разработанных на React Native. Известно, что React Native был создан на хакатоне Facebook ещё в 2013 году. Наше приложение стало одним из первых, использующих эту технологию. В приложении для рекламодателей предусмотрена полезная статистика и рекомендации, которые помогут запускать более эффективные кампании. React Native — идеальный инструмент для разработки такого решения. Он позволяет быстро внедрять возможности как в iOS, так и в Android, обеспечивая при этом непревзойденную производительность. React Native сыграл важную роль в успехе AMA.
В последнее время я вложил много сил в инфраструктуру push-уведомлений, стремясь обеспечить ее надежность.
Уведомления играют важную роль в мобильных приложениях. В случае AMA они особенно важны, потому что должны своевременно предоставлять статистику, на которую опираются пользователи, если хотят, чтобы их рекламные кампании были успешными.
При этом важно соблюдать баланс и не перегружать пользователей слишком большим количеством уведомлений. Кроме того, методы обработки уведомлений и управления ими в iOS и Android различаются, поэтому необходимо учитывать правила конфиденциальности для этих двух мобильных операционных систем. Несмотря на трудности, работа над этим проектом очень увлекательна. Она требует как навыков управления продуктом, так и знания технологий, чтобы обеспечить наилучший пользовательский опыт и при этом разработать подходящие процессы обработки уведомлений для iOS и Android.
React Native позволяет нам упростить процесс разработки, изолировав большую часть логики, в которой состоит разница между делегатами уведомлений iOS и Android. Благодаря этому мы можем сосредоточиться на самом процессе разработки.
Быть разработчиком приложения на React Native в Meta — поистине исключительный опыт. Я ценю возможность работать с большой базой пользователей и влиять на опыт такого количества людей. Конечно, когда работаешь в таком масштабе, приходится иметь дело с проблемами, с которыми никогда не сталкивался раньше, но они делают работу только интереснее.
Один из основных аспектов работы — обеспечение конфиденциальности и целостности данных пользователей. Мы, разработчики, должны знать, какие данные мы можем хранить, а какие нет, поэтому мы тесно сотрудничаем с командами защиты конфиденциальности, чтобы обезопасить конфиденциальность пользователей. Это чрезвычайно важный аспект, который можно упустить из виду в небольших проектах или стартапах. Однако в Meta он является основным приоритетом, поэтому наш подход должен быть достаточно гибким и адаптивным.
Ещё один сложный аспект работы над frontend-приложением, которое используется во всем мире, — локализация. Проектирование и разработка приложения на английском языке относительно просты, а вот перевод всего приложения более чем на 20 языков может выявить дефекты и ошибки, которые мы раньше не замечали. Например, какое-то слово на другом языке может быть в три-четыре раза длиннее, и это требует тщательного проектирования и точной разработки, чтобы все ограничения обрабатывались правильно. Мой предыдущий опыт работы в банках и авиакомпаниях хорошо подготовил меня к этому аспекту работы. Полученные знания я использую в своей нынешней роли в Meta.
Быть разработчиком на React в Meta — это особенная возможность, которая позволяет близко работать с командой React, налаживать прямое сотрудничество и общение. Это ставит тебя в уникальное положение в компании.
Чтобы быть успешным инженером продуктов для клиентов, требуются самые разные навыки. Нужно писать понятный и надежный код, ставя в приоритет производительность, а также не забывать об интерфейсе и доступности. Именно в этом случае раскрываются преимущества работы с таким динамическим языком, как React, поскольку разработчики могут сосредоточиться на процессе разработки и не тратить время на побочные задачи. У меня есть опыт нативной разработки для мобильных устройств, особенно крупномасштабных приложений, поэтому я отлично знаю, как время сборки может мешать повседневной работе и тратить драгоценное время. Именно поэтому я ценю использование виртуального DOM в React, который обеспечивает своевременное обновление и рендеринг компонентов пользовательского интерфейса в режиме реального времени. Несмотря на широкое распространение среди разработчиков и компаний во всем Интернете, React позволяет обеспечивать удобство для пользователей и доступность, отчасти благодаря тому, что он основан на JavaScript/TypeScript (JS/TS) — языках, активно используемых разработчиками. Мне нравится использовать TypeScript с React. TypeScript статически типизирован, что облегчает отслеживание ошибок на ранних стадиях разработки.
Лично мне также очень нравятся функциональные компоненты в React, поскольку они очень полезны в работе. Их можно оптимизировать для производительности с помощью функции мемоизации и значительно повысить производительность приложения, предотвращая ненужные обновления рендеринга. В частности, для масштабных приложений особенно важна простота многократного использования компонентов, что облегчает обслуживание, тестирование и управление кодовой базой.
За свою карьеру я не часто сталкивался с заблуждениями в отношении React или ПО с открытым исходным кодом. Большинство крупнейших мировых компаний используют и разрабатывают ПО с открытым исходным кодом в своей повседневной деятельности, и большое сообщество разработчиков работает над такими проектами.
Я слышал различные опасения по поводу React Native, в частности, что он работает медленно и подходит только для небольших проектов с ограниченным функционалом. Некоторые считают, что использование в React Native JavaScript для взаимодействия с нативными компонентами приводит к снижению производительности по сравнению с нативными приложениями. В некоторых случаях, например для трансляций, нативные приложения могут работать лучше, но для большинства повседневных приложений, в которых демонстрируются преимущественно изображения и текст и есть активное взаимодействие с пользователем, React Native ведет себя не хуже.
У React Native надежная архитектура, и он приспособлен для работы с крупномасштабными приложениями благодаря своевременным обновлениям и рендерингу пользовательского интерфейса в режиме реального времени. Он также позволяет легко управлять кодом, что делает его идеальным для больших проектов. Кроме того, React Native дает разработчикам возможность обращаться к нативным модулям и использовать их функциональность, тем самым позволяя разрабатывать комплексные приложения.
Когда я начинал работу с React, мне посчастливилось быть в компании, которая предлагала бесплатный доступ к крупному онлайн-порталу с видеоуроками от экспертов. Для меня лучшим способом обучения был просмотр этих видеоуроков, где шаг за шагом показывали всё, что мне нужно было знать. Изучив основы, я обнаружил, что для глубокого понимания React неоценимую роль сыграл практический опыт работы над реальными проектами. Если у вас нет возможности заниматься этим на работе, я очень советую найти что-то интересное вам и разработать для этого приложение. Я начал с создания личного сайта с портфолио. Кроме того, когда я искал конкретную информацию, мне очень помогла официальная документация по React Native. Она понятно написана и содержит много полезного.
У меня есть аккаунт на Github, но большинство моих наработок либо закрыты из-за правил конфиденциальности, связанных с работой, либо это личные проекты без открытого исходного кода. Мне нравятся социальные сети, я активно пользуюсь Instagram, но не обсуждаю там разработку. Это, скорее, мой способ отвлечься от работы.
Мы благодарим Андреа за интервью и уделенное нам время. Нам было интересно узнать, как React используется для улучшения крупных приложений, как мы учимся на своем опыте и вносим свой вклад в сообщество React. Надеемся, что и вам было интересно и теперь у вас есть некоторое представление о том, как и где используется React в Meta.
React — один из самых популярных проектов с открытым исходным кодом, который на протяжении нескольких последних лет неизменно входит в число самых используемых веб-фреймворков. По мнению специалистов Meta, React — это отличная библиотека, которая помогает разработчикам легко создавать пользовательские интерфейсы и масштабировать их. React — это библиотека с открытым исходным кодом, в которой найдется возможность для каждого. Это подтвердят миллионы разработчиков как простых сайтов, так и корпоративных приложений, по всему миру.
Этот блог является частью нашей серии "Встречи с разработчиками", где мы приглашаем инженеров и разработчиков, регулярно использующих React, поделиться своим опытом и рассказать нам об удивительных продуктах, которые они создают с помощью React в Meta. Ожидайте новых выпусков блога, в которых мы встретимся с другими разработчиками, чтобы обсудить, что они думают на эту тему.
Чтобы узнать больше о Meta Open Source, перейдите на наш сайт, посвященный открытому исходному коду, подпишитесь на наш YouTube-канал или следите за нами в Twitter, на Facebook и в LinkedIn.