Таксист в кармане

Как я делал вступительное задание в Школу стажёров Бюро Артёма Горбунова

Бюрошный вертолет

Задание

Спроектируйте интерфейс беспилотного такси. Человек вызывает такси с телефона или просто ловит на улице. Пассажир может не знать точно адрес и даже ехать в режиме «навигатор наоборот», подсказывая машине, как проехать («на светофоре направо», «тут не разгоняйся, где-то скоро поворот»). По пути, бывает, надо заехать в магазин. Что если пассажир едет по российским улицам, но не говорит по-русски? Что если с пассажиром громкие дети, из-за которых распознаватель голоса постоянно сбивается?

Смелость сценария приветствуется, но не стоит наделять интерфейс способностью читать мысли.

Если вы внимательно прочитали задание, то наверняка поняли, что одним экранным интерфейсом в салоне тут не отделаться. Всё дело в том, что при использовании такси, возникает множество ситуаций, когда взаимодействие с машиной уходит за рамки экрана и салона. Из-за этой детали, задание превращается в проектирование системы, а не интерфейса.

Процесс

  1. Изучаю предметную область. Что такое такси, кто и как им пользуется?
  2. Анализирую сценарии, определяю требования и ограничения. Ищу решение.
  3. Проектирую: интерфейс в салоне и ограничения доступа.
  4. Проектирую: интерфейс в кармане. Новое понимание процесса взаимодействия с машиной.
  5. Собираю презентацию за три часа до дедлайна, отправляю.
  6. Подвожу итоги, пишу заметку.

Такси

В моём понимании, такси — услуга перемещения клиента из точки «А» в точку «Б» за деньги. Эту услугу осуществляет частный таксист или таксопарк. Формально, такси — вид общественного транспорта.

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

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

Базовые сценарии

Заказ поездки «С борта». Человек видит свободную машину, подходит к ней или останавливает на ходу, договаривается с водителем о цене и маршруте, садится и едет на место. По дороге человек может общаться с водителем или заниматься своими делами. В конце поездки человек расплачивается с водителем и выходит из машины.
В виде последовательности взаимодействий сценарий выглядит так: пользователь → водитель → машина.

Удаленный заказ поездки. Человек заказывает такси по телефону, через сайт или приложение. Ждет, пока машина приедет по адресу. Как только машина приехала, человек садится в нее, уточняет с водителем детали и едет на место. По дороге человек может общаться с водителем или заниматься своими делами. В конце поездки человек расплачивается с водителем и выходит из машины.
В виде последовательности взаимодействий: пользователь → устройство … пользователь → водитель → машина.

С появлением беспилотных автомобилей из этой цепочки уйдёт одно звено — водитель. Сценарии будут выглядеть проще:
Заказ поездки «С борта»: пользователь → машина.
Удаленный заказ поездки: пользователь → устройство … пользователь → машина.

Концептуально — всё понятно, но есть ряд вопросов:

С точки зрения пользователя не понятно, как заказать поездку; войти в машину и выйти из неё; как задать и корректировать маршрут; как расплатиться за поездку; что делать в экстренной ситуации?

С точки зрения бизнеса не ясно, какой интерфейс выгоднее использовать; как обеспечить безопасность пассажира; как продлить жизненный цикл одной машины; как снизить простой машин; на чём ещё заработать?

С точки зрения технологий тоже есть вопросы: как добиться максимальной автономности каждой машины; можно ли это реализовать существующими технологиями; это вообще возможно?

Кадр из фильма «Вспомнить всё» 1990 г.

Интерфейс в салоне

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

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

Первые наброски экранного интерфейса в салоне машины

Заказ поездки «С борта»

  1. Человек подходит к машине. В машину можно сесть только после индикации банковской карты (датчики Пейпас стоят между правых и левых дверей, а также на багажнике). Такое ограничение необходимо, чтобы машина не простаивала лишнее время. Ведь никто просто так не будет сидеть в машине, если с его счета списываются деньги за ожидание. Кроме того, такое ограничение избавит бизнес от «зайцев» в салоне.
  2. После индикации карты, машина бронируется за человеком и включается бесплатный режим ожидания на пять минут. Таким образом человек может спокойно погрузить кучу сумок и детей, а уже потом ехать. Тут важно, что после пяти минут включается платное ожидание, а так как у машины уже есть данные банковской карты, деньги списываются автоматически за каждую минуту простоя. Человек может отменить поездку в интерфейсе.
  3. Дальше человек указывает место назначения на экране. Это можно сделать с помощью карты или поиска. Поиск понимает адреса, названия мест, достопримечательностей и компаний, а в выдаче показывает панорамы Гугл Стритвью, чтобы человек сориентировался на местности.
  4. Человек подтверждает маршрут, машина блокирует центральный замок и едет по адресу. По дороге человек может из интерфейса включить радио, остановить машину или изменить адрес. Если человек решит остановиться, машина найдет безопасное место для остановки и разблокирует двери. В этот момент человек может выйти по своим делам. Так как доступ в машину возможен только по уже привязанной к поездке карте, в машину никто кроме этого человека не сможет зайти.
  5. Если человек по дороге решил изменить маршрут, машина пересчитает его на ходу, и поедет куда нужно.
  6. Когда машина приехала на место у человека есть пять бесплатных минут, чтобы выйти из машины или задать новый адрес. Если человек не вышел из машины с его карты снова списываются деньги за простой.

