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

Дата размещения вакансии: 29.10.2024
Работодатель: Яндекс
Уровень зарплаты:
з/п не указана
Город:
Сочи
посёлок Мирный, Триумфальный проезд 1
Требуемый опыт работы:
От 3 до 6 лет

Наш продукт

Карты и Навигатор ежедневно помогают миллионам пользователей решать самые разные задачи в городе: находить места и строить к ним маршруты на любом транспорте, записываться в салоны красоты, вызывать такси.

Мы на этом не останавливаемся: проводим эксперименты, исследуем потребности пользователей, расширяем существующие сценарии и создаём новые. Например, не так давно запустили сверхподробную навигацию. А ещё стали предлагать пользователям комбинированные маршруты с проездом на такси и метро, добавили оплату парковок и электрозаправок. Всё это делает Карты и Навигатор мощными супераппами.

Как устроена разработка?

Мы сделали ставку на мультиплатформенную разработку: наши приложения на 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-платформы
  • Умеете прорабатывать задачи от и до, имеете продуктовое мышление, стремитесь улучшать жизнь пользователей
  • Знаете современные принципы построения архитектуры мобильных приложений
  • Готовы совершенствовать процессы и инфраструктуру разработки