🌍 Мы нанимаем: Старший фронтенд-разработчик Flutter
📍 Местоположение: удалённо
💡О нас
Yesim — международный провайдер eSIM с опытом работы более 7 лет, предоставляющий безопасное и бесшовное подключение в 200 странах мира. Мы специализируемся на быстром, безопасном и глобальном подключении через передовые мобильные решения eSIM для более чем 3 миллионов активных пользователей. Наш инновационный приложение позволяет управлять несколькими eSIM в рамках одной учетной записи — позволяя пользователям легко переключаться между несколькими тарифами и делиться подключением.
✨ О роли
Вы будете разрабатывать мобильное приложение Yesim на Flutter для iOS и Android, а также участвовать в создании нового B2B-продукта на базе существующей платформы.
Текущая кодовая база включает несколько конфигураций приложения, интеграции платежей и аналитики, функциональность eSIM, виртуальные номера и VoIP. Наш ключевой стратегический приоритет — разработка мультибрендовой/white-label архитектуры для партнеров с отдельными конфигурациями, брендингом, наборами функций и конвейерами релизов при максимальном использовании общего кода.
Мы ищем инженера, который подходит к реализации продуманно, может самостоятельно принимать технические решения, обсуждать их с командой и брать на себя ответственность за результат.
📝 Обязанности
Разработка
- Разрабатывать новые функции и поддерживать существующие пользовательские сценарии в B2C-приложении, одновременно участвуя в разработке B2B-продукта.
- Тесно сотрудничать с дизайнерами и бэкенд-разработчиками для обсуждения требований и деталей реализации, предлагать решения и заранее сообщать о технических ограничениях.
- Развивать архитектуру приложения и потоки данных, работая с текущим стеком Provider/ChangeNotifier.
- Разрабатывать мультибрендовые сборки, включая конфигурации приложений, точки входа, варианты сборок, bundle/application ID, ассеты, конфигурации Firebase и доступность функций.
- При необходимости разрабатывать и поддерживать нативные компоненты и интеграции через платформенные каналы с использованием Swift и Kotlin, включая eSIM/eUICC, VoIP и системные уведомления, VPN, интеграции платежей и другие сторонние SDK.
- Поддерживать платежные потоки и интеграции с платежными SDK, используемыми в приложении.
- Работать с аналитическими SDK, выбранными командой: реализовывать и проверять события, параметры, идентификацию пользователей и конфигурацию аналитики.
Доставка и сотрудничество
- Участвовать в планировании спринтов, ежедневных стендапах и ретроспективах.
- Стабильно выполнять обязательства по спринтам, своевременно сообщать о блокерах и проактивно коммуницировать.
- Сотрудничать с техническим лидом по техническим решениям, архитектурным обсуждениям и оценке задач.
- Поддерживать коллег через код-ревью, обмен знаниями и совместное отладку.
- Следовать Definition of Ready и Definition of Done, обеспечивая правильную подготовку задач к спринту и их полное тестирование при сдаче.
Релизы и управление App Store
- Готовить и публиковать релизы в App Store и Google Play, включая сборки, подпись кода, provisioning profiles и entitlements.
- Управлять процессом проверки приложений, включая обработку отклонений и соблюдение требований платформ.
- Поддерживать и развивать мультибрендовые сборки и варианты сборок для B2B-партнеров.
Современные инструменты и постоянное улучшение
- Быть открытым к изучению и использованию современных инструментов разработки, включая внутренние решения команды.
- Предлагать улучшения в кодовой базе, инструментах и процессах при выявлении более эффективных подходов.
- Вносить вклад в улучшение CI/CD конвейеров и оптимизацию процессов сборки и деплоя.
- Мы ценим инженеров, которые задают вопрос «Как мы можем сделать это лучше?» и затем предпринимают действия для улучшения.
CI/CD и инженерные процессы
- Работать с CI/CD конвейерами на базе GitHub Actions.
- Следовать правилам защиты веток: pull request требуют одобрения, прямые пуши в продакшен запрещены.
- Поддерживать техническую документацию в актуальном состоянии, включая архитектурные решения, runbook и заметки о техническом долге.
📩Что мы ищем
- Опыт профессиональной мобильной разработки 4+ года, включая не менее 3 лет коммерческой разработки на Flutter/Dart.
- Глубокие знания Flutter и Dart, включая сложную разработку UI, жизненный цикл приложения, асинхронное программирование и управление состоянием.
- Практический опыт работы с Provider/ChangeNotifier или аналогичными подходами.
- Умение разделять UI, состояние, бизнес-логику и доступ к данным без введения излишних абстракций.
- Хорошее знание навигации во Flutter, включая Navigator 2.0, вложенные навигаторы и ручное управление стеком страниц.
- Внимание к деталям реализации UI, включая точную передачу дизайна в код и корректную обработку разных размеров экранов, безопасных зон, состояний загрузки, ошибок и пустых состояний.
- Опыт интеграции REST API и работы с Dio или аналогичными библиотеками.
- Практический опыт написания unit и widget тестов, понимание необходимости интеграционных тестов.
- Опыт работы с Firebase и аналитическими SDK.
- Умение сотрудничать со специалистами по аналитике: определять события и параметры, проверять точность данных и участвовать в реализации A/B тестов.
- Практический опыт работы с платформенными каналами, включая самостоятельное написание и отладку нативного кода на Swift и Kotlin, интеграцию нативных SDK.
- Хорошее знание нативных инструментов сборки, включая Xcode/CocoaPods для iOS и Gradle для Android, с умением диагностировать проблемы сборки и подписи, а не просто запускать сборки.
- Опыт полного цикла публикации приложений в App Store и Google Play, включая подпись кода, provisioning profiles и управление процессом проверки приложений.
- Сильные навыки работы с Git и GitHub, включая стратегии ветвления, workflow pull request и разрешение конфликтов.
- Твердое понимание культуры код-ревью, включая умение давать конструктивную обратную связь и профессионально реагировать на отзывы других.
- Профессиональное владение английским языком для работы с документацией и обсуждения pull request.
- Владение русским языком на уровне A1 или выше, так как русский используется для коммуникации в команде.
⭐️ Желательные навыки
- Знакомство с BLoC/Cubit и практический опыт использования в отдельных модулях или проектах.
- Опыт разработки мультибрендовых или white-label приложений и работы с вариантами сборок.
- Опыт интеграции платежных SDK, таких как Stripe, Apple Pay, Google Pay или аналогичных решений.
- Опыт автоматизации мобильных сборок и релизов с использованием GitHub Actions, Fastlane, Codemagic или аналогичных CI/CD инструментов.
- Опыт работы с PostHog, AppsFlyer, Firebase Analytics или аналогичными сервисами и SDK.
- Опыт работы с Rive и Lottie.
- Опыт работы в телекоммуникациях, eSIM/eUICC, VoIP, SIP/WebRTC или VPN продуктах.
- Опыт постепенного рефакторинга и развития большой существующей кодовой базы.
- Опыт внедрения культуры тестирования в команде, где ранее её не было.
- Опыт работы в Scrum/Agile средах, включая Jira, планирование спринтов и ретроспективы.
- Знание ISO 27001 или опыт работы в средах с повышенными требованиями к безопасности.
- Опыт работы с React и TypeScript, так как команда также поддерживает три веб-приложения.
🎁 Что мы предлагаем
- Ответственность за сложные функции и компоненты с первого дня.
- Прямое сотрудничество с техническим лидом и CDO, где ваш технический вклад будет иметь реальное значение.
- Возможность помочь построить современную инженерную культуру, внедряя современные инструменты и внутренние решения, которые позволяют команде работать быстрее и эффективнее.