Электронные системы используют широкий спектр методов, которые помогают уменьшить количество ошибок. Один из них — разделение элементов управления таким образом, чтобы те, которые легко спутать, находились как можно дальше друг от друга. Еще один метод — использование отдельных модулей, так, чтобы ни один из элементов управления, не связанных напрямую с текущей операцией, не был виден на экране и его нужно было бы вызывать дополнительной командой.
Отмена действия
Возможно, самый мощный инструмент, который позволяет минимизировать влияние ошибок, — это использование команды «отменить действие» в современных электронных системах. Команда позволяет отменить операцию, выполненную по предыдущей команде, всегда, когда это только возможно. В самых хороших системах много уровней отмены, так что можно отменить целые цепочки действий.
Очевидно, что отмена действий возможна не всегда. Иногда она эффективна, только если ее выполнить сразу после нежелательного действия. И все же это мощный инструмент, который позволяет свести к минимуму влияние ошибки. Меня до сих пор удивляет, что многие электронные и компьютеризированные системы не могут обеспечить команду «отменить действие» даже там, где это заведомо возможно и нужно.
Подтверждение и сообщение об ошибках
Многие системы пытаются предотвратить ошибки, запрашивая подтверждение перед тем, как выполнить команду, особенно если действие может уничтожить что-то важное. Но такие запросы обычно плохо продуманы по времени, потому что, отправляя запрос на проведение операции, люди обычно уверены в том, что хотят ее осуществить. Вот известная шутка про такие предупреждения:
Человек: Удалить «мой самый важный документ».
Система: Вы хотите удалить «мой самый важный документ»?
Человек: Да.
Система: Вы уверены?
Человек: Да!
Система: «Мой самый важный документ» был удален.
Человек: О, черт.
Запрос на подтверждение воспринимается скорее как нечто раздражающее, чем как процедура, необходимая для обеспечения безопасности, потому что человек сосредоточивается на самом действии, а не на объекте, над которым он совершает действие. Лучше было бы обеспечивать проверку за счет появления двух отдельных окошек, одно из которых отвечало бы за действие, а второе — за объект, над которым нужно совершить действие (возможно, дополненных командами «отменить» или «выполнить»). Важный момент: человеку должно быть очевидно, в чем смысл действия, которое он выполняет. Конечно, именно из-за ошибок такого рода команда «отменить действие» так важна. Для обычных графических пользовательских интерфейсов на компьютерах «отменить действие» — стандартная команда, более того, когда файлы удалены, их просто убирают из поля зрения и помещают в папку «Корзина». В примере, который я привел чуть выше, человек может открыть папку «Корзина» и извлечь удаленный по ошибке файл.
Подтверждения также оставляют место для погрешностей и ошибок. Когда я пишу, я использую два очень широких монитора и мощный компьютер. У меня может одновременно быть загружено от семи до десяти программ. Иногда у меня бывает открыто около сорока окон. Допустим, я запускаю команду, которая закрывает одно из окон. Всплывает сообщение о подтверждении: хочу ли я закрыть окно? Моя реакция на это зависит от того, почему я хочу закрыть это окно. Если это была случайность, то просьба о подтверждении будет полезной. Если это была ошибка, я просто его проигнорирую. Вот два примера:
Я случайно закрываю не то окно.
Допустим, я хотел написать «We» (англ. «мы»), но вместо того, чтобы нажать клавиши Shift + W для первой буквы, я нажал Command + W (или Control + W) — команду «закрыть окно». Я ждал, что на мониторе появится заглавная буква «W». Если бы появилось диалоговое окно, в котором меня бы спрашивали, действительно ли я хочу удалить файл, я бы очень удивился и сразу понял, что допустил ошибку. Я бы отменил действие (вариант, который мне заботливо предложили в диалоговом окне) и заново набрал Shift + W, на этот раз — внимательно.
Я по ошибке закрываю не то окно.
Теперь предположим, что я на самом деле хотел закрыть окно. Я часто пользуюсь временными файлами, чтобы делать заметки касательно главы, которую пишу. Закончив главу, я закрываю этот файл, ничего не сохраняя, — ведь я ее закончил. Но поскольку я обычно открываю одновременно много окон, закрыть не то окно довольно просто. Компьютер считает, что все команды относятся к открытому окну — тому, где вы делали последние действия (и на которое наведен курсор). Но если я просматривал временный файл перед тем, как его закрыть, мой взгляд направлен на это окно, и, когда я хочу его закрыть, я забываю, что это окно не активно с точки зрения компьютера. Поэтому я запускаю команду «закрыть окно», компьютер показывает мне диалоговое окно и просит подтверждения, я подтверждаю команду и выбираю опцию «не сохранять работу». Поскольку я ожидал появления диалогового окна, я не стал читать сообщение. В результате я закрыл не то окно и, что еще хуже, не сохранил ничего из написанного, возможно, потеряв значительную часть работы. Удивительно, но предупреждающие сообщения совсем не помогают против ошибок (даже хорошо продуманные запросы, такие как те, которые я приводил в главе 4 на рис. 4.6).
Была ли это ошибка или промах? И то и другое. То, что я дал команду «закрыть» в то время, когда было открыто не то окно, — это погрешность, вызванная забывчивостью. Но то, что я решил не читать текст в диалоговом окне и подтвердить это, не сохраняя работу, — это ошибка (вообще-то даже две ошибки).
Что может предпринять дизайнер?
• Сделать более заметным тот элемент, с которым работает пользователь. То есть изменить внешний вид самого объекта, над которым совершается действие, чтобы он был более заметным: увеличить его или, может быть, изменить цвет.
• Сделать так, чтобы операцию можно было отменить. Если человек сохраняет свою работу, ничего страшного не случится, разве что ему придется открывать файл заново. Если человек выберет «не сохранять», система может все равно сохранить содержимое файла, а в следующий раз, когда человек его откроет, спросить, нужно ли восстановить предыдущую версию файла.
Проверка на разумность
Электронные системы имеют еще одно преимущество перед механическими: они могут выполнять проверку, чтобы убедиться, что запрашиваемая операция разумна. Удивительно, но в современном мире медицинский персонал может нечаянно облучить вас дозой радиации, которая будет в тысячу раз больше нормы, а оборудование покорно это выполнит. В некоторых случаях оператор даже не может отследить эту ошибку.
Точно так же ошибки при вводе денежных сумм могут привести к катастрофическим последствиям, даже если, мельком глянув на сумму, вы поймете, что где-то что-то сделали неправильно. Например, за доллар США дают около 1000 корейских вон. Допустим, я хочу перевести $1000 на счет в корейском банке в вонах ($1000 — это примерно 1 000 000). Но допустим, я ввожу количество вон в поле, куда нужно вводить доллары. Ой-ой-ой — я пытаюсь перевести миллион долларов. Умные системы знают обычный размер моих переводов, они отправят запрос, если сумма будет значительно больше. Например, система удивилась бы, если бы я отправил запрос на перевод миллиона долларов. Менее умные системы просто слепо следовали бы инструкциям, даже если у меня бы не было миллиона долларов на счету (возможно, с меня взяли бы штраф за то, что я превысил сумму на своем счете).