Разработчик для iOS в Карты

З/П договорная
Размещено 16 февраля


Открыт набор на вакансию разработчик в г. Москва.Наш продукт Карты и Навигатор ежедневно помогают миллионам пользователей по всему миру решать свои задачи. Найти ресторан или дорогу до места встречи с друзьями, запланировать поход в салон красоты, построить самый эффективный маршрут на любом типе транспорта или просто узнать, что интересного происходит в городе, наши базовые сценарии, жизненно необходимые современному городскому жителю. Мы не стоим на месте: проводим эксперименты, исследуем потребности пользователей, расширяем возможности существующих сценариев и создаём новые. За последнее время добавили поддержку CarPlay, новый виджет, аренду самокатов, заказ такси, доставку еды. Карты и Навигатор превратились в мощный геосуперапп. Как устроена разработка? Важная часть нашего подхода ставка на мультиплатформенную разработку. Наши приложения на iOS и Android практически идентичны, а функциональность настолько разнообразна и обширна, что поддерживать одновременно две реализации трудно и неэффективно. Несколько лет назад мы выбрали Kotlin Multiplatform в качестве основной технологии для кросс-платформенной разработки и одними из первых начали использовать её в продакшене. Kotlin Multiplatform не накладывает ограничений на использование платформенных SDK, мы пишем на нём только бизнес-логику, а UI и взаимодействие с операционной системой остаются платформенными. Вне общего кода мы используем актуальный стек и современные подходы iOS-разработки. Благодаря общему коду команды iOS и Android тесно контактируют, обмениваются знаниями, а для новых больших проектов мы сразу собираем кросс-платформенные v-team, что упрощает контроль над процессами и совместные запуски. Об особенностях процессов нашей мультиплатформенной разработки Михаил Куренков рассказывал на Mobius 2020. Наш проект разбит на модули. Внутри модулей используем устоявшуюся чистую архитектуру с однонаправленным потоком данных. Feature-модули максимально независимы, что позволяет разрабатывать новые сценарии в отдельных легковесных тестовых проектах. Подробнее про нашу модульность рассказывал Николай Лихогруд, а про тестовые проекты Михаил Куренков. Большой проект невозможно развивать без вложений в инфраструктуру. 80% времени мы тратим на продуктовую разработку, 20% выделяем на развитие технологий, автоматизацию рутины и отдачу техдолга. CI/CD, автоматическая синхронизация ресурсов от редакторов и дизайнеров, автоматизация жизненного цикла задач и релизного процесса, UI-тесты, A/B эксперименты, мониторинги здоровья приложения и процессов у нас есть всё необходимое проекту такого уровня. Какой у нас стек: Swift, RxSwift, Combine, SDWebImage, Alamofire, Fastlane; UIKit, SwiftUI; AppMetrica, SpeechKit, YandexMapsMobile; Kotlin Native, Ktor, Kinzhal, Kotlin Coroutines/Flow, KotlinX Serialization; CI на TeamСity; UI-тесты на XCTest & Allure; Модульность на Cocoapods. Какие сейчас есть вызовы? Прямо сейчас в разгаре большая стройка по UI-тестам. Причём и тут мы используем Kotlin Native, чтобы реализовать общую логику тестов между платформами. Также мы в процессе перехода на релиз двух приложений Карт и Навигатора из одной кодовой базы со всеми сопутствующими проблемами. Впереди рывок по процессам: хотим выпускать обновления в два раза чаще, перейти на еженедельный цикл. Помимо этого: активно внедряем SwiftUI; заменяем RxSwift на Combine; оптимизируем сборку; планируем переход на SPM; планируем проект по оптимизации производительности приложения (время старта, энергопотребление) и пару крупных рефакторингов. Главный продуктовый вызов выход на международные рынки: новые страны, новые локализации и региональные особенности. Также планируем перезапустить парковочный сценарий, улучшить навигацию по сложным развязкам, собирать больше UGC. Что с атмосферой? Много внимания уделяем обмену знаниями: раз в месяц проводим общие техновстречи всего отдела разработки, на которых рассказываем про интересные исследования и достижения в разных технологических област