Конференция DSE Fest — технично и понятно про data science для разработчиков. Смотри детали на сайте
×Закрыть

DOU Labs: как в Provectus разработали приложение для отслеживания общественного транспорта в Одессе

В рубрике DOU Labs мы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на editors@dou.ua.

Меня зовут Кирилл Малаев, я бизнес-аналитик в компании Provectus. Наша компания организовывает для своих сотрудников курсы по управлению проектами «Формула 1». Для нас это возможность взглянуть на проект глазами менеджера и заказчика, а для стажеров, которых набирают в рамках курса, — понюхать пороху в условиях командной работы и всех неожиданностей, которые она может принести.

Возможность поучаствовать в «Формуле 1» в роли Product Owner’а показалась мне очень привлекательной. Как говорит мой друг, в крайнем случае у меня бы не получилось и я остался бы там, где начинал. Я рисковал всего лишь парой часов Borderlands в неделю. Так я думал в самом начале. Забегая вперед, скажу, что на сегодня это одна из крупнейших ошибок в оценке проектов.

Итак, расскажу об Android-приложении «Общественный транспорт — Одесса», которое мы разработали во время стажировки.

Идея

Идея нашего приложения проста как дверь — отображать на карте движение трамваев и троллейбусов по городским маршрутам.

Мы долго обсуждали другие возможные идеи. Эта показалась самой привлекательной по двум причинам: достаточно широкий диапазон функциональности, чтобы стажерам было интересно, и достаточно небольшой объем работ, чтобы вложиться в период стажировки. Раз Uber, Facebook, Chatroulette и Dota 2 уже готовы — что нам оставалось?

Для этого проекта у нас было дополнительное преимущество — web-интерфейс существующего ресурса «Транспорт Одессы». Мы решили брать оттуда данные по маршрутам и геолокации транспортных средств. Сайт также дал нам представление о том, что мы хотим сделать в приложении.

Похожие приложения для других городов Украины и Европы служили примерами реализации подобных идей. Но чаще всего это были примеры того, как делать категорически не стоит.

Как работает приложение

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

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

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

Очень хотелось бы добавить информацию о перемещении маршруток и автобусов, но оригинальный сервис «Транспорт Одессы» пока что не предоставляет такой информации.

Android-технологии

Мы использовали Android SDK, минимальная версия ОС 4.4 (19), Room для работы с базой. Из сторонних либ: ButterKnife, Retrofit 2, RxJava, Dagger 2, EventBus.

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

Бывало, что при разработке возникали сложности. Например, корректное построение маршрутов: они должны были проходить по улицам, где есть остановки общественного транспорта, а не поперек карты — через жилые кварталы и дома. Также были трудности с созданием удобного UI/UX и кешированием данных на клиенте.

Набор стажеров и коммуникация на проекте

После лекционной части стажировки мы перешли к практике. План действий выглядел просто:

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

И тут я прочувствовал отношение большинства наших заказчиков: они считают свои проекты простыми и понятными, но от этого не менее гениальными.

Мы разделились на группы по 3-7 человек, и каждая группа начала работать над своим проектом. Вместе с другими менторами мы написали User Story, сделали декомпозицию задач, оценили трудозатраты с поправкой на навыки и знания стажеров, набросали матрицу рисков, разложили таймлайн и диаграмму Гантта. Нам показалось, что мы успеваем начать и закончить проект за четыре месяца разработки.

Потом пришло время набирать стажеров. Я на собеседованиях не присутствовал, так как выполнял в проекте роль Product Owner’а и мне стажеры не полагались. В результате, к нашей команде присоединились два Android-разработчика, два разработчика Java (Backend) и четыре QA-инженера.

Команда проекта «Общественный транспорт — Одесса»

«Слишком много народу для такого маленького проекта», — заметит пытливый и внимательный читатель! И будет прав. Но мы набирали людей с запасом, поскольку матрица рисков предполагала выбывание части стажеров из проекта по мере развития. Кто на работу, кто на больничный, кто просто не слишком исполнительный и трудолюбивый. Приятно сообщить, что в нашей команде собрались только ответственные люди, а также те, кто нашел работу за время стажировки, но не пропал без вести, а сообщил об этом менторам.

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

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

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

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

Скрам с недельными спринтами организовано перевели в Канбан, когда половина стажеров сошли с дистанции и мы перестали помещаться в недельные спринты. В итоге из восьми стажеров до финиша дошли шестеро: Аndroid-разработчик, два Java-разработчика, три QA-инженера. В целом на создание приложения ушло три месяца.

Результаты и планы

Проект завершился успешно. Приложение доступно для скачивания в Google Play. Сейчас у нас больше 10 000 тысяч скачиваний и 1 500 и 2 000 пользователей в день. В команде есть люди, которые планируют поддерживать работу сервиса и расширять функциональность.

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

