Законы робототехники в интерфейсе

Законы робототехники в интерфейсе

Интерфейс — это способ, которым человек решает свою задачу:

  • войти в квартиру (интерфейс — дверь);
  • сообщить машинисту поезда о пожаре (переговорная панель);
  • найти на карте аэропорта ближайший туалет (информационный киоск).
  • купить цветы в интернет-магазине (форма заказа).

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

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

Оригинальные законы робототехники придумал писатель-фантаст Айзек Азимов. В рассказах Азимова они защищали людей от произвола машин. А у нас помогут людям не страдать от кривых интерфейсов.

№ 1. Не навредить

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

Не терять данные пользователя

♞ Человек пять минут вводил реквизиты в квитанцию на оплату, а потом нажал на «Отправить» и получил ошибку:

Человек нажимает на «повторить попытку», и…

Плохо Программа открывает пустую форму, пользователь вводит реквизиты заново.

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

Не перекладывать на человека заботу о сохранности данных

Ленивая программа заставляет человека указывать, когда и что сохранять. Забыл сохранить? Ну, твои проблемы.

♞ Человек дописал статью в текстовом редакторе и решил его закрыть. Реакция программы:

Плохо В документе «Мой документ 132» есть несохранённые изменения. Сохранить их? Да / нет / справка

Лучше (молча автоматически сохраняет после каждого изменения)

Ленивая программа не несёт ответственности за технические ошибки. Заботливая — страхует от них.

♞ В результате технического сбоя личный дневник в облачном хранилище затёрся версией пятилетней давности. Реакция сервиса:

Плохо Яндекс.Диск: «Извини, дружище. Надеюсь, у тебя есть бэкапы. Лично я прошлые версии не храню».

Лучше Дропбокс: «Хочешь восстановить дневник, как он был до этого досадного происшествия? Нет проблем».

Помнить привычки человека

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

Плохо «Яндекс.Музыка» при старте всегда открывает раздел «подборки». Ей всё равно, что я никогда не слушал эти подборки и не собираюсь.

Лучше Открывать раздел, на котором пользователь остановился в прошлый раз. В моём случае это сохранённые треки. Ещё лучше — включать тот же трек, на котором я прервал прослушивание.

№ 2. Не выносить мозг

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

Не заставлять человека думать

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

Для второстепенных задач хорошая программа делает выбор автоматически:

  • Вместо того, чтобы заставлять человека придумывать «логин» — использует электронную почту. Даёт войти через соцсети, многим так удобнее.
  • Вместо «введите номер телефона в формате 7xxxxxxxxxx» — разрешает свободный ввод и форматирует номер автоматически.
  • Вместо того, чтобы с каждой покупкой запрашивать ФИО, адрес и телефон — подставляет их из предыдущего заказа.
Решать конечную задачу, а не промежуточную

Хороший робот решает задачу человека, а не ту, что выдумал программист. Если в интернет-магазине покупатель видит «заказ отправлен», этого недостаточно — цель еще не достигнута.

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

Так тоже хорошо:

Мы приняли заказ. Сегодня воскресенье, поэтому менеджер перезвонит насчёт доставки завтра с 10 до 11.

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

Не заставлять человека ждать

Компьютер не должен заставлять человека ждать. Ритм взаимодействия устанавливает пользователь.

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

Программа не имеет права оставить человека в неизвестности:

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

Если приказ человека не выполнен, робот обязан немедленно сказать об этом:

Нет интернета. Мы не успели передать заказ в магазин, но сохранили его на этой странице. Так что когда интернет появится, вы сможете отправить заказ одной кнопкой — заново вводить ничего не придётся.

№ 3. Общаться по-человечески

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

♞ Человек пытается войти в интернет-банк и видит сообщение:

Плохо В целях безопасности подтверждение операции невозможно. Обратитесь в Телефонный центр.

Лучше Кажется, вы сменили SIM-карту. Ответьте на пару вопросов, чтобы получить доступ к интернет-банку: позвоните +7 495 223-23-23 или напишите в чат.

Плохой интерфейс требует, и тем самым бесит человека. Хороший — объясняет пользу, и тем самым убеждает:

♞ На форме заказа цветов в интернет-магазине пользователь дошёл до поля «Телефон». Под полем надпись:

Плохо Телефон — обязательное поле

Лучше Курьер позвонит за час до приезда

Плохой интерфейс многословно и путано объясняет. Хороший — наглядно показывает.

♞ В CRM-системе появилась новая возможность. Пора рассказать о ней пользователю:

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

Плохой интерфейс учит человека, как правильно жить. Хороший — молча делает, но предупреждает о неприятных последствиях:

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

Лучше Вы добавили Виктора Васильева в группу «Читатели», и поэтому он не сможет редактировать статьи. Если это не то, чего вы хотели — уберите его из группы.

А ещё хороший интерфейс называет вещи своими именами и не коверкает язык:

  • Программа для книжного магазина работает с книгами и открытками, а не «объектами учета».
  • В туду-листе осталось «23 задачи», а не «задач: 23»

Запомнить

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

Эти «законы» — просто здравый смысл. То же самое, что вы ожидаете от смышлёного коллеги:

📎📎📎📎📎📎📎📎📎📎