посёлок Мирный, Триумфальный проезд 1
Наш продукт
Карты и Навигатор ежедневно помогают миллионам пользователей решать самые разные задачи в городе: находить места и строить к ним маршруты на любом транспорте, записываться в салоны красоты, вызывать такси.
Мы на этом не останавливаемся: проводим эксперименты, исследуем потребности пользователей, расширяем существующие сценарии и создаём новые. Например, не так давно запустили сверхподробную навигацию. А ещё стали предлагать пользователям комбинированные маршруты с проездом на такси и метро, добавили оплату парковок и электрозаправок. Всё это делает Карты и Навигатор мощными супераппами.
Как устроена разработка?
Мы сделали ставку на мультиплатформенную разработку: наши приложения на iOS и Android практически идентичны. Это позволяет везде поддерживать широкую функциональность и оптимизировать ресурсы.
Несколько лет назад мы выбрали Kotlin Multiplatform в качестве основной технологии для кросс-платформенной разработки и одними из первых начали применять её в продакшене. Kotlin Multiplatform не накладывает ограничений на использование платформенных SDK, мы пишем на нём только бизнес-логику, а UI и взаимодействие с операционной системой остаются платформенными.
Благодаря общему коду команды iOS и Android тесно контактируют, обмениваются знаниями. Для новых больших проектов мы собираем кросс-платформенные v-team, что упрощает контроль над процессами и совместные запуски. Об особенностях нашей мультиплатформенной разработки Михаил Куренков рассказывал в своём выступлении на Mobius 2020.
Проект Карт и Навигатора разбит на модули. Внутри модулей используем устоявшуюся «чистую» архитектуру с однонаправленным потоком данных. Feature-модули максимально независимы, что позволяет разрабатывать новые сценарии в отдельных легковесных тестовых проектах. Подробнее про модульность рассказывал Николай Лихогруд, а про тестовые проекты — Михаил Куренков.
Большой проект невозможно развивать без вложений в инфраструктуру. 80% времени мы тратим на продуктовую разработку, 20% выделяем на развитие технологий, автоматизацию рутины и отдачу техдолга. CI/CD, автоматическая синхронизация ресурсов от редакторов и дизайнеров, автоматизация жизненного цикла задач и релизного процесса, UI-тесты, A/B-эксперименты, мониторинги здоровья приложения и процессов — у нас есть всё необходимое.
Какой у нас стек:
- iOS 15+, Swift 5.9, Kotlin Multiplatform
- UIKit, SwiftUI
- RxSwift, Kotlin Coroutines/Flow
- MVI/MVVM, Redux
- Fastlane, SwiftLint
- UI-тесты на XCTest & Allure
- Модульность на Cocoapods
Вызовы
Главный продуктовый вызов — одновременное развитие сценариев выбора мест и навигации. Мы работаем над тем, чтобы в Картах можно было легко находить идеи, куда сходить, и строить оптимальные маршруты до выбранных мест на любом удобном пользователю транспорте.
Мы продолжаем прокачивать навигацию по сложным развязкам для автомобилистов и добавляем новые возможности для пешеходов и велосипедистов.
Хотим перейти на еженедельный цикл и выпускать обновления в два раза чаще. Прямо сейчас в разгаре большая перестройка процессов, оптимизация производительности приложения (времени старта, энергопотребления) и сборки, увеличение покрытия UI-тестами. Чтобы реализовать логику между платформами, используем Kotlin Multiplatform. Внедряем SwiftUI, экспериментируем с Tuist.
А ещё мы выводим продукты на международные рынки с учётом региональных особенностей и потребностей.
Что с атмосферой?
Любим обмениваться знаниями: регулярно проводим общие техновстречи всего отдела разработки, на которых рассказываем об интересных исследованиях и достижениях в разных технологических областях. Еженедельно собираемся платформенными командами и обсуждаем актуальные проблемы. По результатам спринта проводим продуктовые демо.
Уважаем work-life balance, тимбилдинг, неформальное общение, вечеринки, поддерживаем дружескую атмосферу. Преподаём в школах мобильной разработки и помогаем с выступлениями на конференциях. Возможно, вы видели наши доклады:
Мы ждем, что вы
- Разрабатывали мобильные приложения для iOS и глубоко знаете SDK-платформы
- Умеете прорабатывать задачи от и до, имеете продуктовое мышление, стремитесь улучшать жизнь пользователей
- Знаете современные принципы построения архитектуры мобильных приложений
- Готовы совершенствовать процессы и инфраструктуру разработки