О проекте
Мобильное OEM/white-label приложение: бонусная программа, маркетплейс, мессенджер, видео- и аудиозвонки на WebRTC, push-уведомления, оплата картой. Одна кодовая база на платформу собирается под несколько брендов. Кодовая база ~100k+ строк, 12+ интегрированных backend-сервисов.
А также другие приложения аналогичной тематики.
Чем предстоит заниматься
Развивать фичи: мессенджер, звонки, бонусы, маркетплейс, сертификаты, платежи и другие сервисы.
Чинить и оптимизировать критичные участки: стабильность WebSocket, жизненный цикл звонков, производительность длинных списков
Интегрировать новые backend-сервисы.
Поддерживать white-label сборки под разные бренды.
Работать с реалтайм-стеком: WebRTC, WebSocket, push (на iOS — APNs + VoIP-push)
Участвовать в код-ревью и развитии архитектуры.
Личные качества и подход к работе
Увлечённость продуктом. Не просто «закрываем тикеты», а живой интерес к тому, что делаем: сами пользуемся приложением, понимаем боль пользователей, предлагаем улучшения, замечаем баги и шероховатости до того, как их найдёт QA или пользователь.
Доступность и вовлечённость. Гибкий график, но при этом готовность оперативно включаться в критичных ситуациях (продакшен-инцидент, релиз, согласование на стыке iOS/Android/бэкенда), быть на связи в рабочих чатах и не «пропадать» надолго без предупреждения. Ценим людей, которые хотят быть в контексте.
Ответственность за результат. Доводим задачи до прода и наблюдаем, как они работают, а не «передали в QA — забыли».
Что мы ожидаем (общее для обеих платформ)
Коммерческий опыт мобильной разработки от 3 лет.
От 1,5 лет в продакшене на современном декларативном UI: Jetpack Compose или SwiftUI.
Уверенный язык платформы: Kotlin или Swift 5.7+ — корутины / async-await, structured concurrency, actors / @MainActor / main-dispatcher, отмена задач, thread-safety
HTTP-клиент платформы (Retrofit + OkHttp / URLSession): кастомные заголовки авторизации, несколько параллельных клиентов, refresh-токены, обработка ошибок и rate limiting
WebSocket в проде: переподключение с бэкоффом, heartbeat, обработка разрывов
Интеграция WebRTC для видео/аудио-звонков.
Push: регистрация и обработка в foreground / background / killed-state.
Безопасное хранение токенов (Keychain / DataStore), JWT/OAuth refresh-флоу, без логирования PII и токенов.
Сборки под несколько брендов из одного кода (Gradle Kotlin DSL / xcconfig), управление зависимостями (Gradle / CocoaPods)
Работа с адресной книгой
Работа с фото и файлами
Платежи и 3DS
Применение WebView
Combine / StateFlow на сложных реактивных пайплайнах
Android
Kotlin (official code style), Java 11
Jetpack Compose, Material 3 (без XML-вёрстки)
MVI, многомодульный Gradle (core/*, feature/*/api, feature/*/impl)
Koin (или другой DI с готовностью переучиться)
Retrofit 2.9, OkHttp 4.11, Kotlinx Serialization, кастомные Interceptor'ы
Compose Navigation, в том числе вложенные графы
Firebase Cloud Messaging + RuStore Messaging
Публикация в RuStore / Google Play/
iOS
Swift 5.7+, SwiftUI в продакшене + UIKit-интероп (UIViewRepresentable, UIViewControllerRepresentable)
Swift Concurrency: async/await, Task, actors, @MainActor, nonisolated; понимание разницы Task { } vs DispatchQueue.main.async vs MainActor.run vs assumeIsolated; базовый GCD
URLSessionWebSocketTask или Starscream, кастомный heartbeat
APNs + PushKit (VoIP push), CallKit (CXProvider, CXCallController), обработка didActivate / didDeactivate audioSession
AVAudioSession (.playAndRecord, порты), AVCaptureDevice, разрешения на микрофон / камеру
Keychain (KeychainAccess или Security framework), биометрия, ATS, certificate pinning (плюс)
CocoaPods, xcconfig для OEM-сборок
Instruments (Time Profiler, Allocations, Leaks, Network), символикация и .dSYM, os_log / OSLog
Публикация в App Store/
Будет плюсом
Интеграция аналитики и crash-reporting: Firebase, AppMetrica, Sentry
Ключевые навыки (теги для hh.ru)
Kotlin, Swift, iOS, Android, Jetpack Compose, SwiftUI, Coroutines, Swift Concurrency, MVI, WebRTC, WebSocket, Retrofit, OkHttp, URLSession, CallKit, PushKit, APNs, FCM, Keychain, CocoaPods, Gradle, Koin, Git, Material 3, UIKit, AVFoundation
Похожие вакансии
Чтобы быть успешным в данной роли необходимо: Отличное знание языка программирования С. Опыт низкоуровневой системной разработки под разные архитектуры процессоров...
Высшее образование. Опыт работы в должности программиста от пяти лет. Опыт работы в должности ведущего программиста от двух лет.
Опыт веб-разработки (frontend и backend). Уверенное владение одним или несколькими языками (Python / PHP / Go / Node.js и др.).
Spring-boot как основа проекта (mvc, security, undertow, …). Apache Lucene - поисковый движок. Имеет опыт коммерческой разработки на Java не меньше...
Выстраивать синхронные интерфейсы или асинхронные потоки данных. У тебя есть опыт разработки на C#/.NET от 3 лет.
