Хотите дальше читать devby? 📝
Support us

«Всё кричит о том, что это «Ягуар». Как белорусская команда работает над приложением для Jaguar Land Rover

Оставить комментарий
«Всё кричит о том, что это «Ягуар». Как белорусская команда работает над приложением для Jaguar Land Rover

В мае Jaguar Land Rover впервые за 9 лет полностью обновил iOS-приложение для своих авто. Пока оно доступно только для жителей Великобритании. Дизайном, а также разработкой сервиса под iOS и Android занималась минская команда из Bamboo Apps. У ребят есть опыт сотрудничества с автопроизводителями: они делали софт для Skoda Auto, занимались разработкой HMI и «подключённых функций» для швейцарской Rinspeed.

dev.by встретился с разработчиками, чтобы подробнее узнать о том, как разрабатывается приложение для JLR.

«Пилотным стал R&D проект по разработке приложения для тест-драйва без представителя дилера»

В Bamboo Apps отмечают, что с JLR они работают на протяжении почти двух лет. Пилотным стал R&D проект по разработке приложения для тест-драйва авто без участия представителя дилера.

— У менеджеров компании была идея автоматизировать тест-драйвы, — говорит СТО минской компании Сергей Мищенко. — Мы сделали тестовую версию, и концепт очень понравился. Сервис проверили в Гейдене, где находится R&D-центр JLR, а спустя полгода в США — с реальными юзерами.

В результате клиент остался доволен сотрудничеством, решили сделать на базе версии от Bamboo Apps полноценное приложение. «Но пока оно ещё в процессе разработки, — добавляет СОО Анатолий Спирков. — Проект очень трудоёмкий».

«В машинах появляются новые фичи, и их нужно как-то реализовать в приложении»

— Приложение, над которым сейчас работает команда, — вторая версия существующего сервиса, написанного ещё в 2010 году, — рассказывает Сергей. — Оно позволяет удалённо управлять системами автомобиля: открывать/закрывать двери, управлять климатической установкой, отслеживать технического состояние и местоположение автомобиля.

Разработчики «полностью переосмыслили его» и сделали редизайн. Вся работа заняла 1,5 года.

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

Прежде чем начать работу над новой версией, ребята из Bamboo Apps в течение 8-9 месяцев занимались усовершенствованием её предшественницы — изучали, вникали в детали. Говорят, было непросто. На добавление чего-то нового к старому коду требовалось очень много времени. Периодически возникали проблемы, а попытки их исправить порождали «снежный ком» из других, потому что между модулями существовали зависимости.

— Когда мы пришли на проект, значительная часть автоматизированных тестов не работала, потому что при добавлении новых фич старые тесты просто не переписывались. Ты исправляешь самый маленький баг — и надеешься, что не сломается что-то ещё, более серьёзное, — отмечает Сергей.

— Плюс морально устарел дизайн, — добавляют его коллеги. — Так что JLR постепенно созрели к тому, чтобы выпустить новое приложение, которое:

  • во-первых, соответствует современным техническим требованиям автомобилей;
  • во-вторых, отвечает запросам пользователя.

«Например, вы хотите, чтобы автомобиль заряжался с 2:00 ночи до 7:00 утра, а в 8:00 запустил климат-контроль»

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

Какие-то вещи уже были запланированы:

— Из must have фич — режимы зарядки электроавтомобиля, режимы запуска климата, а также установки времени зарядки.

Если, например, вы хотите, чтобы автомобиль заряжался с 2:00 ночи до 7:00 утра, а в 8:00 запустил климат-контроль и подогрел машину, всё это можно сделать удалённо из приложения, — рассказывает Сергей.

— Вообще первостепенная задача второй версии — выпустить всё тот же набор функционала, что был в первой, но с небольшими отличиями, которые соответствуют современным запросам: а-ля вход в приложение с помощью Touch ID и Face ID для iPhone и для Android. А в последующем — без проблем добавлять новый функционал, которого ранее не было, с учётом запросов бизнеса и пользователей. Задача для дизайнеров — выполнить редизайн, — добавляет Александр Антонюк, менеджер проекта.

Александр

Александр

Он отмечает, что команда придерживается Agile-подхода в разработке продукта — при внедрении фич ребята ориентируются на фидбэк, собранный от пользователей из «внутренней базы». В основном, это сотрудники JLR, которые являются владельцами «ягуаров».

— После, когда приложение начало обретать финальные черты, мы подключили к бета-версии обычных пользователей — но очень ограниченный круг, 100+ человек.

«Когда выбирали технологии, Kotlin был „тёмной лошадкой“. Но задел для перехода есть»

Сравнивая версии и рассказывая о том, что изменилось, Сергей отмечает, что изначально для iOS использовали Objective C, теперь Swift.

— В Android-версии, к сожалению, так и осталась Java: когда выбирали технологии, Kotlin всё ещё был «тёмной лошадкой» — в JLR сомневались, и в итоге решили не рисковать, — говорит собеседник dev.by.

Тем не менее команда «сделала задел для перехода» на Kotlin:

— Вопрос миграции поднимался несколько раз, и сейчас мы активно обсуждаем переход. Мы думаем, что проще всего будет начать с тестов, — рассказывает Сергей.

Говоря о тестах, СТО Bamboo Apps отмечает, что команда добавила в приложении UI-, BDD- и Unit-тесты. «Мы стараемся со всех сторон обезопасить себя от необдуманного рефакторинга, а также от проблем с UI».   

Разработчики рассказывают, что придерживались так называемой чистой архитектуры.

