Длительность физических действий пользователя

Память программы


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

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

Большинство программистов считает, что быстрее создать новое окно диалога, которое спросит у пользователя некую информацию, которая не лежит на поверхности. Программисты не видят в этом ничего плохого, потому что они не знают, что пользователям не нравится, когда программа задает вопросы. Программа, которая задает меньшее количество вопросов, кажется пользователям умнее. Вот схема диалога программы и пользователя которая сейчас повсеместно распространена: Вы хотите сохранить этот файл? Вы хотите сохранить этот файл сейчас? Вы действительно хотите сохранить этот файл? Вы уверены, что хотите напечатать это? Вы уверены, что хотите печатать на этом принтере? Вы абсолютно уверены, что хотите печатать? А если пользователь не знает ответа на заданный ему вопрос, вдобавок к раздражению он еще и чувствует себя глупым. Возьмем например такой обычный вопрос: Вы хотите профессиональную установку или установку для новичков? Другими словами, вы хотите то, чего не сможете понять или вам будет не нужно, или же вы просто лопух?

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

У Алана Купера идея того, что программа может предсказать действия пользователя, обозначается термином "связность задач" (task coherence). Когда человек работает с программой, существует 80-процентная вероятность, что в следующий раз он сделает то же самое, что и в предыдущий. Таким образом, можно со значительной долей уверенности предсказать поведение пользователя, просто запомнив его последнее действие. Это позволит значительно уменьшить число вопросов, которые программа задает пользователю.

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

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

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

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

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

Связность задач может предсказать, что именно будет делать пользователь в будущем со значительной, но не абсолютной вероятностью. Если программа может надежно предсказать действия пользователя в 80% случаев, это значит, что в 20% случаев она будет неправа, потому что в каждом конкретном случае она не знает, в 20 она или в 80 процентах. Может показаться, что это как раз тот случай, когда нужно спросить пользователя, но это не так. Вместо предоставления выбора, программа должна продолжать делать то, что она считает наиболее подходящим, вместе с тем давая пользователю возможность изменить или отменить это. Если возможность отмены достаточно легка и понятна, пользователь не будет беспокоится о ней. В крайнем случае, ему придется отменять решение программы только в 2-х случаях из 10, вместо того, чтобы иметь дело с излишним диалоговым окном 8 раз из 10.

Как только программист начинает понимать всю силу принципа связности задач, в процессе разработки программ происходят значительные изменения. Разработчики программ начинают думать в совершенно новом направлении. Бездумный процесс создания еще одного диалогового окна заменяется более продуманным и аккуратным, в котором разработчик начинает задавать себе вопросы типа: сколько чего должна помнить программа? что именно должно запоминаться? Должна ли программа запоминать больше, чем просто последний вариант настройки?

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

наверх     к оглавлению

<< предыдущая глава следующая глава >>
Дизайн, информационное наполнение -
Александр Ширышев



Содержание раздела