Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Реферат: Взаимодействие человека и компаРеферат: Взаимодействие человека и компаСОДЕРЖАНИЕ (вместо ведения) Homo sapiens и компьютеры : кто кем управляет ? Часть первая. «Создатели». Часть вторая. «Создателям» Нужен ли нам специальный метод разработки пользовательского интерфейса? Пользовательский интерфейс. Заметим обычные ошибки. Лишний выбор. Отрицательная обратная связь. Выясняем, чего ожидают пользователи. Как выяснить, какова пользовательская модель программы?Будьте последовательныЗаимствуйтеБритва ОккамаВидимость отражает полезностьОбратная связьПроизводительность компьютера против производительности человекаПроизводительность человекаТри операции, которые можно упроститьУменьшение числа манипуляцийУменьшение необходимости ввода данныхОграничение принятия решенийУменьшайте субъективное время восприятияПользователи должны быть постоянно занятыПриемы для уменьшения субъективного восприятияПринципы вежливости программ. Проверка на пользователях
1 Список используемой литературы: Дайте программе память Alan Cooper 14 принципов создания вежливых программ Alan Cooper Как создать хороший интерфейс пользователя? Laura Arlov Максимум производительности Bruce Tognazzini Миф о метафоре Alan CooperОстановите сообщения об ошибках! Аlan Cooper Пользовательский интерфейс Михаил Донской
Примерное
содержание
технического
задания Андреев В.Н.
Улетный
интерфейс Программистам
о разработке
пользовательских
интерфейсов.
|
Каждый
раз, предоставляя
пользователю
выбор, |
Просить пользователя принять решение само по себе не так плохо. Свобода выбора - это замечательно. Проблема возникает, когда этот выбор им не нужен. В случае файла справки люди обращаются к нему, когда им нужно что-то сделать, но они не знают как. Например, создать приглашение на день рождения. Это занятие может быть прервано тем, что они не знают, как перевернуть картинку с воздушным шариком вверх ногами, или что-то еще, поэтому они обращаются за помощью к файлу справки. И вот теперь какой то программист-системы-индексного-поиска в Microsoft с идеей собственной значимости имеет наглось еще раз прерывать пользователя и начинать учить его, как создаются списки (или базы данных).
И уж поверьте мне, пользователи заботятся о гораздо большем количестве вещей, чем вы можете думать. Они используют вашу программу для выполнения какой-то задачи. Они заботятся об этой задаче. Если это графическая программа, они наверняка хотят контроллировать каждый пиксел для получения лучшего результата. Если это программа для создания web-сайтов, вы можете быть уверены, что они жаждут сделать свой сайт именно таким, каким они хотят его видеть. Но они не заботятся о том, где находится тулбар программы – сверху или снизу, они не заботятся, индексирован ли файл справки или нет. Они не заботятся о многом другом, и в этом и состоит ответственность дизайнера сделать этот выбор за них.
Когда в 1990 г. был выпущен Microsoft Excel 3.0, это была первая программа с новым интерфейсным решением – панелью инструментов (toolbar). Это было интересное решение, которое нравилось людям, и каждый стал его копировать – до такой степени, что сейчас уже непривычно видеть программу без панели инструментов. Успех панели инструментов вдохновил разработчиков Excel на исследование с использованием специальной версии программы, котороую они распространили среди узкого круга людей. Эта версия отслеживала наиболее часто используемые команды и передавала эту информацию в Microsoft. Поэтому в следующюю версию Excel был добавлен еще один ряд кнопок на панели инструментов, на этот раз содержащий большинство часто используемых команд. Великолепно.
Но проблема заключается в том, что создатели панели инструментов не знали, когда следует остановиться. Они хотели позволить пользователям настраивать панель инструментов. Они хотели дать пользователям возможность перемещать панель инструментов по экрану. Затем они подумали о том, что меню – это не что иное как панель инструментов, с надписями вместо иконок, поэтому они дали пользователям возможность перемещать меню по экрану. Проблема: кому это надо? Я ни разу не встречал человека, который бы хотел расположить меню в каком либо другом месте, кроме как сверху. Но вот каковы последствия: если вы случайно чуть-чуть промахнетесь мимо пункта меню Файл и двинете мышкой, вы вытащите панель с меню туда, где бы вы меньше всего хотели её видеть – блокируя документ, над которым работаете.
Сколько раз вы видели это? И если это произошло по ошибке, не так то просто догадаться что вы сделали не так, и как это исправить. В итоге существует возможность (двигать меню), которая никому не нужна (хорошо, пускай она нужна 0.1% всех людей), но которая мешает практически каждому.
Однажды мне позвонила моя знакомая и попросила помочь ей с проблемой отправки e-mail. Она сказала «Половина моего экрана - серая».
Половина экрана серая?
За пять минут выяснения, что же все-таки произошло : она случайно перетащила панель задач Windows к правому краю экрана, а затем случайно расширила её.
Такие вещи никто не делает специально. И множество пользователей просто не могут с этим справиться. По определению, если вы случайно перенастроили какую-нибудь опцию в программе, вы не знаете, как вернуть ее обратно. Это просто кошмар, как много людей деинсталлируют а затем заново устанавливают программу, когда что-то идет не так, потомучто по крайней мере это они умеют.
Каждый раз, предоставляя пользователю выбор, вы просите его принять решение. Это не обязательно плохо, но все же вы должны всегда пытаться минимизировать количество решений, которые должен принять пользователь.
Это не значит, что надо избавиться от всех случаев выбора. Для пользователя есть достаточно решений, которые он должен принять в любом случае: как будет выглядеть документ, как будет работать веб-сайт, и т.д. В этих случаях, сходите с ума: это здорово давать людям выбор, любыми способами, чем больше, тем веселее. И есть еще одна категория, когда людям нравится выбирать – возможность изменить внешний облик программы, не меняя ее поведения. Все нравятся «скины» в WinAmp, каждый устанавливает себе картинку на рабочий стол. Так как этот выбор оказывает влияние только на внешний вид программы, не меняя ее функциональность, это хорошой способ дать людям выбор.
2.Отрицательная обратная связь.
Когда пользователь видит на экране сообщение об ошибке, он чувствует себя так же, как будто кто-то громким голосом и в снисходительном тоне сказал ему "Это серьезная ошибка, приятель. Что за ерунду ты ввел?". Пользователям это очень не нравится! Программы, работающие таким образом, имеют чрезвычайно плохой интерфейс. Однако, большинство программистов на это просто пожимают плечами, продолжая создавать окна сообщений об ошибках. Они просто не знают, как создавать надежные программы.
Первые компьютеры были маломощными и дорогими. Операторами этих машин были ученые в белых халатах, которые понимали, что нужно процессору, и не обижались, увидев сообщение об ошибке. Они знали, насколько сложна работа компьютера. Они не имели ничего против появления сообщения типа " Abort, Retry, Fail?" или др. Так зародилась традиция отношения программы к человеку, как к процессору. С самого начала развития компьютерной техники программисты уяснили, что самый верный способ взаимодействия программы с пользователем - это требование от него ввода данных и выражение недовольства, когда пользователь не смог достичь уровня совершенства процессора.
Примеры такого силиконового ханжества встречаются везде, где программа вынуждает пользователя действовать так, как это нужно ей, вместо того, чтобы адаптироваться к нуждам человека. Силиконовое ханжество - это цикл отрицательной обратной связи, в котором программа игнорирует пользователя, когда он делает то, что она хочет, и кричит на него при малейшем отклонении.
Силиконовое ханжество необходимо для взаимодействия внутри программы. Каждый хороший программист знает, что если модуль А передал ошибочные данные модулю В, то последний должен сразу же отбросить эти данные, сгенерировав подходящее сообщение об ошибке. Отсутствие такого взаимодействия указывает на серьезную ошибку в проектировании модулей. Но люди - не модули программы. У людей есть эмоции и чувства - у компьютеров их нет. Когда один кусок кода отклоняет ввод другого, последний не хмурится и не страдает. Процессору все равно, даже если вы выключите компьютер. Но у людей-то эмоции есть, и они могут легко выйти из под контроля. Когда вы предлагаете что-то коллеге по работе и он говорит вам "Заткнись, это глупо!", это задевает ваши чувства. Вы начинаете думать, что вас не так поняли. Вы смотритесь в зеркало - все ли у вас в порядке с зубами и т.д. Все эти действия - часть человеческой натуры.
Однако на позитивную обратную связь люди реагируют очень хорошо. Представьте себе, что всякий раз, когда программа смогла понять информацию, введенную пользователем, она показывает некий индикатор успешного завершения процесса. Если программа не может найти смысл во введенной информации, она никак не реагирует, что указывает на ошибку. "Если не можешь сказать ничего хорошего, лучше молчи".
Одна из причин того, почему программы так трудны в обучении - отсутствие позитивной обратной связи. С позитивной обратной связью люди учатся лучше. Люди хотят эффективно использовать свои программы. Они не хотят, чтобы программа била им по рукам в случае ошибки. Человеку нужно вознаграждение, или по крайней мере, уведомление в случае успеха.
Сторонники негативной обратной связи могут привести множество примеров ее эффективности для руководства людьми. Эти примеры верны, но почти всегда негативная обратная связь нужна, чтобы удержать людей от того, что они хотят сделать, но не должны. Но когда дело касается того, что люди хотят сделать, лучше всего связь позитивная. Представьте себе лыжного инструктора, который кричит на вас или официанта в ресторане, который громко объявляет, что ваша кредитная карточка недействительна.
Помните, что мы говорим о недостатках негативной обратной связи от компьютера. Негативная обратная связь от другого человека, хотя и неприятна, может быть оправдана в определенных обстоятельствах. Слышать от программы, что вы сделали ошибку - унизительно. Пользователям не нравится быть униженными. Ничто из того, что происходит в компьютере, не может быть достаточной причиной для оправдания унижения человека. Ничто. Не имеет значения то, насколько важна для вас целостность базы данных, она не стоит того, чтобы оскорблять пользователя. Если целостность данных такая важная вещь для вас, вы должны позаботиться о методах ее поддержания без унижения пользователя.
Вот три основных способа избежать сообщений об ошибках:
Делайте ошибки невозможными
Закладывайте позитивную обратную связь
Проверяйте, не редактируйте
Наилучший способ избежать сообщений об ошибках это сделать так, чтобы пользователь не смог их совершить. Вместо требования ввести данные с клавиатуры, предоставьте пользователю список возможных вариантов выбора. Еще один прекрасный способ избежать сообщений об ошибках - это сделать программу достаточно умной для того, чтобы избежать вопросов к пользователю. Многие сообщения об ошибках говорят что-то вроде "Неверные данные. Пользователь должен ввести ХХХХ". Почему же программа не может, зная, что должен ввести пользователь, ввести ХХХХ сама? Вместо запроса у пользователя имени файла на диске, давая возможность выбрать несуществующий файл, программа может запомнить, с какими файлами велась работа последний раз, и предоставить их список.
Позитивная обратная связь - хороший способ вознаградить пользователя за правильное пользование программой. Наилучший способ позитивной обратной связи это звук. К несчастью, долгие годы окна с сообщениями об ошибках сопровождались громким и пронзительным гудком, и звук стал ассоциироваться с ошибкой. Этот звук - публичное клеймо ошибки пользователя. Он громко объявляет всем в пределах слышимости, что вы только что сделали нечто глупое. Все то же силиконовое ханжество создало неоспоримую веру в голове большинства разработчиков программ, что звук является плохим признаком, и никогда более не должен считаться частью дизайна интерфейса. На самом деле это не так.
В реальной жизни любой объект или система, за исключением компьютерных программ, используют звук для позитивной обратной связи. Закрывая дверь, мы определяем, что она защелкнулась, услышав щелчок, тишина означает, что дверь еще не закрыта. Когда мы говорим с кем-либо и они отвечают "Ага" или "Да-да" мы знаем, что наши слова до них доходят. Когда они молчат, значит мы говорим неубедительно. Наши программы должны давать нам постоянные небольшие звуковые подсказки, похожие на тихие щелчки кнопок клавиатуры. Наши программы были бы более дружественными и простыми в использовании, если бы они издавали едва заметные, но легко узнаваемые звуки, когда действия пользователя верны. Программа может выдавать мягкий звук каждый раз, когда пользователь ввел верное значение. Если программа не понимает введенную информацию, она молчит. В этом случае пользователь может сразу скорректировать данные безо всякого смущения. Когда пользователь начинает перетаскивать иконку, программа может коротко щелкнуть, а во время движения объекта производить тихое шипение. Когда объект находится над областями, где его нельзя оставить, звук меняется на что-нибудь более неблагозвучное. Когда наконец пользователь отпустит кнопку мыши, он будет вознагражден тихим "Да!", если действие завершено успешно, и тишиной из динамиков, если действие не имеет смысла.
Некоторые люди часто оспаривают этот аргумент, говоря, что пользователи не любят звуковую обратную связь, что они обижены звуками, издаваемыми компьютером, и что они им не нравится, когда компьютер гудит и пикает на них. На это я скажу, что поведение людей обусловлено следующими установками:
Компьютеры всегда производят звуки, когда программа выдает сообщение об ошибке
Компьютерные звуки обычно громкие, монотонные и неприятные
Если дать людям выбор между звуком и его отсутствием в качестве негативной обратной связи, они выберут первое. Если им дать выбор между отсутствием звука и неприятными звуками для позитивной обратной связи, они сделают выбор, основываясь на личных пристрастиях и вкусе. Если же дать людям выбор между отсутствием звука и мягким и приятным звуком для позитивной обратной связи, почти все выберут звук. Мы никогда не давали нашим пользователям шанса попробовать высококачественную звуковую положительную обратную связь в наших программах, так что неудивительно, почему люди ассоциируют звук с плохим интерфейсом.
Звуковая обратная связь должна быть очень тихой, не громче чем звук нажатий клавиш на переносном компьютере. Программа должна производить звук каждый раз, когда пользователь работает с программой правильно или каждый раз, когда пользователь вводит информацию, которую программа понимает. Пользователи быстро начнут зависеть от этих звуков, и начнут работать более быстро и эффективно.
Без сомнения, все эти решения потребуют от программистов большей работы. Это нисколько меня не волнует. Я не хочу, чтобы программисты больше работали, но, выбирая из сложности работы программистов и сложности работы пользователей, я немедленно заставляю программистов работать. Работа программиста - удовлетворить пользователя, а не наоборот.
Еще один метод избежать сообщений об ошибках для программы, когда пользователь вводит неправильные данные, состоит в том, чтобы принять, что они неправильные, потому что программа, а не пользователь, плохо информирована.
Если, например, пользователь вводит счет-фактуру для несуществующего номера клиента, программа может принять эти данные, и сделать себе специальную заметку, которая показывает, что пользователь должен исправить ее. Затем она будет наблюдать, чтобы удостовериться, что пользователь ввел необходимую информацию до конца отчетного периода. Так в действительности работают большинство людей. Они не вводят "неверных" номеров. Просто люди обычно вводят информацию в такой последовательности, которую программа принять не может.
Но если вы настаиваете, я признаю единственную ситуацию, когда сообщение об ошибке допустимо: Когда ваш принтер горит.
Выясняем, чего ожидают пользователи.
Когда новый пользователь садится за программу, он не начинает работать с ней "с пустого листа". У него уже есть определенные представления о том, как будет работать программа. Если он уже работал с подобной программой, он будет думать что и эта программа будет работать точно также. Если они вообще хоть раз работали с компьютерными программами, они будут ожидать, что и эта программа будет следовать определенным принципам. Они могут догадываться о том, как работает инфтерфейс. Это называется моделью пользователя: это его собственное понимание того что делает программа.
У программы тоже есть своя "модель", только что она закодирована битами и предназначения для исполнения процессором. Она называется "программной моделью". Как мы уже знаем их первой главы, если программная модель соответствует модели пользователя, то интерфейс программы можно считать удачным.
Вот один из примеров. В Microsoft Word (как и в большинстве других текстовых редакторах) когда вы вставляете картинку в документ, она встраивается в файл документа. Вы можете создать картинку, перетащить ее в документ, затем удалить первоначальный файл с картинкой, но она все равно останется в документе.
Однако язык HTML такого делать не позволяет. В HTML-документе изображения хранятся в отдельных файлах. Если посадить пользователя, до этого работавшего только с текстовыми редакторами, и ничего не знающего об HTML, за современный визуальный HTML-редактор типа FrontPage, то он наверняка решит, что все изображения будут храниться в этом же файле. Назовите это инерцией модели пользователя, если хотите.
В итоге мы приходим к конфликту между моделью пользователя (изображение будет встроено) и программной моделью (изображение должно находиться в отдельном файле), а источником проблем является пользовательский интерфейс.
Если вы разрабатываете такую программу, как FrontPage, вы только что нашли свою первую интерфейсную проблему. Вы не в силах изменить сам формат HTML. Тем не менее что-то должно состыковать программную модель с моделью пользователя.
У вас есть два варианта. Можно попытаться изменить модель пользователя. Но, оказывается, что это очень трудно сделать. Можно поместить объяснение в файл справки, но все знают, что пользователи его не читают. Можно вывести маленькое окошко с сообщением поясняющее, что изображение не будет встроено в документ, но здесь тоже есть проблемы: сообщение будет раздражать опытных пользователей, а кроме того пользователи не читают то что написано в окнах сообщений (мы поговорим об этом позже, в шестой главе).
Итак, если гора не идет к Магомету, то придется изменить программную модель. Например, при вставке изображения в документ можно помещать его копию в папку с документом, так что это будет по крайней мере соответствовать копированию (а оригинал можно спокойно удалить).
Оказывается это довольно легко сделать. Просто спросите у самих пользователей! Выберите пять разных сотрудников вашей фирмы или друзей и расскажите им в общих чертах, что делает ваша программа
Вам даже не нужна специальная usability-лаборатория - можно просто взять первого попавшегося человека и провести с ним небольщой usability-тест. Только не расказывайте им раньше времени как все работает. Попросите их "думать вслух" и задавайте открытые вопросы, пытаясь выяснить, какова их пользовательская модель.
На картинке ниже показан экран компьютера Макинтош, изображающий две открытых "книги" Excel (Spreadsheet1 и Spreadsheet2), и один документ Word (Document 1). Любой пользователь, не знакомый с этой программой, подумает, что все окна независимы, ведь они выглядят независимыми:
Согласно модели пользователя, щелчок на окне Spreadsheet1 должен сделать его активным. Но на самом деле активным становится окно Spreadsheet2:
Оказывается, что программная модель MS Excel предполагает наличие "невидимых" листов, к которым как бы прикреплены окна документов. Когда вы делаете Excel активным приложением, все его окна тоже появляются сверху остальных.
Невидимые листы? Какова вероятность того, что модель пользователя включает в себя концепцию "невидимых листов"? Наверное около нуля. Таким образом пользователи ранее не работавшие с этой программй будут удивлены таким поведением.
Довольно трудно привести в соответствие программную и пользовательскую модели, даже когда они просты. Когда же они становятся сложными, это еще сложнее. Так что используйте самую простую модель.
Представьте себе, что каждый компьютер производители будут снабжать клавиатурой с оригинальной раскладкой клавиш. За ними невозможно будет работать - пользователи привыкли к QWERTY и ЙЦУКЕН. То же касается и программ. Для похожих функций нужно использовать и похожие формы. Иначе программа будет для пользователя одним большим сюрпризом...
Что именно? Да все! Если пользователь привык к чему-либо, он быстрее научится работать и будет получать больше удовольствия от работы с вашей программой, так как сможет использовать приобретенные навыки. Базовое заимствование - это использование стандартных элементов, общих для всех программ Windows - меню, списки, кнопки и т. п. Более тонкое - заимствование популярной метафоры. Только делать это надо осторожно.
Взгляните на интерфейсы коммуникационной программы Trio Communication и записной книжки Lotus Organizer. Trio выглядит как настоящий телефон, а Organizer - как настоящая записная книжка. Только почему-то первой пользоваться можно с большим трудом, а вторая программа легка и понятна. Почему? Авторы Trio переделали все элементы управления на свой лад. Программа разукрашена до такой степени, что на обучение работе с ее оригинальным интерфейсом уходит масса усилий. Organizer же для стандартных функций использует стандартные средства.
Не
возбраняется
заимствовать
внешний вид,
команды, удачные
интерфейсные
решения и т. п.
Хотите встроить
в свою программу
табличный
редактор? Лучше
всего, если он
будет похож
на Excel. Вы убьете
этим сразу двух
зайцев:
а) пользователю
не надо будет
тратить время
на обучение
работе с редактором;
б) человек вообще
чувствует себя
комфортнее
рядом с чем-то
знакомым. Заметьте
- на всех концертах
зрители всегда
ждут от исполнителя
старых, хорошо
знакомых и
таких любимых
песен.
Еще один плюс: этот способ позволяет легко добиться последовательности в интерфейсе. В общем - то, что доктор прописал.
Этот философский принцип гласит: "Не множить сущности без надобности". Или, как говорят американцы, Keep It Simple, Stupid. На языке интерфейсов это означает, что:
любая задача должна решаться минимальным числом действий;
логика этих действий должна быть очевидной для пользователя;
движения курсора и даже глаз пользователя должны быть оптимизированы.
Метод drag'n'drop - перетащи-и-оставь - хорошая иллюстрация этого принципа. Это абсолютно естественное действие, выполняемое одним движением мыши, с великолепной оптимизацией движений курсора и глаз просто по определению. Сам его очень люблю и стараюсь использовать везде, где это возможно.
Самая важная информация и элементы управления должны быть на виду, легко доступными, а менее важная - прятаться где-нибудь в меню. Интерфейс программы должен быть построен вокруг объектов, с которыми манипулирует пользователь, и отражать состояние текущего объекта. Хороший пример - панели управления в Corel Draw 8.0. Они постоянно меняются в зависимости от того, с каким объектом в данный момент работает пользователь.
Пользователь должен всегда видеть, чем сейчас занимается программа или к чему привело его действие. Если произошла ошибка, сообщение о ней должно объяснить пользователю, что именно произошло и как это исправить. Например, вот так.
Существует две разных производительности - производительность компьютера и производительность человека. Производительность компьютера – широко известное техническое понятие и для ее увеличения существует множество методов. Увеличение производительности компьютера ускоряет все процессы, повышает эффективность их выполнения и уменьшает стоимость одной операции.
Увеличение производительности компьютера обычно приводит к увеличению производительности человека, но есть и исключения. Во-первых, для этого нужно увеличить производительность всего компьютера, а не только одной его части. За последние 20 лет сложилась странная ситуация - в то время как мощность компьютеров увеличилась в несколько тысяч раз, скорость работы пользователя в некоторых случаях даже замедлилась из-за непомерно раздутых операционных систем и программ. (В 1978 году мне требовалось три с половиной минуты, чтобы загрузить систему и приложения с кассетного магнитофона на мой Apple II. Сейчас мой Maк загружается пять минут).
Во-вторых, есть разница между производительностью человека и естественным желанием инженеров увеличить производительность компьютера. Например, производительность работы человека увеличивается, если все необходимые данные находятся “под рукой”, т.е. не нужно тратить время на их загрузку. Один из методов решения этой проблемы - предварительная загрузка данных. Так как заранее неизвестно, какие именно данные потребуются, может возникнуть необходимость загрузки большого объема данных, которые никогда не будут использованы - вот вам и противоречие между производительностью человека и компьютера.
К счастью, существует много способов повысить производительность человека, не затрагивая аппаратную часть компьютера.
Существуют два метода, которые ведут к значительному увеличению производительности человека:
Полное отстранение пользователя от работы. Этот метод наиболее эффективен, и сводит стоимость работы к нулю.
Эффективное использование времени пользователя
Хотя с этими методами никто не спорит, применение их на практике может оказаться не таким уж простым делом. Для этого требуется аккуратный анализ и желание принести в жертву время и даже производительность компьютера. Далее мы обсудим способы применения этих методов.
Работая на компьютере, пользователи выполняют три основных операции:
Принимают решения на основе информации, касающейся текущей задачи
Собирают данные, необходимые для выполнения текущей задачи
Манипулируют компьютером с помощью элементов управления
Например, пользуясь автомобилем, пользователи вначале решают, куда они хотят ехать. Затем они находят информацию, необходимую для формирования маршрута, например карту дорог. Наконец, они манипулируют рулевым колесом, педалями акселератора и тормоза, тем самым давая машине постоянные инструкции для выполнения задания. Причем эта последовательность не является жестко заданной. Неотложные ситуации могут служить причиной для изменения маршрута, запроса новой информации и т.д.
Современная домашняя швейная машинка является более сложным механизмом, чем автомобиль. Например, пользователь решил сделать определенный шов. Вместо того, чтобы непосредственно управлять машиной, как это было в случае с автомобилем, для большинства действий пользователь использует колесо с ручкой. Выбор определенного типа шва представляет собой решение пользователя о том, в каком случае одежда будет выглядеть наиболее привлекательно. Само колесо управления содержит информацию, необходимую для принятия данного решения. Манипуляции пользователя сводятся к передвижению ткани, тогда как машина двигает иглу.
Если рассмотреть каждый из этих шагов, уменьшая количество решений, которые необходимо принимать человеку, позволяя компьютеру самому собирать данные, и уменьшая количество манипуляций, необходимых для достижения цели, то производительность человека при работе с компьютером значительно увеличится. Давайте рассмотрим эти шаги в обратном порядке.
Представьте себе современный фотоаппарат. Единственное решение, которое необходимо принять обычному его пользователю – выбор объекта, который нужно сфотографировать. Это объясняет большую популярность таких аппаратов, которые сами проводят необходимые настройки, чтобы фотография получилась хорошо освещенной и правильно сфокусированной.
Программы часто демонстрируют такую же механическую сложность, как и реальные механизмы, требуя, чтобы пользователь служил им, а не наоборот. Любой, кто хотя бы раз обновлял системное программное обеспечение, знает, насколько сложной может быть эта задача, хотя для этого пользователю не нужно принимать практически никаких решений.
Что можно вынести из этого примера? Разделяйте все операции на “манипуляции с механизмом”, и более абстрактные, сообщающие машине то, чего она знать не может.
После этого:
Уменьшайте число манипуляций, насколько это возможно. Действительно ли необходимо второе окно, или же задание можно выполнить с помощью одного? Действительно ли здесь требуется нажатие на клавишу? Можно ли выполнить это задание за один шаг, а не за два?
Сделайте оставшиеся манипуляции подходящими к пользовательской модели задачи. Избегайте требования от пользователя мысленного преобразования задачи в форму, приемлемую для машины. Вместо этого предложите наиболее естественный способ управления.
Следующие методы могут увеличить производительность ввода данных, уменьшая количество необходимой для ввода информации:
Автоматически заполняйте поля новой записи значениями предыдущей.
Минимизируйте, либо полностью устраните необходимость ввода информации. Можно ли получить информацию на основе логического вывода? Действительно ли данная информация необходима для выполнения этой задачи?
Исследуйте другие способы получения информации.
Первый метод наиболее эффективен, когда ранее введенная информация может быть использована еще раз. В противном случае все сбереженное время сойдет на нет, когда пользователь будет сравнивать старые значения с новыми.
Этот метод зависит от доступности необходимой информации. На первый взгляд, для Интернета с его медлительностью, это может показаться неприменимым. Как могут быть тысячи записей доступны в любой момент на удаленном клиентском компьютере? К счастью, в большинстве случаев этого и не требуется. Все что пользователю необходимо знать – есть данная информация вообще или нет. Если есть, пользователь может уточнить то, что ему нужно. Во время этого процесса у системы, скорее всего, будет достаточно времени для передачи информации в фоновом режиме.
Второй подход, минимизация ввода информации, может быть довольно сложным для применения по довольно неожиданной причине. Как только большинство клиентов поймет, что новая система может сберечь их время и деньги, они попытаются уменьшить ее эффективность насколько это возможно, тем самым получая обратно свое время и деньги. Они делают это не потому, что действительно хотят работать с неэффективной системой, просто они вдруг понимают, что теперь могут позволить себе потратить время на сбор дополнительной, вторичной информации.
Третий подход, получение информации другими способами, требует значительных усилий. Например, можно вводить информацию с бумажных форм в компьютер, используя сканер и программу оптического распознавания текста. Однако в зависимости от чистоты и избыточности поступающей информации, такой способ может потребовать больше ручной работы, которую он и призван уменьшить.
Но вернитесь на шаг назад. Откуда поступают эти бумаги? С другого компьютера? Подумайте, как полностью избавиться от бумажного этапа.
Необходимость принятия решений можно снизить следующим образом:
Не воспринимайте пользователя как “свод правил”. Не заставляйте его всего лишь сообщать о принятых решениях.
Внимательно оценивайте каждое решение, чтобы убедиться в его необходимости.
Быстро и точно предоставляйте пользователю информацию, необходимую для принятия решений.
Избавляйтесь от ненужной информации.
Визуально выделяйте наиболее вероятные варианты ответа.
Многое из того, что часто принимают за принятие решений, на самом деле является сообщением о решении. Большинство операций такого рода можно заменить машинами, полностью удалив оператора из процесса.
На втором шаге удостоверьтесь, что оставшиеся решения действительно относятся к задаче пользователя, а не машины. Если пользователь должен решить, выполнять запрос или нет - это относится к задаче. Но решение о том, какой метод использовать для выполнения запроса - А или Б, лучше оставить машине.
Большинство разработчиков не советуют ограничивать пользователя единственным способом выполнения задачи. Действительно, свобода графического интерфейса заключается в том, что разработчик создает среду, а пользователь решает, как ее использовать. Стены лабиринта должны быть убраны в пользу открытых мест со следами предыдущих путешественников.
Цель такого подхода – предоставить пользователям выбирать наиболее удобный для них способ работы. Этот метод значительно отличается от ситуации, когда пользователь, достигнув очередной развилки на дороге, постоянно решает куда повернуть теперь.
Третий шаг – удостовериться, что пользователю предоставлена вся необходимая информация для принятия решения. Часто можно видеть, что программа задает пользователю вопрос, на который он не может ответить, не обратившись за информацией куда-то еще. Такая программа скорее всего никогда не тестировалась на пользователях; разработчики посчитали, что раз они знают ответ, то и все остальные тоже знают его.
Четвертый шаг, удаление избыточной информации, очень важен. Множество web-страниц сегодня изобилуют ссылками. Да еще и сами браузеры содержат большое количество кнопок и меню. Что же остается бедному пользователю? Скорее всего, сделать неправильный выбор.
Шаг 5: Пользователи должны легко различать наиболее вероятный вариант ответа. Слишком часто создатели программ предлагают нам неясные вопросы с двумя одинаково выглядящими вариантами ответа, хотя одно из решений является неверным для большинства.
Вместо такого вопроса:
|
Предложите следующий вариант:
|
Здесь не только вопрос, но и ожидаемый ответ сразу видны.
Не задавайте также пользователю вопрос о какой-нибудь настройке, смысл которой неясен. Чтобы ответить на этот вопрос и решить, нужна ему эта настройка или нет, пользователю придется узнать все о ней. Спрячьте такую настройку в раздел “advanced”.
Выполняя все асинхронные операции в фоновом режиме, можно отделить задачи пользователя от задач компьютера, позволяя пользователю работать без перерывов.
Сетевая печать была асинхронной операцией более 15 лет. Пользователи нажимали кнопку “Печать” и шли заниматься своими делами, пока шел процесс. Над проблемой печати стали работать в первую очередь, потому что
Печать отнимает много времени
Печать не требует вмешательства пользователя
Общее время выполнения задачи предсказать нельзя
Следующее задача пользователя обычно не связана с результатами печати
Если принтер подключен к высокоскоростной сети и в очереди печати нет заданий, все происходит довольно быстро. Однако, если кто-то только что начал печатать 300-страничный документ, то компьютер может оказаться “замороженным“ на длительный период времени.
Та же самая ситуация сложилась сейчас с Интернетом. Загрузка страниц занимает длительное время, не требуя вмешательства пользователя в этот процесс, и предугадать, будет ли она длиться 5 секунд или минуту, невозможно.
Всякая операция, которая подходит под вышеописанные критерии и может быть выделена в отдельную задачу, должна быть выделена. Если нужно передать длинную форму после того, как пользователь нажмет Submit, это нужно сделать в фоновом режиме, пока пользователь переходит к следующей форме.
Все вышеописанные подходы касаются измеряемого времени, которое требуется пользователю для выполнения задачи. Однако пользователи часто жалуются, что им “кажется”, что процесс происходит медленнее, чем есть на самом деле.
Классический пример произошел в Нью-Йорке в 1930 году, когда пользователи нового офисного здания постоянно жаловались на долгое время ожидания лифтов. Когда пригласили инженеров для консультации, выяснилось, что нет никакой возможности ни ускорить лифты, ни увеличить их число или вместимость. Тогда пригласили дизайнера, который смог решить проблему.
Дизайнер понял, что настоящая проблема была не в том, что время ожидания лифтов было слишком большим, а в том, что оно воспринималось таковым. Дизайнер решил проблему восприятия размещением зеркал на стенах площадок для ожидания лифта. Теперь люди были заняты рассматриванием себя и других в множестве отражений. Их мозг был полностью занят и время летело.
В одном из исследований этого феномена пользователей попросили выполнить одно и то же задание с помощью клавиатуры и мыши. Работа с клавиатурой была напряженной и требовала принятия множество мелких решений. Версия для мыши была гораздо легче и принятия решений не требовала.
Все пользователи выполнили задание с помощью мыши примерно на 50% быстрее. Но что интересно, все высказались, что они выполнили задание гораздо быстрее с помощью клавиатуры.
Таким образом, нужно всегда принимать во внимание субъективные убеждения пользователей о том, насколько быстрым или медленным является процесс. Не принимайте решение на основе только своего собственного мнения. Тестируйте программу на пользователях.
Основная стратегия уменьшения субъективного времени восприятия:
Когда в процессе работы возникает неизбежная пауза, например, потому что программа должна обратиться к серверу, убедитесь, что пользователь занят и развлечен. Идеальное занятие – это занятие, имеющее отношение к текущей задаче. Перед тем, как обращаться к серверу, дайте пользователю прочесть что-нибудь, что подготовит его для следующей задачи.
Все приводимые указания зависят от использования индикаторов. Следующие типы индикаторов приведены в порядке от наиболее до наименее желаемого:
Индикатор оставшегося времени. Поместите его либо в модальный диалог, либо в строку статуса.
Индикатор “Система жива”. Когда оставшееся время предугадать невозможно, покажите анимированный объект, который даст пользователям понять, что система не зависла.
Индикатор “Слышу и понимаю”. Когда ожидаемая задержка менее 2 секунд, показывать оставшееся время бессмысленно, поэтому просто измените форму курсора на “песочные часы”.
Подтвердите щелчок мыши или нажатие клавиши в течение 0,1 секунды.
Измените форму курсора на “песочные часы” или другой анимированный указатель для любой задержки более 0,5 секунды.
Покажите, когда пользователь может продолжать.
Подтвердите щелчок мыши или нажатие клавиши в течение 0,1 секунды.
Привлеките внимание пользователя
Укажите время ожидания точно или приблизительно.
Выведите индикатор
Покажите, когда пользователь может продолжать.
Подтвердите щелчок мыши или нажатие клавиши в течение 0,1 секунды.
Привлеките внимание пользователя. Индикатор, который трудно заметить, может и не существовать.
Сообщите пользователю, насколько долгим будет ожидание. Если не знаете – предположите диапазон значений. Даже довольно широкого диапазона (от 3 до 15 минут) пользователю может быть достаточно для принятия решения – переключиться на другую задачу, или же пойти попить кофе.
Выведите индикатор.
Четко и ясно сообщите пользователю, когда он может продолжать. Это не значит, что вы должны вывести сообщение шрифтом 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-проблем еще до того, как приступите к кодированию. Тестируя готовую программу до ее официального выпуска вы можете найти и подчистить небольшие проблемы, которые могут стать причиной раздражения пользователя.
Запомните - все системы тестируются на пользователях. Вопрос только в том, хотите ли вы, чтобы это случилось когда вы еще можете исправить найденные проблемы. Думайте о тестировании как о способе получить новую информацию. Наблюдение пользователей в процессе тестирования вашей программы это самый лучший и самый дешевый способ образования.
33