Экран водителя проектируется под одну руку и грязные перчатки. Шесть элементов, которые нужны, семь, которых быть не должно, и почему статус «не состоялось» важнее всего остального.

Приложение для водителя проектируют как уменьшенную копию системы владельца. Это главная ошибка: у водителя другой контекст. Он в кабине, часто в перчатках, у него одна свободная рука и сорок секунд между делами.
Разберем, что должно быть на экране, чего быть не должно и почему один статус важнее всей остальной функциональности.
Экран водителя проектируется под одну руку и перчатки. Крупно, мало элементов, кнопка во всю ширину.
Одна задача на экране. Что делать прямо сейчас, а не что происходит вообще.
Главная кнопка - смена статуса. Все остальное второстепенно.
Статус «не состоялось» с причиной - важнее всего остального. Без него водитель будет закрывать заказ как выполненный, и весь учет обесценится.
Водитель не должен видеть лишнего: чужие машины, деньги владельца, клиентскую базу целиком.
Прежде чем говорить про элементы, стоит представить условия.
Человек в кабине или рядом с ямой. Руки заняты или грязные. Телефон в одной руке. Времени - между «подъехал» и «начал разматывать рукав». Солнце в экран или мороз, при котором палец не работает через перчатку.
Из этого следуют требования, которые важнее любых функций:
Крупные элементы. Мелкая кнопка в этих условиях не нажимается.
Мало элементов на экране. Выбирать не из чего - есть одно действие, которое сейчас логично.
Никаких обязательных длинных вводов. Все, что можно выбрать из списка, выбирается из списка.
Работает при плохой связи. В поселках она такая.
Крупно, полностью, с возможностью открыть в навигаторе одним касанием. Плюс комментарий от диспетчера: где въезд, есть ли собака, кто встретит.
Сколько кубов ожидается и что это - выгребная яма, септик, жироуловитель. Разные работы, и знать надо до приезда.
От этого зависит, хватит ли рукава. Приехать и выяснить, что нужно вдвое больше, - это сорванный выезд.
Главный элемент. Одно управление во всю ширину экрана с очевидным следующим действием: «Еду на откачку», потом «Откачал», потом «Еду на слив» или следующий заказ.
Одно касание - звонок. Не надо копировать номер, искать в контактах и переключаться между приложениями.
Что после этого адреса. Не весь день на неделю вперед, а очередь на текущее окно.