Сейчас мы работаем над редизайном. Мы полностью переосмыслили UI/UX приложения. Делаем его максимально удобным и простым в использовании.

Также планируем в рамках следующей стажировки Formula 1 разработать приложение для платформы iOS. И попутно расширить функционал существующего приложения для Android.

LinkedIn

22 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Тестировал этот сайт смотрел в окно следил за трамваем НЕ РАБОТАЕТ transport.odessa.ua

Посмотрим на ваш проект )))

Простите, я не из Одессы и мой вопрос может быть немного оффтопным.
GoogleMaps не умеет то же самое?

Гугль мапс умеет, но кто-то в него должен засунуть расписание. Видимо не все провайдеры транспорта его отдают в виде АПИ. В польских городах гугль тоже не работает но есть свои бесплатные приложения, которые интегрированы с системами расписаний городского транспорта

Да, я заметил, что в Польше не так, как в Нидерландах, например.
Может кульминация проекта была бы как раз в реализации АПИ для Гугл?
Для любого туриста работа гугл карт не последний аргумент, куда поехать, ИМХО.

Мне наши e-podroznik и jakdojade больше нравятся

Мы можем спорить сколько угодно, но когда первый раз приезжаешь в новый город/страну, то тебе надо тратить время и усилия, чтобы найти нужную программу и научиться ею пользоваться.
Зачем это всё, если гугл карты у меня УЖЕ есть и на языке интерфейса телефона?
Я не спорю об удобстве использования, я о доступе к информации без лишних телодвижений.

Это все работает на английском как любая нормальная прога из плеймаркета. Точнее на языке системы по умолчанию. А гугль мапс хорош только тем что о нем знают все. Для автомобильной навигации Waze в разы лучше.

Можна було якраз зробити проксі для Google Maps з transport.odessa.ua, тоді можна було б зінтегрувати.

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

Я понял в чем идея и поддерживаю на все 100. Я просто предположил другую кульминацию/финал.

Спасибо. Приятно, что людям интересно развивать идею. )

Молодци!!! Процесс интересний. Только после установки приложения батарея садилась в два раза бистрее. В результате — снес его.

Здравствуйте Ростислав, спасибо за ваш отзыв. Вы помогаете нам сделать наше приложение лучше.

Там скорее всего дело в геолокации (ткну пальцем в небо). Предложу как идею, у самого в голове вертится. Смотрите, я пользуюсь общ. транспортом принципиально и заметил логистический критинизм, который у нас в Одессе наблюдается. Маршруты, которые параллельные (например троллейбус 3 и 14. Встречаются на Пушкинской и идут до Ив. моста (более двух третей маршрута совпадает)). Так вот, они постоянно ходят парами, и последий троллейбус всегда полупустой. Интервал движения между ними максимум 5 минут. А потом когда пары проходят,- стоишь и ждешь до 20 минут. Такая хрень по всему городу. Задача оптимизации графика движения, достаточно сложная и требует алгоритмизации. Мне кажется она очень интересна с точки зрения решения в Lab и статуса Вашей компании. Т.к. парсинг с глючного источника, коим является сайт «Транспорт Одессы» — достаточно странная.

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

— Дас ист айне гешефт! А как наши войска будут передвигаться по Одессе?

— На трамваях. На техническом транспорте.

— А там места хватит?

— Чичас глянем... значит... одесситы тут сделали аппликуху... [тап-тап] ммммм, нет, наш фюрер, приложение не показывает количество свободных мест. Блииииин, в приложении одесситы скрыли передвижение технического транспорта! Мы не сможем использовать муниципальный общественный транспорт для перемещения нашего захватнического личного состава, а ихние партизанские партизайнен смогут незаметно перемещаться по городу в вагонах технической поддержки.

— Ну, и кто тут коварный, шлемазл?

— [стреляются] ...

Алексей, вы прям в душу заглянули. Спасибо за понимание.

Опа, до Одессы постепенно доползают технологии. Вот только в чем отличие от Eway?

ничем — команда «тренировалась на котиках». Вот сделали более-менее полезную апу.

Только почему это преподносится как какое то достижение или инновация? По сути это проект для портфолио, не больше.

Здравствуйте Иван, спасибо за ваш вопрос. Мы не планировали преподносить наше приложение как достижение или инновацию. Цель этой публикации скорее дать обзор процессу и результату стажировки. Эта публикация скорее для новичков, которым интересно, как можно попробовать себя в сфере it. И чего ожидать на подобных стажировках. Для гуру или спецов тут мало интересного, поскольку редактор порезал все мои пошлые, рассистские и религиозные шутки. Извините, что отняли ваше время.

Да уж, это не над бомжами смеяться

Мені особисто не подобається евей, юзаю львівську альтернативу. А от те, що в Одесі досі лише електротранспорт має GPS — це правал

Подписаться на комментарии