Окна подтверждения бывают хорошими

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

Хорошее решение не использовать окна подтверждения вообще. А использовать принцип «Анду». Но есть один момент, не всегда техническая реализация такого принципа проста и скорее всего требует дополнительного внимания и времени. Я сам столкнулся с такими проблемами и теперь хочу рассказать, как можно сделать окно хорошим без принципа «Анду».
Вот этот не очень хороший пример я нашёл в интернете. Попробую его улучшить.

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

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

Не используйте общие ответы в кнопках
«Да» и «Нет» — плохие варианты для ответа. Лучше использовать более конкретные действия «Удалить папку», «Оставить, как есть». А ещё лучше минимизировать конструкцию и оставить только одно действие. Ведь «крестик» — это и есть «Оставить, как есть».

Добавьте действие из контекста
Например, пускай будет: «Укажите причину удаления». Это поможет пользователю лишний раз подумать, стоит ли удалять папку. Причины подберите разные, смотря какая ситуация.

Не используйте горячие клавиши
Не используйте горячие клавиши для подтверждения действия. Не давайте пользователю возможность совершить действие случайно.
Вот было и стало:

Помните, что принцип «Анду» почти всегда лучше окна подтверждения. Про принцип почитайте советы Бюро и книгу «Пользовательский интерфейс» Ильи Бирмана.
Чтобы не пропустить новую заметку — подпишитесь на мой канал в Телеграме или RSS.
Расскажи про случаи, когда технически нельзя реализовать «анду»? Мне сходу не удалось придумать важное действие, которое нельзя незаметно для пользователя «отложить» на пять минут, чтобы он успел передумать.
Мне кажется, что твоё окошко не добавило пользы для пользователя. В реальности ведь будет надпись «15 файлов будут удалены. Восстановить их будет невозможно» и пользователь, который хочет поскорее очистить рабочий стол. Как это поможет заметить, что один файл из 15 выделился случайно и удалять его не надо?
Тима, реализовать можно всё) Я про другое. Иногда это занимает много времени, а хардкодить в большой системе — плохо. Я выше написал, что принцип «Анду» — лучшее решение. А окно подтверждения — хорошая альтернатива, если «Анду» реализовать сходу сложно.
«Мне сходу не удалось придумать важное действие, которое нельзя незаметно для пользователя «отложить» на пять минут, чтобы он успел передумать.»
— Это зависит от контекста, конечно. Иногда это не проблема, а даже полезно. Вот например есть у тебя объявление о продаже авто. Ты его удаляешь, а система у тебя спрашивает: «Тима, скажи причину: продал тачку на нашем сайте, на чужом или не продал её вообще». Система заставила тебя подумать, а есть ли причина на самом деле. Плюс аналитики счастливы, у них теперь есть статистика :) А вот Цеплин заставляет написать название проекта, перед удалением. Тоже клёвый приём.
«Мне кажется, что твоё окошко не добавило пользы для пользователя. В реальности ведь будет надпись «15 файлов будут удалены. Восстановить их будет невозможно» и пользователь, который хочет поскорее очистить рабочий стол. Как это поможет заметить, что один файл из 15 выделился случайно и удалять его не надо?»
— Перечисли название файлов, дай человеку пробежаться ещё разок. Но если он этого не сделал, увы.
«Не используйте горячие клавиши для подтверждения действия…»
Заставляет задуматься.
Если брать в вакууме, то есть пользователи которые управляют устройством только через клавиатуру. Для них будет жест нажатия на кнопку: Tab → Enter. Поэтому важно помнить о том, где должен находиться фокус-элемент, когда окно открыто.
Важно не дать им это сделать на автомате. Чтобы избежать случайность.
Интересный пример у гитхаба: там опасные действия выделены в отдельное место в настройках, называется “Danger Zone”. А чтобы подтвердить, например, удаление репозитория, надо ввести его имя: https://my.mixtape.moe/teivak.mp4
Да, клёвый приём. Цеплин тоже так делает при удалении проекта.
А позователю-то с этого какая польза? Если это его единственное объявление, то он десять раз подумает, прежде чем нажимать кнопку «Удалить». А если ему сотню за пять минут надо удалить, то эти вопросы только мешают
Мейлчимп тоже что-то такое делал, когда я с ним работал. Но когда надо удалить сразу много, начинаешь вставлять копированием или вообще автозаполнение полей в браузере включаешь. И в итоге всё равно удаляешь лишнее.
В общем, я думаю, что анду > удаление с задержкой > полезное для пользователя окошко > удаление без окошка > бесполезное окошко :)
Забавно, какое месиво получилось из понятного и удобного диалога:
Вывод — незачем ломать то, что не сломалось. Проблема случайного подтверждения решается намного проще и удобнее для пользователя. Сходу варианты: