Как мы это сделали: «Такси Город» — онлайн-сервис по заказу такси в Минске
Об опыте разработки онлайн-сервиса по заказу такси в Минске «Такси Город» в рамках проекта dev.by «Как мы это сделали» рассказывает ведущий разработчик приложения и участник интернациональной команды DreamTeam MobileАлексей Страх.
Всё началось в 2011 году. После поездки на конференцию в Москву я порвал крестовую связку и в результате операции с трудом перемещался по городу. В десяти минутах от моей квартиры находилась стоянка такси на площади Якуба Коласа, но дойти до неё я не мог. Когда же звонил в службу, мне часто отвечали, что свободных машин в этом районе нет. Тогда я узнал про заказ такси онлайн и подумал, насколько удобнее было бы запустить поиск машины, а в это время заниматься своими делами.
Как это нередко бывает, сначала написал сервис для себя, дал попробовать другим — и приложение начало набирать популярность.
Планирование
Планирование начинали с попытки понять, что же мы хотим построить. Для начала это был минимально необходимый функционал для заказа такси, а в дальнейшем — добавление функциональных возможностей, которыми было бы удобно пользоваться при ежедневном обращении к приложению: ведение истории, автоопределение адреса, рейтинги водителей и т. п.
Мы организовали хакатон внутри команды из нескольких человек, который помог сформировать видение и первые версии приложения. Мы так же начали получать первые отзывы от пользователей, которые также влияли на процесс планирования и приоритезацию функциональных возможностей.
Далее мы двигались итерациями с неопределёнными дедлайнами, так как не зависели от каких-либо договорённостей. Я бы назвал этот процесс производственным хаосом, но новые версии приложения выходили с завидным постоянством и для всё большего числа платформ.
Разработка
К началу разработки мы — несколько разработчиков под Windows Phone — уже засветились с приложением gMaps и вели пару успешных проектов. И всё же у нас был весьма ограниченный опыт в мобильной разработке, а потому пришлось начинать с того, что знали. Так, версию приложения для Windows Phone сделали на.NET. Нам сильно помогло то, что Microsoft приложила немало усилий, чтобы разработчики могли применить опыт, полученный при разработке десктопных и веб-приложений.
Когда наступило время расширяться на Android и iOS, пришлось подучить Java (Android) и Objective-C (iOS).
Мы выбрали одну технологию, которая позволяет нам писать все три версии приложения, используя общий репозиторий кода — Xamarin. Теперь мы снова пишем на.NET и при помощи Xamarin предоставляем нативный пользовательский интерфейс конечным пользователям. Повторно мы использовали около 60-70% кода, и теперь поддержка приложения для разных платформ сводится к внесению изменений в одном месте и запуску на всех платформах сразу. Мы пробовали различные альтернативы (от PhoneGap до React Native), но Xamarin показал себя лучше всех.
Первым значительным релизом, после которого мы получили более тысячи активных пользователей, стала iOS-версия приложения. Мы разрабатывали её в течение месяца, но выпустили в свет лишь через год после первого релиза версии под Windows Phone.
Разработка ведётся и по сей день, в результате чего в первоначальную архитектуру были внесены изменения.
Команда и финансирование
Начиналось всё с одного человека. Постепенно каждую новую платформу брал на себя отдельный разработчик, но объёмы работ заставили увеличить размер команды. Теперь у нас небольшая распределённая команда профессионалов, объединённая под общим именем DreamTeam Mobile: разработчики, дизайнер, тестировщики и бета-пользователи.
Несмотря на то, что идея родилась в Минске, её основатели живут в разных уголках планеты (США, Австралия, Германия, Россия, Шри-Ланка, Китай, Беларусь). Однако желание разрабатывать полезные сервисы для родного города никуда не пропадает, когда понимаешь, что это всё не зря. В Минске живут наши родственники, друзья и хорошие знакомые, с которыми мы постоянно на связи и от которых получаем фидбэк — и похвалу, и критику, но это нас лишь стимулирует.
Над «Такси Город» работают от 3 до 7 человек в зависимости от фазы (разработка, тестирование, поддержка и т.п). Изначально мы использовали собственные средства и силы. При расширении команды мы начали вкладывать прибыль компании (от этого и других проектов). Никаких внешних инвестиций не получали.
Итоги
Сегодня наше приложение позволяет заказывать машины сразу в нескольких службах, учитывая цену, время подачи, службу и оценки других пользователей. Главная цель и заслуга приложения в том, что мы даём конечному пользователю выбор по всем этим параметрам. Другое преимущество — это обратная связь о поездке. Ваш отклик будет услышан и учтён для улучшения работы сервиса, оценка повлияет на рейтинг водителя.
Расчётная цена, отображаемая в приложении, строится на основе актуальных тарифов служб такси. Приложение не содержит в себе никаких скрытых комиссий и платежей. Финальный расчёт производится конкретной службой такси, выбранной для осуществления поездки, по таким же тарифам, но уже по результатам фактической поездки, которая может отличаться от расчетной (пробки, ремонт дорог и т. п.).
Мы вложили много сил и времени в разработку пользовательского интерфейса. Каждое действие пользователя продумывалось, оптимизировалось, упрощалось, чтобы процесс вызова машины стал как можно проще и быстрее.
После выхода iOS-версии приложение «Такси Город» стало крайне популярным и даже попало в топы белорусского App Store.
В среднем за сутки через наше приложение происходит около 2 тысяч заказов. В часы пик и праздники спрос сильно превышает предложение и достигает 3-4 тысяч в день. Например, в новогоднюю ночь 2014-2015 нам поступил 23741 запрос на поиск такси. За время работы приложения (первый релиз под WP вышел в декабре 2011 года) поступило более 1,8 млн. заказов такси.
К приложению есть постоянный интерес, нам приходит много запросов на добавление новых функциональных возможностей. Мы продолжаем развивать сервис и радовать жителей Минска — города, где больше не живём, но который очень любим.
Монетизация
Мы зарабатываем на продаже приоритетного трафика службам. Если службе хватает заказов неприоритетных, то она получает их бесплатно. С платного трафика мы берём свой процент с прибыли, полученной службой за предоставление заказов водителям. Размер процента не разглашается.
Пока на разработку уходит больше средств, чем поступает доходов, но в течение 2016 года мы планируем выйти на окупаемость.
Сложности
Таксомоторные службы нехотя идут на сотрудничество, порой даже слушать не хотят, рассматривают нашу систему как конкурентную платформу. На деле же мы эффективно находим пассажиров и помогаем им найти нужную службу и машину. Любая служба лишь выиграет от такой интеграции.
Мы не всегда можем обслужить все заказы наших пользователей, например, из-за банальной нехватки свободных машин, поэтому поиск новых партнёров и служб такси для нас всегда актуален.
Нас также ждёт конкуренция с Uber и «Яндекс.Такси», но мы верим в наш продукт и продолжаем его развивать. В отличие от конкурентов, право формирования цены в нашей схеме принадлежит службам такси. Мы не навязываем свою цену (зачастую очень низкую), что даёт службам возможность честно конкурировать, не демпингуя, получать больше заказов и повышать качество сервиса.
Перспективы
У нас есть список задач, планов по развитию и интеграциям, а также пользовательский форум, который сильно влияет на приоритеты выполнения задач. Каждый может добавить свою идею, проголосовать за другие предложения, самые популярные из которых рассматриваются первыми. Обновления выходят каждые 2-4 недели, тестируются и сначала проверяются на внутреннем круге бета-тестеров.
Сейчас самая важная задача — увеличить процент принятых вызовов. Работающие с нами службы не всегда справляются с потоком, который агрегирует приложение. После недавних обновлений процент принятых вызовов значительно вырос, но мы не успокоимся, пока каждый пассажир не получит машину. Кроме того, мы готовимся выпустить обновление для Windows Phone, которое будет не хуже версий для iOS и Android.
В бизнес-планах — окупаемость разработки, выход в другие города за счёт дополнительного финансирования и прибыли, а также развитие связанных сервисов и рекламы.
Что касается новых функций, в ближайшее время мы планируем запустить:
отображение водителей на карте, чтобы контролировать время прибытия и местоположение водителя;
заказ машины на указанное время;
дополнительные параметры (наличие терминала, wi-fi, детского кресла и т. п.).
Полезные ссылки
Xamarin (Xamarin.iOS & Xamarin.Android) — платформа разработки кросс-платформенных приложений.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.