Удалённый заказ поездки

  1. Человек устанавливает приложение, привязывает карту.
  2. Заказывает машину.
  3. Машина приезжает, бесплатно ожидает человека пять минут, потом, включает платное ожидание. В этот момент доступ в машину осуществляется по карте.
  4. После того, как человек сел в машину, взаимодействие такое же, как при заказе «С борта».
Отрисовка первой версии интерфейса в Скетче

Таксист в кармане

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

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

Анализирую, как изменить процесс, чтобы стало проще заходить в машину, открывать багажник, включать музыку и объяснять дорогу?

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

Нужна умная автоматическая система, которая понимала бы, что я это я, и открывала двери. Ищу решение: датчики движения, биометрия, Глонасс… Нужно что-то проще, то что можно использовать прямо сейчас. Бинго, Блютус! Датчик Блютуса дешевле сенсорного экрана и есть в каждом смартфоне. Машина по силе сигнала понимает, что человек рядом и снимает центральный замок, прямо как живой таксист.

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

С новым подходом сценарии будут выглядеть более унифицировано. Заказ поездки «С борта» и удаленный заказ поездки: пользователь → устройство → машина. Тем не менее часть вопросов осталась открытой. Пробую решить во время работы над экранами.
Чтобы успеть сделать задание в срок ввожу ограничения:

  1. Приложение должно работать на существующих технологиях.
  2. Все машины в роботаксопарке одинаковые: желтые седаны эконом класса, с одним пристегнутым детским креслом и вложенным бустером.
  3. Так как на протяжении всего процесса используется смартфон, необходимо, чтобы машина была оборудована зарядками для разных устройств.

Процесс
Описываю установку и настройку приложения текстом:
Сначала вы устанавливаете приложение. Открываете его, разрешаете использовать Джи Пи Эс, Блютус и вашу банковскую карту из кошелька или добавляете её вручную.

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

Стартовый экран с машиной поблизости Стартовый экран без машины поблизости

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

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

Экран поиска Экран поиска Превью места

Основной экран поиска показывает последние и часто посещаемые места для быстрого заказа. Каждое место состоит из названия, адреса, типа места и его фотографии. В зависимости от типа места (жилой дом, торговый центр, достопримечательность, административная зона), сортируются поля в названии. У жилого дома в спальном районе названием места будет адрес, а у торгового центра его название.

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

После того как человек выбрал место назначения, на карте отображается маршрут, а под формой появляется кнопка «Вызвать такси» с примерной ценой и длительностью поездки.

Экран вызова Экран ожидания машины

После вызова такси человеку нужно знать какая машина к нему едет и как скоро она будет рядом с ним, поэтому на экране показывается карта с метками человека и такси. Кроме того на экране показывается модель, марка, номер машины и время ожидания. Если что-то пошло не так человек может отменить заказ.

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

Экран ожидания пассажиров Экран ожидания пассажиров

Когда человек сядет в машину, на экране отобразится маршрут, а метки человека и такси объединяться в одну. Так как человек может ехать не один, необходимо подтверждение для начала движения, поэтому на экране отображается кнопка «Поехали».

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

Экран движения по маршруту

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

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

Экран остановки Экран выхода из машины Экран завершения поездки

Когда машина приезжает на место, человеку достаточно выйти из машины. По силе Блютус-сигнала машина поймет, что человек ушел, закроет счет и уедет на следующий заказ.

Итоги

2 недели, 3 итерации и я принят :)

Да!

Из всей этой истории с поступлением в Школу, я вывел для себя несколько уроков:

  1. Внимательно изучай задачу, иногда решение за рамками описанных сценариев.
  2. Всегда примеряй решение к реальной жизни, даже если задача
    не имеет отношения к реальности.
  3. Вводи ограничения, они помогут уложиться в срок.
  4. По ходу работы фиксируй результаты итераций и делай пометки, чтобы потом проще было рассказать о проделанной работе другим.
  5. Запланируй на верстку презентации больше трёх часов ;)
Итоговая презентация, отправленная в Бюро
Поделиться
Отправить
Запинить