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

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

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

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

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

Важная часть нашего подхода — ставка на мультиплатформенную разработку. Наши приложения на iOS и Android практически идентичны, а функционал настолько разнообразен и обширен, что поддерживать одновременно две реализации трудно и неэффективно. Несколько лет назад мы выбрали KotlinMultiplatform в качестве основной технологии для кросс-платформенной разработки и одними из первых начали использовать её в продакшен. KotlinMultiplatform не накладывает ограничений на использование платформенных SDK, мы пишем на нём только бизнес-логику, а UI и взаимодействие с операционной системой остаются платформенными, что позволяет использовать актуальный стек на Android и iOS. За эти годы мы прошли огромный путь, и сейчас общий код составляет значимую часть нашей кодовой базы. Благодаря этому команды Android и iOS тесно контактируют, обмениваются знаниями, а под новые большие проекты мы сразу собираем кросс-платформенные v-team, что упрощает контроль над процессами и совместные запуски.

Наш проект разбит на модули, что улучшает архитектуру и позволяет разрабатывать новые сценарии в отдельных легковесных тестовых проектах. Внутри модулей используем архитектуру Redux с Unidirectional Data Flow.

Большой проект невозможно развивать без вложений в инфраструктуру. 80% времени мы тратим на продуктовую разработку, 20% времени выделяем на развитие технологий, автоматизацию рутины и отдачу техдолга. CI/CD, автоматическая синхронизация ресурсов от редакторов и дизайнеров, автоматизации workflow задач, автоматизации релизного процесса, UI-тесты, A/B-эксперименты, мониторинги здоровья приложения и процессов — у нас есть всё необходимое для проекта такого уровня.

Какой у нас стек Android?

  • Kotlin, Gradle, Retrofit, OkHttp, Kotlin Coroutines/Flow, Glide, LeakCanary, Kotlin Multiplatform Mobile, RxJava 2, Ktor, Kinzhal, ktlint, AppMetrica, CameraX, Compose, SpeechKit, MapKit, KotlinX. Serialization, Wire
  • Espresso & Allure для UI-тестов
  • Развитая модульность
  • Dagger 2 для DI
  • Redux (UDF)

Какие сейчас есть вызовы?

Прямо сейчас в разгаре большая стройка по UI-тестам. Причём мы и тут используем Kotlin Native для шаринга логики тестов между платформами. Также мы в процессе перехода на релиз двух приложений — Карт и Навигатора — из одной кодовой базы со всеми сопутствующими проблемами. Впереди рывок по процессам: хотим релизиться в два раза чаще, перейти на еженедельный цикл.

Помимо этого:

  • Активно внедряем Compose.
  • Занимаемся оптимизацией сборки и синка проекта.
  • Запланирован проект по оптимизации производительности приложения (время старта, энергопотребление) и пара крупных рефакторингов.

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

Что по атмосфере?

Много внимания уделяем обмену знаниями: раз в месяц проводим общие «техновстречи» на всю разработку, на которых рассказываем про интересные исследования и достижения в разных технологических областях, еженедельно собираемся платформенными командами и обсуждаем насущные проблемы. По результатам спринта проводим продуктовые демо. Уважаем work-life balance, тимбилдинговые активности, неформальное общение, вечеринки, поддерживаем дружескую атмосферу. Приветствуем участие в школах мобильной разработки в качестве преподавателей, помогаем с выступлениями на конференциях.

Возможно, вы уже видели наши доклады и статьи:

Михаил Куренков рассказывает на Mobius 2020 про процессные особенности мультиплатформенной разработки: www.youtube.com/watch?v=m5H1KGsdqtw

Дмитрий Яковлев рассказывает на AppsLive 2020, как концептуально выглядит типичная фича на Kotlin Multiplatform: www.youtube.com/watch?v=o-2RLhSlosI

Денис Загаевский рассказывает на Mobius 2021 про наш DI: www.youtube.com/watch?v=COzmONYAY3U

Большой пост на Хабре от Евгения Васильева про многопоточность в Kotlin Native: habr.com/ru/company/yandex/blog/575846/

Мы ждем, что вы:

  • разрабатывали мобильные приложения для Android и глубоко знаете SDK платформы;
  • умеете прорабатывать задачи от и до, имеете продуктовое мышление, стремитесь улучшать жизнь пользователей;
  • знаете современные принципы построения архитектуры мобильных приложений;
  • готовы совершенствовать процессы и инфраструктуру разработки.

Условия:

  • высокий доход и премии каждые полгода за эффективную работу;
  • возможность работать над ещё не решёнными задачами, участвовать в обсуждении и предлагать идеи, влиять на процесс и результат;
  • сильная команда, с которой можно расти;
  • расширенная программа ДМС: стоматология, обследования, вызов врача на дом и многое другое;
  • оплата 80% стоимости ДМС для супругов и детей;
  • компенсация оплаты питания;
  • корпоративные скидки в бассейнах, фитнес-центрах и магазинах;
  • курсы, тренинги, участие в конференциях;
  • гибкий график работы;
  • бесплатная парковка.