Отдельно про «не состоялось», потому что этот элемент решает больше, чем весь остальной интерфейс.
Ситуация: водитель приехал, а откачать не смог. Никого нет дома, не подъехать, клиент передумал, машина сломалась. Что он сделает, если в приложении есть только «Откачал»?
Нажмет «Откачал». Не из злого умысла, а потому что заказ надо как-то закрыть, а других вариантов нет.
С этого момента ваш учет врет. Количество выполненных - не количество выполненных. Отчет по деньгам не сходится с отчетом по заказам. Причины срывов неизвестны, потому что срывов формально не было.
Правильно устроенный статус выглядит так: отдельная кнопка «Не состоялось» и список причин - никого не было на месте, заказчик отказался, не подъехать к адресу, поломка машины, другое. Список, а не свободный текст: свободный текст никто не заполняет, а из списка получается статистика.
Дальше такая заявка должна попасть к владельцу как задача, а клиенту уйти сообщение. Про то, как разбирать такие случаи без разбора полетов, - в статье про контроль водителей.
Чужие машины и чужие заявки. Водитель видит свое. Иначе экран превращается в диспетчерский, и в нем невозможно найти свое.
Деньги владельца. Выручка, маржа, комиссия - не его зона. Своя ставка - да, общие финансы - нет.
Вся клиентская база. Контакт по текущей заявке - да. Список всех клиентов - нет, и по той же причине, по которой база не должна жить в телефоне диспетчера.
Обязательные комментарии текстом. Заполняться не будут. Все нужное - списком.
Точное время приезда, обещанное клиенту. Его нельзя выполнить, а водитель будет крайним.
Возможность самому занять свободное окно. Смены назначает администратор. Иначе расписание превращается в стихию.
Рейтинги и соревнование между водителями. В маленькой команде это дает больше конфликтов, чем пользы. Сравнивать человека стоит с ним же в прошлом месяце.
Отдельная ситуация, о которой редко пишут.
Привлеченный водитель со своей техникой - это не наемный сотрудник, а партнер с обратным денежным потоком: он платит вам процент за заявку, а не получает зарплату. Значит, ему нужно видеть свою экономику: баланс, историю списаний, сколько заработал.
И ему нужно понимать правила: при каком балансе заявки перестают приходить, как считается комиссия, что происходит при наличной и при безналичной оплате. Непрозрачность здесь ломает отношения быстрее всего.
Приложение водителя у нас мобильное и построено ровно по этой логике.
Водитель видит только заявки своей машины на своих окнах. Не весь день компании, не чужие направления.
Цепочка статусов не линейная: Еду на откачку - Откачал - дальше либо следующий заказ, либо Еду на слив - Слил - Свободен. «Еду на слив» ставит сам водитель, обязательным шагом между заказами это не является. Статус переключается слайдером, а не кнопкой, и «Откачал» без предшествующего «Еду» - не сбой, просто слайдер не тянули.
При статусе «Еду на откачку» заказчику уходит пуш о том, что машина выехала. Времени прибытия в нем нет: геолокации в продукте нет, а выдуманные минуты были бы враньем. Заказчик знает выбранный интервал и знает, что машина уже в пути.
Отдельного статуса для сорванного выезда у нас пока нет. Если водитель ничего не отметил, заявка остается на своей дате, и закрыть или перенести ее может только человек из кабинета службы. То, что написано выше про кнопку «не состоялось», - требование к процессу, а не описание нашего экрана.
Порядок объезда можно менять. Внутри окна заявки лежат списком, и порядок списка и есть порядок объезда. Карточку тянут выше и ниже, как в Trello. Двигать могут и водитель, и администратор, побеждает последнее изменение, список обновляется живьем у обоих. Обед - тоже строка в списке, ее можно двигать.
Плашка «Пора на слив» появляется, когда по прогнозу очередная заявка уже не помещается в бочку. Нарисована пунктиром и приглушенно - это предположение, а не команда, она двигается и исчезает при изменении реальности.
Водитель привязан к окну, а не к машине. До обеда на машине один человек, после обеда другой, каждый со своего телефона. Назначает администратор заранее, сменами. Сам занять свободное окно водитель не может.
Внутри окна у заявки нет времени, есть место в очереди. И это место мы не показываем заказчику: очередь живая, и тот, кто был вторым, а стал четвертым, воспримет это как обман.
История статусов сохраняется - видно, чем был занят день.
Приложение для водителей входит в бесплатный базовый набор. Абонентской платы нет.
Нужно ли водителю приложение, если он один и это вы сами? Да, ради истории. Через месяц вы не вспомните, что было во вторник, а отчет вспомнит.
Что если у водителя старый телефон? Веб-приложение, которое открывается в браузере и ставится на домашний экран, требует меньше, чем установка из магазина.
А если связи нет? Статусы должны ставиться и синхронизироваться позже. Это требование к приложению, а не проблема водителя.
Можно ли обойтись мессенджером? Можно, пока машина одна и вы сами за рулем. На второй машине переписка перестает быть учетом.
Должен ли водитель видеть цену заказа? Сумму к получению - да, если он принимает деньги. Вашу маржу - нет.
Возьмите телефон и посмотрите на то, чем сейчас пользуется ваш водитель, - хоть переписку, хоть таблицу. Задайте один вопрос: сколько действий нужно, чтобы отметить «приехал»?
Если больше двух - это и есть причина, по которой отметки не ставятся.
И проверьте главное: есть ли у водителя способ сказать «не получилось» с указанием причины. Если нет - ваш учет уже врет, просто вы этого не видите.
Дальше по теме: тарифы по объему - что водитель называет клиенту, и контроль водителей - как читать то, что он отметил.
Ассенизатор онлайн - прием заявок и управление ассенизаторскими машинами. Мобильное приложение водителя со статусами и порядком объезда входит в бесплатный базовый набор.