Уверены, что хотите выполнить это действие?
Очень часто нам приходится подтверждать свои действия: завершение работы программы, удаление файлов, перевод денежных средств. Разработчики пытаются оградить пользователей от ошибок, которые могут стать причиной необратимых последствий. Но всегда ли достаточно отображения вопроса с ответами «да» и «нет»? Если пользователь промахнулся и щелкнул не туда, то простой вопрос может оказаться спасительным. А что, если выполнение определенных действий, как и их подтверждение, является рутиной? Мы не хотим тратить время на чтение и осмысление однотипных вопросов, мы выбираем «да» по привычке.
Моя история
Запущена IDE Zend Studio, пишу код. Запущена Opera с десятком вкладок. Одна из вкладок — phpMyAdmin (администрирование СУБД) с открытой временной таблицей. Звонок, просят посмотреть данные по пользователю. Лень заходить в админку, открываю в новой вкладке PMA с таблицей users. Сообщаю информацию, кладу трубку. Вспоминаю, что надо очистить временную таблицу. Щелкаю в меню TRUNCATE (удаление всех строк), жму «да». Вижу структуру таблицы и понимаю, что сделал что-то не так. Поздно.
На восстановление работоспособности сайта ушло 10 часов, а это 300 тысяч показов. За эти 10 часов было написано множество скриптов, анализирующих другие таблицы и логи, приводящих резервную копию таблицы суточной давности в приемлемое состояние. Многое восстановить не удалось, был нанесен удар по репутации, были понесены значительные убытки. Не буду описывать потери подробно, скажу только, что сайт предоставляет пользователям платные услуги, а информация о текущем балансе находилась в удаленной таблице.
Кто виноват?
Бесспорно, я должен был внимательно изучить текст запроса перед тем, как нажать «да». Но отличалось ли мое поведение от поведения среднестатического пользователя? Я привык видеть этот вопрос и привык отвечать положительно.
Еще хочу обратить ваше внимание на расположение текста вопроса и кнопок ответа. Картинка специально была сжата для хабра, а вот на моем не самом широком мониторе вопрос и кнопки находятся в разных концах экрана. Первым делом при загрузке страницы я ищу кнопки, а если я смотрю на кнопки, то не вижу текста.
Как защитить пользователей?
Я считаю, что в данном случае следовало бы добавить текстовое поле, в которое пользователь должен ввести имя таблицы, которую он собирается очистить. Да, имя можно скопировать, но в этом случае текст будет прочитан, катастрофа будет предотвращена. Более жесткий вариант — необходимость набора имени задом наперед. Само собой, кнопки перенести влево.
Обращение к разработчикам
Уважаемые разработчики, пожалуйста, не давайте нам (пользователям) совершать ужасные ошибки. Лучше мы будем тратить лишние секунды на подтверждение важных действий изощренными способами, чем часы на исправление последствий. И, наоборот, не заставляйте нас каждый раз щелкать «да» при совершении рутинных операций, доводя это действие до автоматизма.
P. S.
Как можно позволить пользователю «убить» систему, введя одну неверную команду (заведомо неверную)? Ошибка в один символ, никакого подтверждения:
habrahabr.ru/qa/5627