— Бизнес-логика у нас одинакова и для iOS-, и для Android-, и она не зависит ни от фреймворков, ни от платформы, ни от чего бы то ни было ещё.

«Во время ремонта автомобиля вы не будете получать уведомления, что с него сняли аккумулятор»

Рассказывая о трудностях в работе над проектом, Сергей не скрывает, что немало проблем было у команды с нотификациями по Service и Transport Mode.

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

Вроде бы всё просто, но мы столкнулись со множеством проблем на бэкенде: статус «активировано» после включения Service или Transport Mode спустя секунду-другую сменялся — и в нём уже не было указано, что функция включена.

Мы долго бились над решением, пытались сделать что-то на стороне мобильного приложения. В итоге через 6 месяцев обновили бэкенд — и только тогда  смогли добавить эту функцию.

Непросто шла работа по локализации сервиса:

— Когда у тебя больше 40 языков — для всех это боль: весь текст вроде бы перевели, но тут начинается — его либо очень много, либо мало, и это некрасиво. Где-то слова не переносятся, всё торчит в разные стороны. Дизайнерам приходится думать, как выставить правила, чтобы текст был красивым на всех языках. Потому что делать отдельную вёрстку для каждого языка — это так себе подход.

Что ещё — разработчикам пришлось написать 2 варианта сервиса под Android: одну версию для Европы и США, другую — для Китая, потому что там не работают установленные в сервисе Google-карты.

«Старый дизайн не в последнюю очередь причина того, что предыдущая версия зашла в тупик»

Дизайн приложения серьёзно изменился по сравнению с версией 2010 года.

— Картинка значительно посветлела: если раньше сервис был выполнен в серой гамме, то сейчас — с использованием белого.

В то же время акцент сделан на использование большого количества брендовых элементов — цветов, шрифтов, элементов: водитель сразу понимает, что использует функционал, который относится именно к Jaguar Land Rover. Всё «кричит» о том, что это «ягуар», — отмечает арт-директор Игнат Плотников.

Игнат

Игнат

Он рассказывает, что у нового приложения с точки зрения дизайна «более простая архитектура, чем у предыдущего».

— Старый дизайн — вот что не в последнюю очередь виной тому, что предыдущая версия зашла в тупик. Функционал добавлялся и добавлялся — архитектура сервиса становилась всё более непонятной. В приложении было огромное, странное меню, которым было тяжело пользоваться. Поэтому первое, с чего началась переработка — с создания новой архитектуры: чтобы можно было открыть-закрыть что-то при помощи нажатия одной кнопки.

Игнат отмечает, что не все решения дизайнеров были интуитивно понятны пользователям:

— Работая над изменением экрана настроек машины, мы осознали, что хоть он и выглядит симпатично, но юзеры не понимают, как им пользоваться. Некоторые водители не могли дойти до того, как поменять имя машины — и задать вместо Jaguar F Type, например, «моя ласточка».

Получилось так, что мы реализовали функционал, но затем нам пришлось его обновлять.

— Но в этом и плюс того Agile-подхода, которого придерживается JLR: участие пользователей в тестировании, ещё до релиза, позволило нам проявлять гибкость — и менять многие вещи ещё в процессе разработки, — добавляет Александр.

«Считаем правильным решение использовать чистую архитектуру с разбиением»

Предмет особой гордости команды, «то, что было сделано безупречно с первого раза — экраны: мы сделали их сразу, и больше ничего не добавляли, и не меняли», — отмечает Сергей

Собеседник dev.by вспоминает, что удачной идеей было также сделать детализацию ошибок — почему не удалось запустить какой-то функционал: «например, потому что села батарейка или ещё что-то». Раньше сервис просто выдавал ошибку, не уточняя, в чём её причина. До этого пользователь должен был доходить своим умом.

— Что ещё мы считаем правильным — решение использовать чистую архитектуру с разбиением: сейчас это помогает нам добавлять новые фичи без жёсткого связывания.

— Я вспомнил ещё одну штуку: у нас есть разработчик Сергей Никитенко, в начале работы на этом проекте он копался в коде и обнаружил библиотеку, которую когда-то написал и запаблишил на GitHub. И эту его «либу» использовали в приложении для JLR. Было приятно об этом узнать.

Разработчики говорят, что они делали приложение совместно с двумя командами JLR — в Манчестере и в Гейдене.

Однако Анатолий призывает не делить их по локальному признаку, и говорит что «по сути все находятся в одной лодке» — как одна большая команда.

— Когда во время совещаний принимаются решения, абсолютно любой участник может высказать свою точку зрения, и её примут к рассмотрению, — таковы наши Agile-процессы.

Помогаете devby = помогаете ИТ-комьюнити.

Засапортить сейчас.

Читайте также
Belka Games уволила сотрудников в Беларуси, России и Литве
Belka Games уволила сотрудников в Беларуси, России и Литве
Belka Games уволила сотрудников в Беларуси, России и Литве
22 комментария
Российская «Леста» стала 100%-м собственником «Гейм Стрим»
Российская «Леста» стала 100%-м собственником «Гейм Стрим»
Российская «Леста» стала 100%-м собственником «Гейм Стрим»
VK заплатил около $4 млн за беларусского разработчика мобильных игр
VK заплатил около $4 млн за беларусского разработчика мобильных игр
VK заплатил около $4 млн за беларусского разработчика мобильных игр
Signal назначил президентом организаторшу протестов в Google
Signal назначил президентом организаторшу протестов в Google
Signal назначил президентом организаторшу протестов в Google
3 комментария

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.