Право на undo
В реальном мире действия делятся на обратимые и необратимые. Это свойство физического мира: полезно нам тем, что любой пользователь из мяса с таким базовым свойством с пеленок знаком.
Передвигать стакан по столу влево-вправо — можно обратимо и бесплатно, а вот уронить его со стола и разбить — обратного действия не существует, оно необратимое (и обычно небесплатное).
В сложных системах возможных действий много. Самые простые — также, обратимые, и не стоят ничего кроме времени. Самые сложные — уничтожают человечество всякий раз.
Два вопроса, которые ежеминутно решает пользователь любой системы
Обратите внимание: я сейчас говорю не о программных продуктах (хотя и о них тоже), а о совершенно любой системе операций, существующей в реальном мире или умозрительной. Например: юриспруденция, физические системы, общение, рынок, любая система где есть акторы. И даже формализация и создание новых систем.
О стоимости действия попробую оставить на другой раз, там много.
К чему нас приучили цифровые среды: к операции «отмена», сиречь Undo. Гибкость цифровой среды позволяет вести журнал состояний или пары взаимо-отменяющих операций (паттерн Command). Если операция «сделай всё как было» существует, ее можно применить — восстановив состояние, либо произведя обратные действия. Это очень мощный инструмент, как технически, так и логически.
Появилась концепция, разумеется, давно. Но кристаллизовалась в простой и понятный обывателю инструмент именно в цифровых продуктах.
Если вы проектируете систему (или пользуетесь любой существующей), операции отмены-отката либо закладываются/заложены явно, либо являются подразумеваемыми, исходя из ее внутреннего устройства.
- откатить правку в редакторе можно явно, в нем есть Ctrl+Z, и вы это знаете
- откатить незапланированную вредную операцию купли-продажи вы можете сами, либо с помощью юриста — вы пока не знаете, как, но вы знаете о существовании механизмов
- откатить разбитый стакан вы можете либо с явными потерями, склеив его, либо можете взять с полки/в магазине другой (с косвенными потерями об магазин)
- откатить некоторые штуки не получится, не всё человечество пока умеет.
Соответственно, что нам даёт факт существования операции отмены? Снижает риски, снижает энтропию (повышает определенность, снижает хаос).
Столкновение с неопределенностью и хаосом, втч потенциальным, мощнейший демотивирующий фактор — опять же, заложенный в нас эволюционно. Действовать в условиях неопределенности всегда дорого и опасно, этому учит физический мир.
Если вы хотите, чтобы вашей системой пользовались (либо успешно пользоваться уже существующей), предусмотреть операции отмены-отката нужно обязательно. Либо точно знать, где они есть и чего стоят, а где их нет, и стоимость выше адекватной.
Операции не обязательно и не столько цифровые. Откатывайте «на руках». Главное, чтобы такие механизмы были.
Чем яснее вы знаете «как отменить», тем проще вам работать
Чем яснее ваши пользователи знают, что и как можно отменить — тем проще (и эффективнее) работать им
Это, на самом деле, главная мысль; всё остальное следствия.
Отдельно обращу внимание на то, что некоторые «операции отмены» системные могут делаться внесистемными/надсистемными средствами. Торговая операция отменяется юридически (или можно на московскую биржу позвонить, кулстори, так бывает). Операционные косяки решает техподдержка, по мере сил. Пробу прыгнуть с крыши «смотри как я могу» собирает обратно травматология.
Вы и сами знаете, как старшее поколение выключает монитор в панике, «ой я там нажала и всё сломалось».
Знание «куда бежать, если что» не менее важно, чем осознание своих действий. Хотя и не подменяет его. Таким образом, если вы можете это знание сделать доступным и прозрачным — надо так сделать.
Знание системное, «что тут можно делать, а чего не стоит» тоже неплохо бы где-то иметь, и людям показать. Но люди не читают инструкции. Поэтому циклы примеров, онбординга, инструкции, практики — это то, на что следует обратить внимание, если есть цель «сделать всем хорошо» и предсказуемо. Обучение на примерах также заложено в нас эволюционно, грех не воспользоваться.
Иногда, и даже часто, полезно предусмотреть явно разделение между изменяющими действиями, и неизменяющими. После нажатия кнопки «применить» новое состояние системы станет базовым.
Кстати, коммитить и деплоить в шаббат запрещено, потому что тора запрещает действия, меняющие мир. Шаббат как раз начинается с вечера пятницы (около 17 часов по Москве), берите на вооружение.
Среду, где все действия заведомо обратимые и безопасные/бесплатные, называют песочницей (sandbox). Тоже очевидная физическая аналогия.
Сейчас уже никто и не вспомнит, а когда-то пионеры UX-взаимодействия и веб-приложений 37Signals
предложили у себя — и реализовали в паре продуктов — концепцию «абсолютного undo». Любую операцию можно отменить. Всегда. Совсем-совсем всегда.
Серьезно, даже отправленную почту можно было отменить (за 15 лет до gmail!).
И на этой волне отказались от всех модальных окон подтверждений в принципе. Какой смысл спрашивать, если можно просто сделать, если не понравится — откатим — ?
Практика показала, что идея была чуть слишком революционной для своего времени. Не привык человек так безоговорочно доверять софту. Выученные опасения не переломишь.
Но яркую попытку отрасль помнит.
Фундаментальное знание «как здесь всё устроено», то есть операционное устройство самой системы целиком, также добавляет предсказуемости, то есть решает сходную задачу в этом случае. Однако такое знание может быть весьма и весьма обширным, это инженерная задача.
Инженером называют профессионала инженерного дела, который изобретает, проектирует, анализирует, строит и проверяет машины, сложные системы, структуры, устройства и материалы.
Предостерегу вас от склонности подменить одно другим. Множество пользователей операционной системы знают, как она себя ведет и чего от нее можно добиться; однако кратно меньше профессионалов знают, как она в действительности устроена и работает. Задача осознания и предсказуемости для набора целевых действий решается намного проще и быстрее, чем подробное изучение механизма — с той же целью.
Описанный момент — «право на undo» — часть большего вопроса, про стоимость действий и предсказуемость операций. Но об этом как-нибудь позже, будет отдельно вкусно и полезно.
Также существует концепция «состояния», которая привычна для инженерных систем (также является лингвистическим и философским термином), но совершенно неочевидна для стороннего наблюдателя (пользователя), если не предпринять определенные шаги — и это тоже обширная тема, достойная внимания (когда-нибудь).