Взаимодействие человека и компа
может потребовать больше ручной работы, которую он и призван уменьшить.
Но вернитесь на шаг назад. Откуда поступают эти бумаги? С другого
компьютера? Подумайте, как полностью избавиться от бумажного этапа.
Ограничение принятия решений
Необходимость принятия решений можно снизить следующим образом:
1. Не воспринимайте пользователя как “свод правил”. Не заставляйте его
всего лишь сообщать о принятых решениях.
2. Внимательно оценивайте каждое решение, чтобы убедиться в его
необходимости.
3. Быстро и точно предоставляйте пользователю информацию, необходимую для
принятия решений.
4. Избавляйтесь от ненужной информации.
5. Визуально выделяйте наиболее вероятные варианты ответа.
Многое из того, что часто принимают за принятие решений, на самом деле
является сообщением о решении. Большинство операций такого рода можно
заменить машинами, полностью удалив оператора из процесса.
На втором шаге удостоверьтесь, что оставшиеся решения действительно
относятся к задаче пользователя, а не машины. Если пользователь должен
решить, выполнять запрос или нет - это относится к задаче. Но решение о
том, какой метод использовать для выполнения запроса - А или Б, лучше
оставить машине.
Большинство разработчиков не советуют ограничивать пользователя
единственным способом выполнения задачи. Действительно, свобода
графического интерфейса заключается в том, что разработчик создает среду, а
пользователь решает, как ее использовать. Стены лабиринта должны быть
убраны в пользу открытых мест со следами предыдущих путешественников.
Цель такого подхода – предоставить пользователям выбирать наиболее удобный
для них способ работы. Этот метод значительно отличается от ситуации, когда
пользователь, достигнув очередной развилки на дороге, постоянно решает куда
повернуть теперь.
Третий шаг – удостовериться, что пользователю предоставлена вся необходимая
информация для принятия решения. Часто можно видеть, что программа задает
пользователю вопрос, на который он не может ответить, не обратившись за
информацией куда-то еще. Такая программа скорее всего никогда не
тестировалась на пользователях; разработчики посчитали, что раз они знают
ответ, то и все остальные тоже знают его.
Четвертый шаг, удаление избыточной информации, очень важен. Множество web-
страниц сегодня изобилуют ссылками. Да еще и сами браузеры содержат большое
количество кнопок и меню. Что же остается бедному пользователю? Скорее
всего, сделать неправильный выбор.
Шаг 5: Пользователи должны легко различать наиболее вероятный вариант
ответа. Слишком часто создатели программ предлагают нам неясные вопросы с
двумя одинаково выглядящими вариантами ответа, хотя одно из решений
является неверным для большинства.
|Вместо такого вопроса: |Предложите следующий вариант: |
|Бегемот-левша? Да Нет Иногда |Если у вас есть бегемот-левша, |
| |нажмите сюда. Иначе, выберите |
| |Продолжить. |
| | |
| |Продолжить |
| | |
Здесь не только вопрос, но и ожидаемый ответ сразу видны.
Не задавайте также пользователю вопрос о какой-нибудь настройке, смысл
которой неясен. Чтобы ответить на этот вопрос и решить, нужна ему эта
настройка или нет, пользователю придется узнать все о ней. Спрячьте такую
настройку в раздел “advanced”.
Используйте фоновый режим выполнение задач
Выполняя все асинхронные операции в фоновом режиме, можно отделить задачи
пользователя от задач компьютера, позволяя пользователю работать без
перерывов.
Сетевая печать была асинхронной операцией более 15 лет. Пользователи
нажимали кнопку “Печать” и шли заниматься своими делами, пока шел процесс.
Над проблемой печати стали работать в первую очередь, потому что
1. Печать отнимает много времени
2. Печать не требует вмешательства пользователя
3. Общее время выполнения задачи предсказать нельзя
4. Следующее задача пользователя обычно не связана с результатами печати
Если принтер подключен к высокоскоростной сети и в очереди печати нет
заданий, все происходит довольно быстро. Однако, если кто-то только что
начал печатать 300-страничный документ, то компьютер может оказаться
“замороженным“ на длительный период времени.
Та же самая ситуация сложилась сейчас с Интернетом. Загрузка страниц
занимает длительное время, не требуя вмешательства пользователя в этот
процесс, и предугадать, будет ли она длиться 5 секунд или минуту,
невозможно.
Всякая операция, которая подходит под вышеописанные критерии и может быть
выделена в отдельную задачу, должна быть выделена. Если нужно передать
длинную форму после того, как пользователь нажмет Submit, это нужно сделать
в фоновом режиме, пока пользователь переходит к следующей форме.
Уменьшайте субъективное время восприятия
Все вышеописанные подходы касаются измеряемого времени, которое требуется
пользователю для выполнения задачи. Однако пользователи часто жалуются, что
им “кажется”, что процесс происходит медленнее, чем есть на самом деле.
Классический пример произошел в Нью-Йорке в 1930 году, когда пользователи
нового офисного здания постоянно жаловались на долгое время ожидания
лифтов. Когда пригласили инженеров для консультации, выяснилось, что нет
никакой возможности ни ускорить лифты, ни увеличить их число или
вместимость. Тогда пригласили дизайнера, который смог решить проблему.
Дизайнер понял, что настоящая проблема была не в том, что время ожидания
лифтов было слишком большим, а в том, что оно воспринималось таковым.
Дизайнер решил проблему восприятия размещением зеркал на стенах площадок
для ожидания лифта. Теперь люди были заняты рассматриванием себя и других в
множестве отражений. Их мозг был полностью занят и время летело.
В одном из исследований этого феномена пользователей попросили выполнить
одно и то же задание с помощью клавиатуры и мыши. Работа с клавиатурой была
напряженной и требовала принятия множество мелких решений. Версия для мыши
была гораздо легче и принятия решений не требовала.
Все пользователи выполнили задание с помощью мыши примерно на 50% быстрее.
Но что интересно, все высказались, что они выполнили задание гораздо
быстрее с помощью клавиатуры.
Таким образом, нужно всегда принимать во внимание субъективные убеждения
пользователей о том, насколько быстрым или медленным является процесс. Не
принимайте решение на основе только своего собственного мнения. Тестируйте
программу на пользователях.
Основная стратегия уменьшения субъективного времени восприятия:
Пользователи должны быть постоянно заняты
Когда в процессе работы возникает неизбежная пауза, например, потому что
программа должна обратиться к серверу, убедитесь, что пользователь занят и
развлечен. Идеальное занятие – это занятие, имеющее отношение к текущей
задаче. Перед тем, как обращаться к серверу, дайте пользователю прочесть
что-нибудь, что подготовит его для следующей задачи.
Приемы для уменьшения субъективного восприятия
Индикаторы
Все приводимые указания зависят от использования индикаторов. Следующие
типы индикаторов приведены в порядке от наиболее до наименее желаемого:
1. Индикатор оставшегося времени. Поместите его либо в модальный диалог,
либо в строку статуса.
2. Индикатор “Система жива”. Когда оставшееся время предугадать
невозможно, покажите анимированный объект, который даст пользователям
понять, что система не зависла.
3. Индикатор “Слышу и понимаю”. Когда ожидаемая задержка менее 2 секунд,
показывать оставшееся время бессмысленно, поэтому просто измените
форму курсора на “песочные часы”.
Для задержек от 0,1 секунды до 10 секунд:
1. Подтвердите щелчок мыши или нажатие клавиши в течение 0,1 секунды.
2. Измените форму курсора на “песочные часы” или другой анимированный
указатель для любой задержки более 0,5 секунды.
3. Покажите, когда пользователь может продолжать.
Для задержек от 10 секунд до 1 минуты:
1. Подтвердите щелчок мыши или нажатие клавиши в течение 0,1 секунды.
2. Привлеките внимание пользователя
3. Укажите время ожидания точно или приблизительно.
4. Выведите индикатор
5. Покажите, когда пользователь может продолжать.
Для задержек от минуты до целой ночи:
1. Подтвердите щелчок мыши или нажатие клавиши в течение 0,1 секунды.
2. Привлеките внимание пользователя. Индикатор, который трудно заметить,
может и не существовать.
3. Сообщите пользователю, насколько долгим будет ожидание. Если не знаете
– предположите диапазон значений. Даже довольно широкого диапазона (от
3 до 15 минут) пользователю может быть достаточно для принятия решения
– переключиться на другую задачу, или же пойти попить кофе.
4. Выведите индикатор.
5. Четко и ясно сообщите пользователю, когда он может продолжать. Это не
значит, что вы должны вывести сообщение шрифтом 96 размера. Это
значит, что изменения на экране должны быть значительными, для того
чтобы их можно было визуально различить.
Принципы вежливости программ.
Профессора Стэндфордского Университета Клиффорд Насс (Clifford Nass) и
Байрон Ривз (Byron Reeves) занимались изучением реакции человека на
компьютер. Применяя классические методы социальной психологии, они
обнаружили в поведении людей нечто интересное. Результаты их работы,
опубликованные в книге "The Media Equation", показывают, что человек
реагирует на компьютер так же как на других людей. Из этого исследования
следует важный вывод: Если мы хотим, чтобы наша программа понравилась
пользователям, мы должны сделать ее поведение похожим на поведение
человека. Довольно просто, не правда ли?
Насс и Ривз утверждают что программы должны быть “вежливыми”, потому что
вежливость – это универсальный человеческий признак, - хотя действия,
которые можно считать вежливыми различаются от одной культуры к другой,
этот признак присутствует в любой культуре. Продукты производства с
высокими познавательными способностями, такие как программы, тоже должны
следовать этому правилу и быть вежливыми. Некоторые продукты высоких
технологий ведут себя так, как будто сказав “пожалуйста” или “спасибо”,
можно быть грубым, но это не вежливость.
Если программа скупа на информацию, скрывает результаты своей работу,
заставляет пользователя искать где находятся простейшие функции, и винит
его в своих собственных неудачах, то пользователю она точно не понравится.
Это произойдет независимо от “пожалуйста” и “спасибо”. Это также не зависит
и от того, насколько находчивой, представительной, метафоричной,
наполненной содержанием или персонализированной она будет.
Если же программа уважает пользователя и помогает ему, то она обязательно
ему понравится. И снова, это произойдет независимо от ее интерфейса;
интерфейс командной строки тоже будет нравиться, если он будет обладать
вышеуказанными качествами.
Что значит для программы быть дружественной и вежливой? Что значит для
программы вести себя подобно человеку? Торговцы “Гербалайфом” одеты в
красивые костюмы, широко улыбаются и полны впечатляющей информации, но
разве они нам нравятся? Человек склонен к ошибкам, медлителен и
импульсивен, но это не значит, что программа с такими качествами будет
считаться хорошей. Человек обладает множеством других качеств делающих его
хорошо подходящим для роли служащего – роли, которую выполняют большинство
программ.
Может ли компьютер “лгать” вам? Может ли компьютер сказать вам, что у вас
на счету “около 500$”? Может ли компьютер дать вам другой ответ, чем только
что кому-то еще? Если мы увеличиваем человечность, мы должны уменьшить
некоторую “компьютерность”, по крайней мере в сравнении.
Действительно, компьютер никогда не выдаст вам приблизительный баланс, но
тогда компьютер не увидит разницы между выдачей сообщения о том, что у вас
на счету “около 500$” за долю секунды, и точной суммы 503.47$ за 17 минут.
Более вежливая, более человечная программа сразу бы сообщила, что у вас на
счету “около 500$” а затем проинформировала бы вас, что даст более точный
ответ через несколько минут. Тогда выбор будет за вами – стоит ли тратить
время на дополнительную точность.
Человек обладает множеством качеств, которые делают его “вежливым”, но их
определения туманны и расплывчаты. Вот мой список того, что улучшает
качество взаимодействия как с другими людьми, так и с программами.
Вежливая программа интересуется мной. Мой друг всегда интересуется мной, и
моими предпочтениями. Он запомнит что я люблю, а что нет, чтобы в будущем
доставить мне удовольствие. Любой человек, предлагающий какие-либо услуги,
попытается запомнить имена и лица своих клиентов. Некоторым нравится, когда
их приветствуют по имени, некоторым нет, но каждому нравится, когда к нему
относятся в соответствии с его личными вкусами.
Большинство программ не знает ничего о том, кто ею пользуется.
Действительно, ни одна из программ на моем персональном компьютере не
помнит ни меня, ни моих привычек, несмотря на то, что только я и никто
другой постоянно, снова и снова пользуюсь ею.
Каждая программа должна стараться запомнить мои привычки, и в частности,
все, что я ей говорю. Программист считает реальный мир миром информации,
так что как только программе требуется какая-либо информация, она просто
требует ее от пользователя. Но бездумная программа забывает эту информацию,
считая что всегда может затребовать ее снова, если потребуется. Компьютеры
и так лучше всего подходят для хранения информации, так что забывать ее по
крайней мере невежливо.
Вежливая программа относится ко мне иначе, чем к другим. Любой хороший
представитель сферы услуг уважительно относится к своему клиенту. Он
понимает, что тот, кому он оказывает услуги - это его босс, и что бы босс
не хотел, он должен получить это. Когда владелец ресторана указывает мне на
столик, я считаю это предложением, а не приказом. Если я вежливо возражу, и
выберу другой столик в пустом ресторане, я ожидаю что меня немедленно там
разместят. Если хозяин отказывается сделать это, я скорее всего покину этот
ресторан и поищу другой, где мои желания имеют приоритет перед желаниями
владельца.
Вежливая программа предусмотрительна. Если я спрашиваю у служащего
аэропорта, через какой выход пройти на рейс 729, я ожидаю, что он не только
ответит на мой вопрос, но и даст мне важную информацию о том, что вылет
рейса 729 задерживается на 20 минут. Если делаю заказ в ресторане, должно
быть ясно, что мне также нужен нож, вилка, ложка, соль, перец, и салфетки.
Большинство программ не делает этого. Они лишь кратко отвечают на мои
вопросы, не пытаясь проявить предусмотрительность в отношении другой
информации, даже если она напрямую связана с моими целями. Если я попрошу
свой текстовый процессор распечатать документ, он никогда не сообщит мне,
что бумаги осталось мало, или что в очереди уже находятся 40 других
документов.
Вежливая программа обладает здравым смыслом. Хотя любой хороший ресторан
позволит вам побывать на своей кухне, но когда вы впервые входите в него,
официант, руководствуясь здравым смыслом, проводит вас в обеденный зал.
Большинство программ не делают различия между кухней и обеденным залом,
помещая рядом часто-используемые и никогда не используемые элементы
управления. В программе можно встретить пункты меню предлагающие простые,
безвредные функции рядом с чрезвычайными, отменить которые невозможно. Это
как если бы вас усадили за стол рядом с духовкой. Упомянутый ранее пример
"около 500$"- хорошая иллюстрация наличия здравого смысла в интерфейсе.
Вежливая программа предвосхищает мои нужды. Мой ассистент знает, что мне
нужна комната в отеле, когда я еду в другой город на конференцию, несмотря
на то, что я не говорил ему этого специально. Он знает, что мне нужна тихая
комната и заказывает ее без всякого напоминания с моей стороны. Он
предвосхищает мои нужды.
Мой web-браузер проводит большую часть своего времени в пустом ожидании,
пока я просматриваю загруженные страницы. Однако он может очень просто
предвосхитить мои потребности и подготовится к ним, вместо того чтобы
тратить время впустую. Почему бы не использовать это время, чтобы
предварительно загрузить страницы, ссылки на которые видны в окне. Вполне
вероятно, что я вскоре попрошу браузер загрузить ту или иную ссылку. Легче
остановить запрос, если он окажется ненужным, чем ждать его выполнения.
Вежливая программа отзывчива.
У меня на компьютере обычно установлено разрешение экрана 1024х768. Когда я
провожу презентации, мне необходимо временно сменить разрешение на 800х600
чтобы оно соответствовало низкому разрешению моего видео-проектора. Многие
из запущенных программ, включая Windows 95, реагируют на смену разрешения
изменением размера, формы и положения на экране своих окон. Однако когда я
меняю разрешение обратно, окна не возвращаются к своим размерам. Информация
об этом легко доступна, однако программа не заботится о моих очевидных
нуждах.
Вежливая программа умалчивает о своих проблемах. В баре, салоне и
психиатрическом кабинете бармен, парикмахер и доктор будут умалчивать о
своих проблемах и показывать интерес в ваших. Такова природа сферы
обслуживания. Программы тоже должны молчать о своих проблемах и
интересоваться вашими. Так как у компьютеров нет собственного “я” и чувств,
они отлично подходят для подобной роли, однако они обычно ведут себя
наоборот.
Программы всегда досаждают мне подтверждающими сообщениями и ненужными
строками состояний. Я не хочу знать, насколько трудна работа компьютера.
Меня не интересую затруднения программы в вопросе когда чистить “корзину”.
Я не хочу слышать ее нытье о том, что она не уверена, в какое место на
диске записать файл. Я не хочу слышать свист модема или наблюдать
информацию о скорости передачи данных, так же как я не хочу слышать о
разводе бармена, сломанном автомобиле парикмахера или алиментах доктора.
Из этого следуют два вывода. Программа не только должна молчать о своих
проблемах, но и должна уметь решать их сама.
Вежливая программа хорошо информирована. Когда я ищу информацию в Интернет
через поисковую машину, я не могу быть уверен, что не наткнусь на
неработающую ссылку. Я выбираю нужную мне ссылку и получаю противное
сообщение об ошибке “404 Link Not Found”. Разве поисковая машина не может
периодически проверять каждую ссылку? Если ссылка неверна, ее можно удалить
из списка, и мне не придется тратить время на ожидание ее загрузки.
Программы постоянно предлагают мне варианты выбора, которые, по разным
причинам, в данный момент недоступны. Программа должна знать это, и не
выводить их на экран.
Вежливая программа восприимчива. Я раскрываю на весь экран окно любой
запущенной программы. Затем я использую Панель Задач для переключения между
запущенными приложениями. Но программы, которые я запускаю, не замечают
этот факт. Я так часто максимизирую окна, что мои предпочтения должны быть
ясными и однозначными. Другие пользователи работают с программами в
маленьком окне, чтобы видеть Рабочий Стол. Так просто для программы понять
это и предугадать действия пользователя.
Вежливая программа уверена в себе. С другой стороны, если компьютер имеет
какие-то подозрения, что я могу ошибаться – что может быть всегда – он
должен предусмотреть это, и подготовиться к возможному восстановлению
файла, если я вдруг передумаю. В любом случае, программа должна быть
уверенной в своих действиях, а не перекладывать ответственность на меня.
Очень часто после длительной работы с документом я нажимаю кнопку “Печать”
и ухожу выпить чашечку кофе, пока документ распечатается. Затем я
возвращаюсь чтобы обнаружить посреди экрана бессмысленное и пугающее окно
диалога с вопросом “Вы действительно хотите печатать?” Такая неуверенность
просто приводит в ярость, и это антитеза вежливого поведения.
Вежливая программа не задает лишних вопросов. Невежливая программа задает
множество раздражающих вопросов. Когда выбор предлагают насильственно – это
тяжелое испытание.
Выбирать можно разными способами. Возьмем, к примеру, разглядывание витрин
магазинов. Мы обычно смотрим на витрины праздно, обдумывая, выбирая, или
игнорируя товары, которые нам предлагают. С другой стороны, иногда нам
насильственно предлагают выбор, как например на таможне: “У вас есть что-
нибудь нуждающееся в декларации?”. Если нас поймают, последствия могут
оказаться значительными. Но мы не знаем, что последует за этим вопросом.
Будут нас обыскивать или нет? Если мы знаем, что обыска не избежать, мы
никогда не будем лгать. А если мы знаем, что никакого обыска не будет, нас
будет одолевать искушение провезти лишнюю пачку Мальборо.
Вежливая программа является подстраиваемой.
Когда система ручной обработки информации переносится на компьютеры, что-
нибудь всегда теряется. Чаще всего система компьютеризируется для
увеличения объемов обрабатываемой информации, а не для изменения свой
функциональности. Однако системам работающим вручную присуща гибкость –
свойство, которое на так просто выделить среди остальных. Хотя
автоматизированная система ввода заказов может обработать в миллион раз
больше заказов, чем простой служащий, служащий всегда может подстроить
работу системы. В автоматизированной системе эта возможность исчезает. Нет
практически никакой возможности изменить работу той или иной функции. Я
называю эту способность человека действовать вне существующей схемы
обработки информации до того, как все необходимы реквизиты будут доступны
подстраиваемостью. Отсутствие это качества – одна из главных причин
нечеловечности компьютерных систем. Это прямое следствие модели воплощения.
Программисты не видят никакого резона в том, чтобы создавать промежуточные
состояния, потому что в компьютере они не нужны. Но пользователь должен
иметь возможность слегка “подправить” систему.
Одно из больших преимуществ подстраиваемой системы – уменьшение числа
ошибок. Допуская существование в системе временных маленьких ошибок и
доверяя человеку в том, что он позже исправит их, можно избежать более
серьезных ошибок. Однако большинство правил исходящих от компьютерных
систем направлены на то, чтобы не допустить этих маленьких ошибок. Эти
негибкие правила делают программу и человека соперниками, и поскольку
человеку не дают подстраиваться, чтобы избежать больших ошибок, он вскоре
перестает заботится о защите программы от более серьезных проблем. Когда
такие правила применяются к человеку, страдают обе стороны.
Подстраиваемость – одно из немногих качеств человека, связанных с
вежливостью, которое трудно встроить в компьютерную систему.
Подстраиваемость требует от интерфейса больших возможностей. Для того,
чтобы быть подстраиваемой система должна сделать свой внутренний процесс
доступным опытному пользователю. Служащий не сможет переместить документ в
начало очереди, пока он не будет четко видеть саму очередь, ее начало и
конец, документ и его положение в очереди. Далее ему должны быть доступны
инструменты для того чтобы вытащить документ из очереди и поместить его в
самое начало. Физическая реализация подстраиваемости требует специальных
средств для хранения записей в состоянии неопределенности, но похожие
средства требуются для операций отмены (undo). Настоящая проблема в том,
что подстраиваемость делает возможным мошенничество и злоупотребление.
Подстройку системы можно расченить как мошенничество. Технически это
нарушение правил. В реальном мире на это закрывают глаза, потому что это
специальный случай, и подразумевается что тот, кто “подстроил” систему
приведет все счета в порядок до конца рабочего для или данной работы. Все
подобные примеры должны конечно быть “подчищены” до того, как придет
проверка. Если бы процесс временной приостановки правил стал бы широко
известен, у людей появилось бы желание злоупотребить этим.
Можно привести множество рациональных и логичных причин не использовать
подстраиваемые системы. Но к несчастью, такое идеализированное состояние
дел не является точным описанием работы реального мира. Люди использует
подстраиваемость “ручных” систем во всех видах бизнеса чтобы удержаться на
плаву. Несмотря на все препятствия, наполнение автоматизированных систем
подобным качеством является жизненно важным вопросом.
Для предотвращения мошенничества можно воспользоваться возможностями
компьютера следить за всеми действиями пользователя и показывать эту
информацию специальному наблюдателю. Принцип здесь простой – позволить
пользователю делать все что он захочет, но подробно записывать все его
действия, так что ответственность остается.
Вежливая программа внушает доверие. Друзья доверяют друг другу, потому что
зависят друг от друга, и всегда готовы пожертвовать собой. Когда компьютеры
ведут себя совершенно неуправляемо и неохотно выполняют задания
пользователей, ни о каком доверии и речи быть не может. Я доверяю
банковскому служащему, потому что он улыбается мне, но я всегда
пересчитываю свои деньги после банкомата, потому что попросту не доверяю
тупой машине.
Программы раздражают нас не из-за недостатка возможностей, а из-за
отсутствия вежливости. Как показывает приведенный список характеристик, в
большинстве случаев сделать вежливую программу ничуть не труднее, чем
невежливую. Просто кто-то должен предусмотреть взаимодействие, имитирующее
качества чувствительного и заботливого друга. Ни одна из этих характеристик
не отличается от других, более очевидных целей информационного бизнеса.
Более человеческое поведение – самая очевидная цель из всех.
Дайте программе память
Если бы вы могли предугадать действия пользователя, смогли бы вы создать
лучший интерфейс? Если бы ваша программа могла знать, что именно
пользователь выберет в диалоговом окне, разве не могли бы вы избавиться от
него? Если бы был простой способ встроить в вашу программу предвидение,
разве вы не сделали бы этого?
Вы можете предугадать действия пользователя. Вы можете встроить в вашу
программу шестое чувство, которое точно подскажет ей следующее действие
пользователя. Все что вам нужно сделать - это дать программе память.
Когда я говорю о памяти, я не имею в виду ОЗУ. Я говорю о памяти, подобной
человеческой. Проще говоря, если ваша программа помнит последнее решение
пользователя, следующее решение она может сделать сама. Этот простой
принцип является одним из самых эффективных инструментов разработчика
программ, но в то же время одним из самых малоизвестных.
Вы можете подумать, что возится со всей этой памятью необязательно:
программист может быстро создать новое окно диалога, которое спросит у
пользователя некую информацию, которая не лежит на поверхности.
Программисты не видят в этом ничего плохого, потому что они не знают, что
людям не нравится, когда им задают вопросы.
Задавать вопросы - совсем не то же самое, что предлагать выбор. Это разница
между разглядыванием витрины и интервью. Кто бы не задавал вопросы, он
всегда находится в более высокой позиции, чем тот, кто отвечает. Начальники
задают вопросы своим подчиненным, и последние отвечают. Судьи задают
подсудимым вопросы, и те должны отвечать. Родители спрашивают детей, и они
должны говорить правду.
Программа, которая задает меньшее количество вопросов, кажется
пользователям умнее. Может быть, когда кто-то спрашивает вас о чем-то на
вечеринке, это вас развлекает и кажется интересным, но ни одна программа не
способна вести беседу с человеком. Программа может всего лишь задавать
педантичные вопросы, которые на той же вечеринке заставили бы вас быстро
покинуть такого собеседника.
Единственную вещь, которая не нравится пользователям больше чем вопросы,
это вопросы, которые задаются часто и без всякой необходимости. Вы хотите
сохранить этот файл? Вы хотите сохранить этот файл сейчас? Вы действительно
хотите сохранить этот файл? Вы уверены, что хотите напечатать это? Вы
уверены, что хотите печатать на этом принтере? Вы абсолютно уверены, что
хотите печатать? На помощь! Кто-нибудь избавьте меня от тупых вопросов этой
глупой программы!
А если пользователь не знает ответа на заданный ему вопрос, вдобавок к
раздражению он еще и чувствует себя глупым. Возьмем например такой обычный
вопрос: Вы хотите профессиональную установку или установку для новичков?
Другими словами, вы хотите то, чего не сможете понять или вам будет не
нужно, или же вы просто лопух?
Программа, эффективно использующая свою память, помнит все настройки
пользователя от одного запуска до другого. Например, она может запоминать
положение окон на экране, так что если я открыл документ на весь экран, при
следующем запуске программы он будет открыт точно также. Если я упорядочил
окна по вертикали, они могут быть упорядочены в следующий раз без моего
вмешательства.
Какие бы изменения в настройках программы я не сделал, они должны
оставаться в силе до тех пор, пока я не изменю их сам. Программа не должна
сбрасывать их при каждом запуске. Если пользователь игнорирует или
отключает какие-либо возможности программы, она не должны предлагать их
снова. Пользователь сам найдет их, когда они ему понадобятся.
Программа с хорошей памятью дает пользователю немало преимуществ. Память
уменьшает излишества. Излишество - это то, что я называю бесполезным
усилием, которое направлено на управление инструментом, а не работой. Если
поездка в заданное место - это нормальная работа, то нажатие на педаль газа
в вашем автомобиле - это излишество. Если ввод чисел в электронную таблицу
- нормальная работа, то упорядочивание окон - излишество. Если выбор имени
файла - нормальная работа, то сохранение его на диск - излишество.
Большинство излишеств может быть устранено с помощью простого запоминания
того, что делал пользователь в последний раз. Это значительное достижение в
проектировании пользовательских интерфейсов.
Большинство программ позволяют пользователю устанавливать значения по
умолчанию, но это не дает для большинства пользователей такого же эффекта,
как могла бы иметь память. Я использую Microsoft Word каждый день, поэтому
он уже тщательно отрегулирован в соответствии с моими предпочтениями, но
мой коллега использует Word от случая к случаю, и не намерен заниматься
изучением его настроек. Каждый раз при запуске программы ему приходится
вручную устанавливать нужный шрифт. Если бы только программа могла
запомнить его предпочтения, необходимось в этом отпала бы.
Программа с лучшей памятью может уменьшить количество ошибок пользователя.
Это происходит потому, что пользователю приходится вводить меньшее
количество информации. Остальная ее часть будет введена автоматически из
памяти программы.
Когда пользователю приходится сообщать программе излишние мелочи, либо
объяснять ей то, что он уже объяснял неделю назад, это отвлекает его от
настоящей цели работы, и заставляет его управлять программой. Это как если
бы кто-то пропустил свою остановку в метро, будучи слишком занятым поиском
поручня, чтобы держаться.
Связность задач может предсказать, что именно будет делать пользователь в
будущем со значительной, но не абсолютной вероятностью. Если ваша программа
основывается на этом принципе вы можете обнаружить, что думаете о
неопределенности ваших предсказаний. Если я могу надежно предсказать
действия пользователя в 80% случаев, это значит, что в 20% случаев я буду
неправ, потому что в каждом конкретном случае я не знаю, в 20 я или в 80
процентах. Может показаться, что это как раз тот случай, когда нужно
спросить пользователя, но это бы вернуло бы нас обратно в начало
рассуждений. Вместо предоставления выбора, программа должна продолжать
делать то, что она считает наиболее подходящим, вместе с тем давая
пользователю возможность изменить или отменить это. Если возможность отмены
достаточно легка и понятна, пользователь не будет беспокоится о ней. В
крайнем случае, ему придется отменять решение программы только в 2-х
случаях из 10, вместо того, чтобы иметь дело с излишним диалоговым окном 8
раз из 10.
Как только программист начинает понимать всю силу принципа связности задач,
в процессе разработки программ происходят значительные изменения.
Разработчики программ начинают думать в совершенно новом направлении.
Бездумный процесс создания еще одного диалогового окна заменяется более
продуманным и аккуратным, в котором разработчик начинает задавать себе
вопросы типа: сколько чего должна помнить программа? что именно должно
запоминаться? Должна ли программа запоминать больше, чем просто последний
вариант настройки? Он начинает представлять себе такие ситуации: например,
пользователь принял одинаковый формат даты в 50 ячейках, а затем вручную
ввел дату в другом формате. Какой формат должна использовать программа в
следующий раз, когда пользователь введет дату? Тот, который введен 50 раз,
или же последний? Сколько раз должен быть задан новый формат, прежде чем он
станет форматом по умолчанию? Хотя здесь есть неоднозначность, программа
все равно не должна спрашивать пользователя. Она должна использовать свою
инициативу, чтобы сделать подходящее решение. Пользователь может всегда
изменить его, если оно не верно.
Вопросы такого типа вскоре порождают другие, например, как информировать
пользователя о решении, которое приняла программа. Если программа сохраняет
файл на диске без обсуждения этого с пользователем, как он может узнать об
этом? Когда разработчики программ начинают задавать себе подобные вопросы,
это значит, что они начинают создавать программы для пользователей, а не
для программистов.
Одна из главных причин того, что программы так сложны в использовании, это
то, что их разработчики приняли рациональные, логические решения, которые,
к сожалению, оказались неверными. Они посчитали, что поведение
пользователей случайно и непредсказуемо, поэтому программа должна постоянно
прерывать их работу для выяснения правильного направления действий. Хотя
поведение человека не так определенно, как у компьютера, оно редко бывает
случайным. В следующий раз, когда вы обнаружите, что программа спрашивает
вашего пользователя о чем-то, задайте этот вопрос ей самой.
Проверка на пользователях
Половина процесса разработки - это анализ и создание; вторая половина -
получение обратной связи, и применение полученной информации.
Если вы хотите быть уверенным что ваша программа понравится пользователям,
собирайте мнения потенциальных пользователей во время процесса разработки.
Тестирование на пользователях даст вам наиболее верную информацию. Так же
как и в визуальном дизайне существуют люди, чья профессиональная работа -
проводить тестирование на пользователях. Если вы сможете привлечь
специалиста по usability или human factors - это замечательно. Если нет,
учитесь проводить тесты самостоятельно.
Тестирование на пользователях это не обсуждение дизайна с пользователями. В
тестировании вы предлагаете пользователю выполнить определенное задание на
некоторой версии вашей программы (рисунок одного окна, бумажный прототип,
или рабочая система). Затем вы должны молча наблюдать за тем, что
происходит. Вы можете даже снять весь процесс на видео или просто делать
заметки.
Тестируя бумажные прототипы на нескольких разных пользователях, вы можете
выявить множество серьезных usability-проблем еще до того, как приступите
к кодированию. Тестируя готовую программу до ее официального выпуска вы
можете найти и подчистить небольшие проблемы, которые могут стать причиной
раздражения пользователя.
Запомните - все системы тестируются на пользователях. Вопрос только в том,
хотите ли вы, чтобы это случилось когда вы еще можете исправить найденные
проблемы. Думайте о тестировании как о способе получить новую информацию.
Наблюдение пользователей в процессе тестирования вашей программы это самый
лучший и самый дешевый способ образования.
Страницы: 1, 2, 3
|