Что мне больше всего нравится в замечательной почтовой программе "TheBat!" (пишется с восклицательным знаком, да), созданной молдавскими ребятами из компании RitLabs?

Конечно же, диалоговое окно, которое появляется при попытке закрытия программы, когда она получает или отправляет почту:

BatExit

Если у вас картинка не загрузилась, или шрифт мелковат, я еще раз напишу текстом

—————
Предупреждение
—————
Некоторые задания по проверке или отправке почты еще не завершены.
Вы хотите выйти из программы по их завершении?
—————
Да, Нет, Отменить
—————

(Кстати, не все знают, что можно скопировать в буфер обмена текст из любого стандартного диалогового окна Windows, просто нажав Ctrl+C)

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

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

Приведу потенциальный сценарий использования, на основании которого мог родиться этот странный диалоговый запрос.

  • Пользователь нажал кнопку получения почты, потому что с нетерпением ждет письмо от возлюбленной.
  • Почтовый клиент полез на POP-сервер и выполняет длительное действие по перекачиванию спама (с рекламой средств для увеличения кое-чего на 5 см) из почтового ящика на компьютер.
  • Пользователю это надоело, потому что 10 Мбайт спама загружаются медленно даже на выделенных линиях, и нужного письма все не видно.
  • Пользователь нажимает кнопку-крестик в заголовке окна TheBat для его закрытия.

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

Ведь пользователь может не знать, что прием/отправка писем — это в общем случае длительный фоновый процесс, и его прерывание будет означать, что письма не дойдут до адресата или не скачаются с сервера. Тогда вместо того, чтобы немедленно прекратить пересылку, пользователя следует проинформировать об этом и намекнуть, что правильнее все-таки подождать до завершения передачи, а только потом уже выйти из программы. Но пользователь может не захотеть выходить из программы после того, как пересылка закончится, так как он может при этом получить важную почту, и ему будет необходимо время на ее прочтение. Фраза "Вы хотите выйти из программы по их завершении?" демонстрирует полную уверенность разработчиков в том, что после того, как идиоту-пользователю объяснили, чем сейчас компьютер занимается, у него даже не возникнет мысль о досрочном прекращении процесса. А вдруг ему как раз не нужно ожидать завершения передачи, и надо все-таки выйти прямо сейчас? Может, добавить кнопку "Отменить" на всякий случай?

Эта самая кнопка "Отменить", которая делает именно то, что хочет пользователь (закрывает программу без ожидания), только вносит дополнительную путаницу, потому что никаких ссылок на нее в тексте предупреждения не приводится. Предполагается, что пользователь должен догадаться о смысле кнопки "Отменить", но ведь в большинстве других программ кнопка "Отменить" в подобных диалогах отменяет действие, которое вызвало предупреждение. Интуиция пользователя подсказывает ему, что нажатие на кнопку "Отменить" отменит закрытие программы, а пользователю нужно именно закрыть ее, черт возьми.

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

Что мешало перестроить запрос, например, так:

—————
Предупреждение
—————
Идет получение/отправка почты. 
Выйти из программы сейчас? 
—————
Да, Нет
—————

Все потенциальные варианты развития событий были бы учтены без душевных метаний как разработчика, так и пользователя. Но почему-то так не получилось.

P.S.

Не следует думать, что я считаю TheBat плохой программой только из-за одного этого несчастного диалогового запроса. TheBat — отличное приложение, которое помогало мне автоматизировать мою работу с электронной почтой и экономить уйму времени много лет подряд. Я просто хочу сказать, что любой программный продукт можно сделать еще лучше, чем он есть, и для этого даже не всегда нужно менять что-то радикально. Иногда достаточно всего лишь переставить несколько слов в диалоговом окне.